Стартовая страница › Форумы › Понять, как работает ПО › Быстрый Шлюз (инициатор соединения)
- В этой теме 19 ответов, 3 участника, последнее обновление 3 месяца, 4 недели назад сделано
Mikhail.
-
АвторСообщения
-
20.01.2022 в 10:01 #21474
Mikhail
МодераторДобрый день!
Этот параметр задействован только когда значения передаются периодически по таймеру. Если «при получении», то значения сразу добавляются в очередь на передачу.20.01.2022 в 18:05 #21479vg
УчастникСпасибо!
У меня возникла проблема при тестировании проекта.
Изначально было 2 стационарных проекта, которые работали нормально.
Один из них, назовём его «проект 1», опрашивал базу данных и отображал данные с некоторой логикой. Второй , «проект 2», опрашивал устройство по Modbus TCP и также отображал данные и поддерживал некоторую логику. Затем эти проекты захотели объединить под одной крышей. Проект 1 остался без изменений и работает корректно, а для проекта 2 понадобилось немного изменить принцип получения данных с устройства. Как раз для этого и начинал эту тему. В общем с промежуточной машины через Быстрый шлюз данные, полученные с устройства, передаются на главный сервер (на котором размещён объединённый проект). Данные передаются, но дело в том, что журнал событий начал засоряться сообщениями с некоторой периодичностью. А точнее повторением событий по одним и тем же входным каналам. Вчера этот период был 10 секунд, сегодня 1 минута. Причина мне пока неизвестна. А хочется знать 🙂События в журнал попадают из входных каналов, у которых стоит галочка «Соб. по изм.». В этих каналах отрабатывает логика, при которой значение канала или статус меняются только если новый статус отличается от предыдущего статуса (статус вычисляется сравнением с порогами). То есть был статус НОРМА, а стал ПРЕДУПРЕЖДЕНИЕ, появилось сообщение в журнале событий.
public double GetSpeedValue(int status, double value, PreviousStatus prevStatus)
{
if (status != prevStatus.PrevSpeedStat)
{
prevStatus.PrevSpeedStat = status;
prevStatus.PrevSpeedValue = value;
return value;
}
else
{
return prevStatus.PrevSpeedValue;
}
}И в стационарной системе повторное сообщение в журнале событий появляется только при отключении от устройства и новом подключении к нему.
Ошибка «Некорректные данные MBAP Header!».
При этом отключение и новое подключение происходили в одну секунду. И происходило это очень редко, ни о какой периодичности речи не идёт.
И в этом случае появление новых сообщений я могу понять, также как и при перезагрузке службы сервера или передачи конфигурации. Параметры были неопределены, стали определены и вот сообщение в журнале событий, так как изменился статус.
Но на данный момент картина вот такая:
https://pastenow.ru/0f5ac10938c6f8d87d6db14a9fb62912Значения те же, статусы те же. Изменения в журнале между этими «пакетами» событий не зафиксированы. Собственно у меня идеи только в направлении микро приостановок сервера или коммуникатора (логи опроса устройства на промежуточной машине и логи модуля Быстрый шлюз не отображают никаких ошибок, поэтому считаю, что на той стороне всё чисто).
Даже если допустить, что какие то изменения происходят в значении каналов, то периодичность в 1 минуту и 1 секунду наводят на мысль, что это маловероятно.
А как узнать информацию о возможных прерываниях при получении данных по Быстрому шлюзу (если допустить, что отправка проходит корректно, то может быть проблема с приёмом) не представляю.
Главный сервер работает на Windows Server 2019.
Промежуточный сервер работает на компьютере Q7 с Linux.21.01.2022 в 15:55 #21483Mikhail
МодераторНа промежуточном сервере установлен Быстрый шлюз, который передаёт данные на главный сервер, верно?
Избыточные события появляются на каком из серверов?
Может ли быть так, что события появляются на промежуточном сервере и эти события передаются шлюзом на главный сервер, а главный сервер при этом генерирует ещё и свои события?22.01.2022 в 14:02 #21487vg
УчастникДа, Быстрый шлюз установлен на промежуточном сервере и передаёт данные на главный сервер.
Избыточные события появляются на главном сервере. Промежуточный не имеет интерфейса и среди входных каналов только телеизмерение без формул.
В моём понимании промежуточный сервер не способен генерировать события, а главный в описанных ситуациях и в примере со скриншотом не должен их добавлять снова и снова (только единожды при появлении впервые).
24.01.2022 в 14:26 #21492Mikhail
МодераторПроверьте на промежуточном сервере, существуют ли файлы событий в директории C:\SCADA\ArchiveDAT\Events ? Если существуют, то нужно посмотреть, какие в них события.
Кроме того, отключите передачу событий в настройках шлюза. Тогда они точно не смогут попасть с промежуточного сервера на главный.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.