PDA

Просмотр полной версии : modbus RTU, real, swap (перестановка слов)



vitiali
14.07.2011, 11:03
ПЛК-100(подчиненный) и панель оператора. Протокол modbus RTU
как переставлять слова местами (swap) при работе с real на ПЛК-100. Может гдето галочку поставить?

swerder
14.07.2011, 11:20
ror на 16 символов

Николаев Андрей
14.07.2011, 12:08
В разделе ПЛК\примеры программ и полезности есть пример, как обойтись работой с INT.

vitiali
14.07.2011, 13:31
Если там умножить на 10 и передавать или принимать INT то не подходит.
в панель пересылаю состояния счетчиков по этому больше подходит DWORD. А в DWORD тоже надо переставить слова местами.

Николаев Андрей
14.07.2011, 14:09
В Dword проще.
b:=dword_to_word (a);
c:=a/65535;

Дальше собираем.
А еще на форуме в примерах был такой пример с алгоритмом пересчета.

vitiali
14.07.2011, 14:32
modbus RTU должен получть Dword. При настройке в конфигураторе 4байта без перестановки слов он получает только младшее слово, а старшее исчезает. При настройке 2 байта в первый записуется старшее слово а во второй младшее.

И по большому счету не охота около 120 переменных Real переганять через ф-ию которая разделит их на два байта. это получится около 220 переменных которым надо дать имена. А проще решалось бы если бы разработчики и панели и ПЛК учли эту особенность передачи Real и Dword в алгоритмах передачи и приема.

vitiali
15.07.2011, 19:37
Byte Sequence (Порядок передачи байтов посылки) – значения выбираются из списка: «Native» (порядок байтов, используемый в ПЛК) и «Trace_mode» (порядок байтов, используемый в программе Trace mode). Значение по умолчанию – «Trace_mode». Параметр определяет, в каком порядке будут передаваться байты посылки протокола Modbus для переменных длиной
32 бита.

Жаль, что это предусмотрено только когда ПЛК master. В режиме slave эту функцию забыли положить или хотя бы в slave по умолчанию сделали «Native».

vitiali
15.07.2011, 21:38
В один масив или структуру можно загнать когда переменные обладают одним признаком или отвечают за групу однотипных объектов. А когда одна отвечает за счетчик, вторая за температуру, третья за давление, четвертая держит коэфициент соотношений, пятая время, шестая.... и тд. А в HMI я не должен знать, что опрашиваю? Привык иметь одинаковые имена и в панели и в ПЛК.

vitiali
18.07.2011, 14:10
Извините, что повторяюсь но хочется ответ от разработчика есть или нет, если будет то когда.

Byte Sequence (Порядок передачи байтов посылки) – значения выбираются из списка: «Native» (порядок байтов, используемый в ПЛК) и «Trace_mode» (порядок байтов, используемый в программе Trace mode). Значение по умолчанию – «Trace_mode». Параметр определяет, в каком порядке будут передаваться байты посылки протокола Modbus для переменных длиной
32 бита.

Жаль, что это предусмотрено только когда ПЛК master. В режиме slave эту функцию забыли положить или я не там ищу?

Николаев Андрей
18.07.2011, 16:52
В режиме Slave этой функции нет, и в контроллерах с CoDeSys v.2 пока не планируем.