Модбас - мастер. он сам считает
Вид для печати
Модбас - мастер. он сам считает
[Модбас - мастер. он сам считает]
То есть в конфигурации нужно выбрать Modbus(Master) - Universal modbus devise , и с помощью выходных регистров задать переменные, которые нужно передать, а с помощью входных - переменные, которые нужно принять, а Modbus(Master) - Universal modbus devise автоматически будет создавать CRC16 , такую как нужно для выходной посылки и соответственно анализировать принятую CRC16?
vojt, да, именно так.
________________________
зы откройте, пожалуста,
"Конфигурирование
области ввода/вывода ПЛК1хх
Руководство пользователя " с диска.
там все описано.
В том и дело, что в "Конфигурирование области ввода/вывода ПЛК1хх
Руководство пользователя " ничего не сказано о CRC для Modbus(Master).
vojt, да она вам и не нужна! что вы в нее уперлись. модуль сам сформирует посылку, сам подсчитает, сам проверит ответ. все. вы настроили модуль и работаете с регистрами и незабиваете себе голову подробностями, че он там делает и зачем.
зы посмотрите примеры - подключение панели 320 по модбас в полезностях
Jeck, да, может быть, я действительно слишком ухожу в детали. Сейчас просто нет железа под рукой. Позже попытаюсь практически это осуществить и возможно возникнут еще вопросы.Тем не мене спасибо за совет!
а какой стандартный модуль можно применить?
Модулем является среда программирования. Настройка протокола обмена заключается в конкурировании области PLC_Configuration.
Вам поможет раздел Форум-ПЛК-Примеры программ и полезности.
А если интересно как вообще работает протокол модбас, можно зайти в примеры и посмотреть готовый пример:
http://www.owen.ru/forum/showpost.ph...3&postcount=63
вот кому интересно функция на паскале подсчета CRC16 для ModBus:
function CRC16(Msg: string) :Word;
var
i, j :Integer;
begin
Result := $FFFF;
for i := 1 to Length(Msg)
do
begin
Result := Ord(Msg[i]) xor Result;
for j := 1 to 8
do
begin
if (Result and 1) = 1
then
Result := (Result shr 1) xor $A001
else
Result := Result shr 1;
end;
end;
end;
пример формирования посылки для запроса состояний дискретных входов на ModBus RTU для прибора с адресом 16:
Msg := #$10#$03#$00#$33#$00#$01;
Msg := Msg + Chr(Lo(CRC16(Msg))) + Chr(Hi(CRC16(Msg)));
отправляем посылку в порт и получаем ответ.