PDA

Просмотр полной версии : universal modbus divece и int16



lelik76
12.09.2016, 16:46
Здравствуйте! Нужна помощь! У меня ПЛК110 и CPU9440 с модулями AI, связанными по RS485 modbus. Необходимо прочитать переменные из устройства по modbus типа int16. В конфигураторе ПЛК - universal modbus divece варианты только word ( registr input modul) - 16 bit или real (real input modul) - 32 bit. Если читать word и потом преобразовать в int , то как быть с отрицательными значениями температуры? Извините, если на форуме плохо искал, у меня от немецких Даташитов голова распухла...

_Mikhail
12.09.2016, 16:48
используй registr input modul. возможно ничего преобразовывать не придется
http://www.owen.ru/forum/showthread.php?t=25043&p=218520&viewfull=1#post218520

lelik76
12.09.2016, 16:53
Спасибо, на железе завтра испробую. Просто мне немец написал, что температура, например -17 ºС передается как -170 в формате int16, вот я и завис... так как registr input modul тип данных word, а это от 0 до 65535, тогда как int16 от -32768 до 32767.

Вольд
12.09.2016, 17:33
Читай как word, а потом преобразуй в int и все будет нормально.

smk1635
12.09.2016, 17:35
В программе не забудете преобразовать word в int.

P.S. Вольд уже опередил. )

lelik76
12.09.2016, 17:40
Спасибо! Уже прописал всё, остался вердикт железяки:)!

P.S. Завтра после опытов отпишусь.

smk1635
12.09.2016, 19:04
-17 ºС передается как -170 в формате int16

Кстати, в таком формате обычно передают данные если в значении есть десятые. Есть смысл, перед тем как делить полученное значение на 10, ещё раз преобразовать int но уже в real.

petera
13.09.2016, 04:36
Читай как word, а потом преобразуй в int и все будет нормально.


В программе не забудете преобразовать word в int.

P.S. Вольд уже опередил. )

Ничего в программе преобразовывать не надо, и так все правильно работать будет
Из-за неявного преобразования типов, результаты арифметических операций и операции присваивания, с использованием WORD в правой части выражений вместо INT, получаются правильными без дополнительных телодвижений
http://www.owen.ru/forum/showthread.php?t=8604&page=87&p=182771&viewfull=1#post182771

http://www.owen.ru/forum/showthread.php?t=25043&p=218520&viewfull=1#post218520

lelik76
13.09.2016, 20:30
Большое спасибо!! Разобрался, но в программе оставил преобразование, главное работает! Программа лёгкая, пусть крутится:)