aleksandr.chyzh@gmail.com
6.3.2017, 22:56
Здравствуйте!Прошу помощи у программистов контроллеров Carel. Мне нужно по протоколу modbus RTU прочитать значение со счетчика тепла, которое на данный момент равно 45 000. Но в 1tool диапазон типа int 0 ... 32767 все что выше он переводит в число со знаком -. Возможно ли прочитать число больше 32767 и как это правильно сделать? Заранее спасибо.
Перейдите с типа данных INTEGER (-32768...+32767) на UNSIGNED INTEGER (0...65535). С карелами не работал.
А что вы будете делать, когда число перевалит за 65535 ?
aleksandr.chyzh@gmail.com
7.3.2017, 8:56
В Carel нет такого типа там только два int (-32767...32767), (0 ... 32767).
Тип long есть?
Можно попробовать считать данные в int (который -32767...32767), разбить на биты и из них собрать в long.
Ну и да, проблема 65535 остается актуальной.
С 1tool не работал, его возможностей не знаю.
aleksandr.chyzh@gmail.com
7.3.2017, 11:49
Нет там Long. (
Но есть возможность вызова функций, написанных на ST, там поддерживается INT_to_UINT. Со скуки набросал монстра в FBD для наглядности, для сравнения в ST то же самое занимает три строки, не считая объявления переменных.
Нажмите для просмотра прикрепленного файла
А если нужно значение просто на дисплее посмотреть, достаточно через атом Move_IX передать его в другую переменную INT, только с форматом без знака, типа IIIII, а ее уже на дисплей вынести.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.