1
Ошибки / Re: Ошибка отображения переменных с OPC UA сервера
« : 16 Октября 2020, 11:49:13 »
Извиняюсь, опечатался, адрес после импорта выглядит так, как вы указали: ns=3; s=EquipSetParam(E=4;SP=2)
Официальный форум Simple-Scada.
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
begin
if InterfaceModule_disconnect_flag.Value = TRUE then
begin
InterfaceModule_disconnect_flag.Value := FALSE;
InterfaceModuleTimerCheckState.Value := 0;
if vrMsgDisconnect.Value = TRUE then
begin
AddMessage(Now, mkMessage, 'Установлена связь с ПЛК', true, false);
vrMsgDisconnect.Value:= False;
end;
end
else
begin
InterfaceModuleTimerCheckState.inc(1); //Накопление 10-ти секунд
if InterfaceModuleTimerCheckState.Value >= 10 then
begin
if vrMsgDisconnect.Value = False then
begin
AddMessage(Now, mkAlarm, 'Связь с ПЛК утеряна', true, true);
vrMsgDisconnect.Value := TRUE;
end;
end;
end;
end.
SPC_VNS19 - внутренний тег. Хранит в себе разницу. Тип IntegerИзмените тип данных на Single, должно помочь, судя по всему.
SpecificPowerConsumption_VNS19_Result - внутренний тег. Хранит в себе значение удельной потребляемой мощности. Тип Integer
var
i, j, maxi, maxj: integer;
cell: TM_TableCell;
begin
maxi:= Table1.ColumnsCount - 1;
maxj:= Table1.Columns[0].CellsCount - 1;
for i:= 0 to maxi do
begin
for j:= 0 to maxj do
begin
cell:= Table1.GetCell(i, j);
cell.Color:= RandomColor;
end;
end;
end.
Беда в том, что переменная таймера не архивируется нормально, и принимает значение, не соответствующее миллисекундам, например.Переменная таймера архивируется нормально, просто формат у неё - TDateTime.
В примере ниже - график переменной таймера из демо проекта, добавлена только архивация по изменению
// допустим переменная для миллисекунд называется MSec
MSec.Value:= MilliSecondsBetween(Variable.Value, 0);
var
aDate: TDateTime;
begin
aDate := RecodeTime(Now, 0, 0, 0, 0);
ArchiveValueByTime(MyVariable, vrEnd, aDate);
aDate := IncDay(aDate, -1);
ArchiveValueByTime(MyVariable, vrStart, aDate);
end
var
button: TM_Button;
begin
// цветовая индикация действующего режима кнопок
button:= Sender as TM_Button;
if button.States[0].Value = button.Variable.Value then
button.States[0].Color:= clLimeGreen // цвет активной кнопки
else
button.States[0].Color:= clGray; // цвет неактивной кнопки
end.