Ваши комментарии

Большое спасибо! о формуле я даже и не подумал :woohoo:
Всё оперативно устранено, большое спасибо! Отличная тех. поддержка!
При следующем сбое попробую получить больше сведений
Спасибо
это получается что виснут сразу 4 сервера разных производителей одновременно, возможно ли что проблема в Com портах, в плате расширения ?
перезапуск монитора, вся работа восстанавливается
Похожая ситуация, монитор перестает выводить все без исключения данные (если это значения температур, давления - заштрихованы сеткой, если это boolean то все значения true (1)), такая ситуация происходит с периодичностью раз в ~две недели.

OPC сервера:
Овен (RS485 и токовая петля 232)
Меркурий (счетчики электроэнергии RS485)
Carel (холодильные установки HITEMA RS485)
Endress+Hauser (Мемограф Ethernet)

Какая приблизительно может быть причина такого сбоя?
На первом снимке изображены Клиент и сам сервер, пришлось изощрится для получения списка тегов путем сначала запустил сервер, после того как он установил связь с устройством запустил клиент и подключил его к серверу

На втором снимке редактор каналов с выбранным OPC сервером MAHLO, при загрузке как я уже писал, сервер не успевает подключится к устройству и прочитать список тегов по этому в редакторе он пуст

проблема в том что редактор каналов не может подключится к уже запущенному OPC серверу




1.JPG
2.JPG
Описание того что нужно:
У нас 4-е линии производства обоев, на каждой линии установлен Счетчик импульсов СИ8, который считает метраж используемой бумаги, персонал линий (печатники ) работают сменно с 9-00 по 21-00 и с 21-00 по 9-00, нужно вывести значения одно с 9-00 по 21-00 сколько истратилось бумаги, второе - 21-00 по 9-00 сколько истратилось бумаги. Представляю себе это так - запоминаем значение тега "показания счетчика" в 9-00 текущего времени далее запоминаем значение в 21-00, производим вычитание , получившийся результат записываем в вирт. канал (записанное значение хранится(остается неизменным ) до 21-00 следующего дня). Тоже самое с 21-00 по 9-00 только вычитание и запись (в другой вирт. канал) производится в 9-00 текущего времени.

Ответ:
Можно попытаться решить минуя архив, а сохраняя промежуточное значение в глобальной переменной….

Пример:

var
Hour, Min, Sec, Milli, Res : Word;
value, value1: double;
begin

DecodeTime(Now, Hour, Min, Sec, Milli);

// самое простое что можно сделать
Res := Hour + (Min * 100);

case res of
9: begin
value := ReadValue('Канал счетчика');
SetGlobalVar('VAL9', value, true);
end;
21: begin
value := ReadValue('Канал счетчика');
value1 := GetGlobalVar('VAL9');
WriteValue('Канал для показаний', value - value1);
end;
end;
end.



Большое спасибо!


Сервис поддержки клиентов работает на платформе UserEcho