Доброго времени суток! Подскажите пожалуйста, в чем может быть проблема? В ОРС сервере добавил устройство и два тега к нему:
ТРМ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
Тег2 (dp):Код: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
адрес 514 (0х0202)
тип данных в устройстве int16
... в сервере int32
ReadOnly
Перестановка 10325476
Считывается все корректно, но при попытке записать в уставку новое значение, статус меняется на BAD (Ошибка в процедуре записи, недопустимая величина в поле данных запроса)





Ответить с цитированием