Стартовая страница › Форумы › Понять, как работает ПО › Быстрый Шлюз (инициатор соединения)
- В этой теме 19 ответов, 3 участника, последнее обновление 2 года, 3 месяца назад сделано Mikhail.
-
АвторСообщения
-
20.01.2022 в 10:01 #21474MikhailМодератор
Добрый день!
Этот параметр задействован только когда значения передаются периодически по таймеру. Если «при получении», то значения сразу добавляются в очередь на передачу.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 ? Если существуют, то нужно посмотреть, какие в них события.
Кроме того, отключите передачу событий в настройках шлюза. Тогда они точно не смогут попасть с промежуточного сервера на главный.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.