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

ТРМ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 (Ошибка в процедуре записи, недопустимая величина в поле данных запроса)