PDA

Просмотр полной версии : СПК 310 Modbus/ нужна помощь



confiden
19.01.2024, 11:50
Добрый день. Очень нужна помощь, сам не могу осилить.

Панель Овен СП310 с Ethernet и датчик ПВТ100.
в проекте панели формирую цифровой дисплей (адрес modbus 16, регистр 258, тип данных Dec)- замечательно все работает. отрицательные и положительные значения температур

так же в панели запущен макрос :

WORD t1=0; //PVT-100
Read(PLC, 16, MODBUS_RTU_REG_4X, 258, 0, TYPE_WORD, &t1); //read 0x102
PSW[350]=t1;

и вот тут у меня возникает проблема.
правильные значения в регистре PSW[350] только при положительном значение температуры.


подскажите как мне реализовать это.

petera
19.01.2024, 12:27
Добрый день. Очень нужна помощь, сам не могу осилить.

Панель Овен СП310 с Ethernet и датчик ПВТ100.
в проекте панели формирую цифровой дисплей (адрес modbus 16, регистр 258, тип данных Dec)- замечательно все работает. отрицательные и положительные значения температур

так же в панели запущен макрос :

WORD t1=0; //PVT-100
Read(PLC, 16, MODBUS_RTU_REG_4X, 258, 0, TYPE_WORD, &t1); //read 0x102
PSW[350]=t1;

и вот тут у меня возникает проблема.
правильные значения в регистре PSW[350] только при положительном значение температуры.


подскажите как мне реализовать это.

Вы в существующем дисплее поменяйте тип данных с Dec на Unsigned и увидите такие же значения как и в PSW350 из макроса.
Тогда почему Вы говорите, что в макросе получаете неправильные значения температуры?

confiden
19.01.2024, 13:00
все дело в том что тогда проблема начинается далее . С данной панели информация забирается на OPC Server . и это не решает мою проблему.
удалось решить только вот так :

short t1=0; //PVT-100
Read(PLC, 16, MODBUS_RTU_REG_4X, 258, 0, TYPE_WORD, &(short)(t1)); //read 0x102
PSW[350]=t1;

только так удалось найти решение.

kondor3000
19.01.2024, 13:08
все дело в том что тогда проблема начинается далее . С данной панели информация забирается на OPC Server . и это не решает мою проблему.
удалось решить только вот так :

short t1=0; //PVT-100
Read(PLC, 16, MODBUS_RTU_REG_4X, 258, 0, TYPE_WORD, &(short)(t1)); //read 0x102
PSW[350]=t1;

только так удалось найти решение.

Достаточно в макросе или в ОРС сервере изменить тип данных на INT вместо WORD и всё.

confiden
19.01.2024, 14:02
Достаточно в макросе или в ОРС сервере изменить тип данных на INT вместо WORD и всё.

В MasterOPC стояло и стоит - тип данных на устройстве INT16

In_Da_Cher_A
19.01.2024, 14:06
С данной панели информация забирается на OPC Serverпанель Слейв по ТСР?

Овен СП310 с Ethernet и датчик ПВТ100
Мастер по RS ?

kondor3000
19.01.2024, 14:33
В MasterOPC стояло и стоит - тип данных на устройстве INT16

А если внимательно посмотреть, у вас скорее всего стоит UINT16, вот 0 регистр как UINT16 и INT16 73021