PDA

Просмотр полной версии : ВТЭ-1 К1 текущее состояние



denprox
26.08.2020, 11:02
Доброго времени суток! Подскажите пожалуйста, в чем может быть проблема: долгое время, сервер собирал с прибора верные данные. В очередной раз, после приобретения свежего выпуска SCADA и Modbus server , некоторые данные стали отображаться некорректно. А именно - получаемое значение умножается на 100. Допустим должны считать температуру 22,05 гр., а в сервер получаем 2205 (целое число).

Скрипт для считывания :



-- запрос текущего состояния командой 01h --
local send2={}; --массив под запрос текущих параметров
local chsm, qu; --error ещ тут был
table.insert(send2, 6); --длина блока 6 байт
table.insert(send2, 225); --тип устройства
table.insert(send2, 98);-- мл.байт серийного номера (для экземпляра #19077)
table.insert(send2, 128);-- ст.байт серийного номера (для экземпляра #19077)
table.insert(send2, 1); --код команды
table.insert(send2, CheckSum(send2)); --Контрольная сумма блока запроса
local sendmask2={"byte", "byte", "byte", "byte", "byte", "byte"}; --маска отсылаемого запроса
local destmask2={"byte", "byte", "int16:1:01", "byte", "float:1:0123", "int16:3:01",
"float:5:0123", "byte:6"}; --маска для текущего состояния

local dest2={};
err,dest2,len=server.SendAndReceiveDataByMask(0,6, sendmask2,send2,destmask2,41);


Скрипт писал бывший сотрудник, несколько лет назад.
Подскажите, как правильно считать текущее состояние с ВТЭ-1 К2 ?

denprox
26.08.2020, 11:21
Возможно ли в SCADA текущее значение при выводе разделить на 100, чтобы получить желаемый результат ?

SCADAMaster
26.08.2020, 11:23
Прибор тот же самый?
Где именно в маске получаемое значение?
Так трудно сказать, смотрите какие байты приходят из устройства и расшифруйте их.
Мы про этот прибор впервые слышим и к этому скрипту отношения не имеем.

SCADAMaster
26.08.2020, 11:38
Возможно ли в SCADA текущее значение при выводе разделить на 100, чтобы получить желаемый результат ?
Можно конечно.
Можно и в ОРС это сделать - в том же скрипте

denprox
27.08.2020, 09:10
Извиняюсь за беспокойство, мы решили проблему: в скрипте разделили полученное от прибора значение. Теперь всё отображается как нужно.