Страница 192 из 250

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 23 май 2022, 10:09
Microl
Подскажите пожалуйста как корректно отображать значение на панели MT8090XE. Считываю с устройства параметр (объем м куб).
Информация по протоколу с мануала устройства (тепловычислитель ВКТ-9):
Изображение
Адрес параметра:
Изображение
На экране устройства отображается: 000000160.204
Значение на сканере:
Изображение
Считываю на панели, целая часть: 3x_Double 155, формат чисел 32-bit Unsigned
дробная часть: 3x_Double 157, формат чисел 32-bit Float
Отображается: 10485760 дробная часть -0

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 24 май 2022, 17:14
Microl
Microl писал(а):Подскажите пожалуйста как корректно отображать значение на панели MT8090XE. Считываю с устройства параметр (объем м куб).
Информация по протоколу с мануала устройства (тепловычислитель ВКТ-9):
Изображение
Адрес параметра:
Изображение
На экране устройства отображается: 000000160.204
Значение на сканере:
Изображение
Считываю на панели, целая часть: 3x_Double 155, формат чисел 32-bit Unsigned
дробная часть: 3x_Double 157, формат чисел 32-bit Float
Отображается: 10485760 дробная часть -0


Разобрался, вопрос снят.

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 24 май 2022, 17:48
8bit
Microl писал(а):
Разобрался, вопрос снят.


поделитесь с окружающими как все-таки с этим ВКТ-9 общаться ?

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 31 май 2022, 18:03
ArtemPM
8bit писал(а):поделитесь с окружающими как все-таки с этим ВКТ-9 общаться ?

Тут без скрипта не обойдешься:
Первое число формата 32 bit unsigned берется по адресу 30155 и равняется 160
Второе число 32 bit float берется по адресу 30157 и получается 0,204. Там просто не 3x_double нужно брать, достаточно 4x, в крайнем случае 5х. Нужно посмотреть кто как вертит слова в запросе.
Дальше эти два числа нужно сложить и сумму записать либо во float 64, если позволяет панель, либо во float 32 рискуя не уложиться в размерности при огромной целой части, но это вряд ли. Ни когда еще не видел счетчиков, где для показаний нужно 32 bit unsigned.
4 294 967 295 м³ - представляете такой объем.

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 01 июн 2022, 15:08
pinguin007
Можно ли сделать отрицательную гистограмму ?

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 01 июн 2022, 15:22
8bit
pinguin007 писал(а):Можно ли сделать отрицательную гистограмму ?

что это ?

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 01 июн 2022, 15:49
pinguin007
8bit писал(а):
pinguin007 писал(а):Можно ли сделать отрицательную гистограмму ?

что это ?

Bar graph от 0 до -2

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 01 июн 2022, 17:19
pkl58
Можно. Выберите тип данных Signed.

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 08 июн 2022, 13:26
rv9can
Добрый день, может кто подсказать, второй день мучаюсь, почему при опросе оборудования с помощью Free protocol если данные в ответе меньше чем 256, то на экране выводится число 655**, а если больше то все нормально, если меняю тип цифрового окна на hex, вижу что если число меньше 256 то HI_bit данный почему то становится 0xFF, а если число больше 256, например 275 0х0113.
Прикладываю код:
Код: Выделить всё
sub short read_device(short address_in, short func_code, short address_station, short data = 0)                  // Подфункция для опроса
   FILL(command[0], 0, 32)
   FILL(response[0], 0, 32)
   short read_data[2]  = {0}   
   command[0] = address_station
   command[1] = func_code
   address = address_in
   HIBYTE(0x00, command[2])
   LOBYTE(address, command[3])
   read_no = 1
   HIBYTE(0x00, command[4])
   LOBYTE(read_no, command[5])
   CRC(command[0], checksum, 6)
   LOBYTE(checksum, command[6])
   HIBYTE(checksum, command[7])
   OUTPORT(command[0], "Modbus RTU device", 8)
   INPORT(response[0], "Modbus RTU device", 9, return_value)
   if(return_value > 0) then
      read_data[0] = response[4] + (response[3] << 8)
      read_data[1] = response[6] + (response[5] << 8)
   end if
   SetDataEx(read_data[0], "Local HMI", RW, 20, 2)
   return data, read_data[0], read_data[1]
end sub

Re: EasyBuilder - Скорая помощь новичкам

СообщениеДобавлено: 08 июн 2022, 16:13
rv9can
rv9can писал(а):Добрый день, может кто подсказать, второй день мучаюсь, почему при опросе оборудования с помощью Free protocol если данные в ответе меньше чем 256, то на экране выводится число 655**, а если больше то все нормально, если меняю тип цифрового окна на hex, вижу что если число меньше 256 то HI_bit данный почему то становится 0xFF, а если число больше 256, например 275 0х0113.
Прикладываю код:
Код: Выделить всё
sub short read_device(short address_in, short func_code, short address_station, short data = 0)                  // Подфункция для опроса
   FILL(command[0], 0, 32)
   FILL(response[0], 0, 32)
   short read_data[2]  = {0}   
   command[0] = address_station
   command[1] = func_code
   address = address_in
   HIBYTE(0x00, command[2])
   LOBYTE(address, command[3])
   read_no = 1
   HIBYTE(0x00, command[4])
   LOBYTE(read_no, command[5])
   CRC(command[0], checksum, 6)
   LOBYTE(checksum, command[6])
   HIBYTE(checksum, command[7])
   OUTPORT(command[0], "Modbus RTU device", 8)
   INPORT(response[0], "Modbus RTU device", 9, return_value)
   if(return_value > 0) then
      read_data[0] = response[4] + (response[3] << 8)
      read_data[1] = response[6] + (response[5] << 8)
   end if
   SetDataEx(read_data[0], "Local HMI", RW, 20, 2)
   return data, read_data[0], read_data[1]
end sub

Вопрос закрыт