Стартовая страница › Форумы › Rapid SCADA на Linux-контроллерах и Raspberry Pi › Драйвер KpMQTT
Помечено: MQTT KpMQTT
- В этой теме 78 ответов, 8 участников, последнее обновление 4 года, 1 месяц назад сделано
Vasily777.
-
АвторЗаписи
-
12.01.2021 в 13:37 #18007
manjey73Участникmosquitto_sub -h localhost -t /work/object1/psi1 -u «пользователь» -P «пароль»
3,04
3,04Хотя в терминале ввожу на сервере и ловлю посылки с рабочего ПК из MQTTBox
12.01.2021 в 13:48 #18008
manjey73Участник2021-01-12 12:45:33 Error executing actions of Device 4 "MQTT_Obj" on adding device to communication line: Object reference not set to an instance of an object 2021-01-12 12:45:43 Start communication line 4 "MQTT_Line" 2021-01-12 12:45:43 Communication session with the Device 4 "MQTT_Obj", type: KpMqtt Error reconnectingсобственно ошибка в Коммуникаторе.
<?xml version="1.0" encoding="utf-8"?> <DevTemplate> <MqttParams Hostname="127.0.0.1" ClientID="KpMQTTrs" Port="1883" UserName="пользователь" Password="пароль" /> <RapSrvCnf ServerHost="127.0.0.1" ServerPort="10000" ServerUser="ScadaComm" ServerPwd="12345" /> <MqttSubTopics> <Topic TopicName="/work/object1/psi1" QosLevel="0" NumCnl="1000" /> </MqttSubTopics> <MqttSubJSs> <Topic TopicName="/work/object1/psi1" QosLevel="0" CnlCnt="1" JSHandlerPath="/opt/scada/ScadaComm/Config/job.js" /> </MqttSubJSs> </DevTemplate>Настройка на канал 1000. Что надо исправить, чтобы заработало ?
NumCnl=»1000″ — это понятно, что номер канала
CnlCnt=»1″ — это что? номер сигнала для данного канала, если тот же топик ? или как это интерпретировать ?, например у меня канал 1000, но он прилетает в JSON формате-
Ответ изменён 5 лет, 6 месяцев назад пользователем
manjey73.
12.01.2021 в 14:00 #18010
manjey73УчастникБлин, предупреждать надо, что нельзя удалять секции, которые не нужны.
Вообще не мешало бы это в драйвере поправить, если требуется только подписка, зачем пустые секции тогда, просто в игнор их отсутствие и все….
12.01.2021 в 14:04 #18013
manjey73УчастникError: StriderMqtt.MqttProtocolException: Could not read remaining length at StriderMqtt.PacketReader.ReadRemainingLength (System.IO.Stream stream) [0x0003a] in <962c5dd987a3415797cb042dc6447904>:0 at StriderMqtt.PacketReader..ctor (System.IO.Stream stream) [0x0001f] in <962c5dd987a3415797cb042dc6447904>:0 at StriderMqtt.BaseTransport.Read () [0x00006] in <962c5dd987a3415797cb042dc6447904>:0 at Scada.Comm.Devices.KpMqttLogic.ReceivePacket () [0x00010] in <962c5dd987a3415797cb042dc6447904>:012.01.2021 в 14:07 #18014
manjey73Участник2021-01-12 13:06:30 Communication session with the Device 4 "MQTT_Obj", type: KpMqtt Receive packet Error: StriderMqtt.MqttProtocolException: Could not read remaining length at StriderMqtt.PacketReader.ReadRemainingLength (System.IO.Stream stream) [0x0003a] in <962c5dd987a3415797cb042dc6447904>:0 at StriderMqtt.PacketReader..ctor (System.IO.Stream stream) [0x0001f] in <962c5dd987a3415797cb042dc6447904>:0 at StriderMqtt.BaseTransport.Read () [0x00006] in <962c5dd987a3415797cb042dc6447904>:0 at Scada.Comm.Devices.KpMqttLogic.ReceivePacket () [0x00010] in <962c5dd987a3415797cb042dc6447904>:0 Send packet 2021-01-12 13:06:30 Error communicating with Device 4 "MQTT_Obj": Unable to write data to the transport connection: The socket has been shut down.12.01.2021 в 19:19 #18017
MikhailМодераторВообще не мешало бы это в драйвере поправить, если требуется только подписка, зачем пустые секции тогда, просто в игнор их отсутствие и все….
Первоначальный автор уже не поддерживает этот драйвер. Мы сами поддерживаем по мере сил. Но спасибо автору за то, что драйвер появился.
Какая версия драйвера вызывает ошибку?
12.01.2021 в 19:24 #18018
MikhailМодераторПо тексту ошибок складывается впечатление, что соединение не устанавливается?
12.01.2021 в 21:19 #18019
manjey73УчастникДа вроде 5.3.1 скачивал, проверю завтра.
Ошибки не всегда были, когда стоял период опроса 30 секунд, потом поставил 10, вроде перестало, но опять же, завтра буду смотреть.Драйвер установлен на Debian 10 на VPS сервере.
Заметил такую особенность. Период опроса 10 сек. на рабочем ПК запущен MQTTBox и одновременно в нем подписка. В терминале сервера так же включена прослушка mosquitto_sub (строка выше была).
При отправке и в терминале и в MQTTBox мгновенно прилетают сообщения, а вот в Scada первый опрос после отправки пустой, и только на втором а бывает и на третьем получаю значение.13.01.2021 в 11:04 #18020
manjey73УчастникСкачивал по ссылке с github community версию 5.3.1 но версия библиотеки там 1.0.0
Может какая ошибка и есть более новая версия библиотеки ?
Реально mqtt в Scada тормозит, если сравнивать получение данных подписчиком в MQTTBox или в терминале самого сервера13.01.2021 в 17:29 #18026
MikhailМодераторСкачивал по ссылке с github community версию 5.3.1 но версия библиотеки там 1.0.0
Значит в проекте не была проставлена версия, чтобы она попала в DLL. Думаю, что скачали свежую версию.
Реально mqtt в Scada тормозит, если сравнивать получение данных подписчиком в MQTTBox или в терминале самого сервера
Нужно исследовать этот вопрос. Не могу сказать, к сожалению. Учитывая важность протокола MQTT, думаю придётся этим заняться рано или поздно.
14.01.2021 в 09:10 #18033
manjey73УчастникКак минимум надо доработать драйвер, чтобы он мог за один опрос считывать все публикации ну и ускорить немного его работу по части чтения.
Ну а вообще.
1. пустые секции, если они не требуются и отсутствуют в xml чтобы не приводили к ошибкам
2. если в версии 6 Scada, как вы писали что-то изменится в механизмах драйверов, чтобы драйвер MQTT мог ловить новые публикации и предлагать их добавить в конфигурацию
3. сделать небольшой GUI для настройки, по типу Modbus и т.д.14.01.2021 в 16:50 #18036
MikhailМодератор1. Это да.
2. Конкретно эта функция не зависит от версии, а зависит от драйвера. Но если конфигурация драйвера изменится на рабочем экземпляре, то нужно будет закачать изменившуюся конфигурацию в проект и перезапустить линию связи. В версии 6 перезапуск линии связи можно будет сделать командой ТУ. Но без перезапуска линии набор тегов КП не получится обновить — оказалось что такая функция сильно запутывает программу и не стоит того. К тому же всё равно каналы нужно привязывать.
3. Конечно, так было бы удобнее.14.01.2021 в 17:21 #18037
manjey73Участник2. не, я не говорю о изменении конфигурации КП. в MQTT есть возможность подписаться на все топики по # как это работает в MQTTBox
Вот если бы драйвер периодически проверял подписку по # всем топикам и просто сообщал в какой-то канал что появились новые топики, отличные от уже прописанных в файле конфигурации и куда-то новые скидывал в лог. Возможность настройки времени опроса всех топиков, раз в час, в два или раз в сутки.Было бы удобно.
Но главное скорость. Я отправляю в два топика сообщения, драйвер на одном цикле опроса считывает один топик, на следующем только второй топик. А может даже пропустить чтение первого и считать его со второго раза. Вот это вот странно, почему подключившись к серверу драйвер не считывает сразу оба топика, которые изменились с момента прошлого опроса ????
-
Ответ изменён 5 лет, 6 месяцев назад пользователем
manjey73.
14.01.2021 в 17:25 #18039
manjey73УчастникЕсли можно будет перезапустить линию командой ТУ, нужно, чтобы это могло работать прямо из драйвера… чтобы драйвер мог по определенной команде перезапустить линию.
Давнишняя тема и очень нужная. Но я просто в лог выводил «Перезапустите линию связи»…15.01.2021 в 16:18 #18041
MikhailМодераторВот это вот странно, почему подключившись к серверу драйвер не считывает сразу оба топика, которые изменились с момента прошлого опроса ????
Если мне придётся настраивать этот драйвер, то я проверю. Если найдёте причину, то напишите, пожалуйста.
чтобы драйвер мог по определенной команде перезапустить линию.
Линия перезапускается Коммуникатором. Будет возможность отправить любую команду из драйвера на Коммуникатор, в том числе перезапуск линии. Это уже реализовано. Если линия не перезапустится из-за какой-нибудь ошибки, то потребуется вмешательство инженера.
-
Ответ изменён 5 лет, 6 месяцев назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.