PDA

Просмотр полной версии : ТРМ210 не работает запись (уставка)



denprox
27.06.2019, 11:04
Доброго времени суток! Подскажите пожалуйста, в чем может быть проблема? В ОРС сервере добавил устройство и два тега к нему:

ТРМ210:
Адрес 10 (0х0А)
Время ответа 1000
Период опроса 2000

Тег1 (уставка):
адрес 2 (0х0002)
ReadWrite
Тип данных в устройстве int16
в сервере float
перестановка байтов в значении 10325476

Скрипт чтения:


function OnRead()
local ust, q, dp_val, dp_q;
ust, q=server.ReadTagByRelativeName("уставка");
dp_val, dp_q=server.ReadTagByRelativeName("dp");
if dp_q==OPC_QUALITY_GOOD and dp_val>=0 and dp_val<=3 then
ust=ust/10^dp_val;
server.WriteCurrentTag(ust, q);
end;
end


Скрипт записи:


function OnWrite()
local ust, ust2, q, dp_val, dp_q;

ust, q=server.ReadCurrentTag();
ust2=ust;
dp_val, dp_q=server.ReadTagByRelativeName("dp");
if dp_q==OPC_QUALITY_GOOD and dp_val>=0 and dp_val<=3 then
ust=ust*10^dp_val;
server.WriteCurrentTagToDevice(ust, q); --новое значение занесем в устройство
server.WriteCurrentTag(ust2, q); --не изменённое еще значение занесем в тег на opc-сервере
end;
end


Тег2 (dp):
адрес 514 (0х0202)
тип данных в устройстве int16
... в сервере int32
ReadOnly
Перестановка 10325476

Считывается все корректно, но при попытке записать в уставку новое значение, статус меняется на BAD (Ошибка в процедуре записи, недопустимая величина в поле данных запроса)

SCADAMaster
27.06.2019, 11:20
У вас параметр dP меняется на ходу?
Если нет, то зачем тогда скрипты? Включите просто функцию Пересчет и задайте коэффициент А.

denprox
27.06.2019, 12:59
У вас параметр dP меняется на ходу?
Если нет, то зачем тогда скрипты? Включите просто функцию Пересчет и задайте коэффициент А.

Спасибо!! На самом деле dp не меняется, сделал как вы сказали и всё заработало!
Но интересно то, что раньше всё работало и с этими скриптами...