Стартовая страница › Форумы › Rapid SCADA на Linux-контроллерах и Raspberry Pi › Драйвер KpMQTT
Помечено: MQTT KpMQTT
- В этой теме 78 ответов, 8 участников, последнее обновление 1 год, 4 месяца назад сделано
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 #18008manjey73
Участник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 формате-
Этот ответ был изменен 2 года, 8 месяцев назад от
manjey73.
12.01.2021 в 14:00 #18010manjey73
УчастникБлин, предупреждать надо, что нельзя удалять секции, которые не нужны.
Вообще не мешало бы это в драйвере поправить, если требуется только подписка, зачем пустые секции тогда, просто в игнор их отсутствие и все….
12.01.2021 в 14:04 #18013manjey73
Участник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
12.01.2021 в 14:07 #18014manjey73
Участник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 #18017Mikhail
МодераторВообще не мешало бы это в драйвере поправить, если требуется только подписка, зачем пустые секции тогда, просто в игнор их отсутствие и все….
Первоначальный автор уже не поддерживает этот драйвер. Мы сами поддерживаем по мере сил. Но спасибо автору за то, что драйвер появился.
Какая версия драйвера вызывает ошибку?
12.01.2021 в 19:24 #18018Mikhail
МодераторПо тексту ошибок складывается впечатление, что соединение не устанавливается?
12.01.2021 в 21:19 #18019manjey73
УчастникДа вроде 5.3.1 скачивал, проверю завтра.
Ошибки не всегда были, когда стоял период опроса 30 секунд, потом поставил 10, вроде перестало, но опять же, завтра буду смотреть.Драйвер установлен на Debian 10 на VPS сервере.
Заметил такую особенность. Период опроса 10 сек. на рабочем ПК запущен MQTTBox и одновременно в нем подписка. В терминале сервера так же включена прослушка mosquitto_sub (строка выше была).
При отправке и в терминале и в MQTTBox мгновенно прилетают сообщения, а вот в Scada первый опрос после отправки пустой, и только на втором а бывает и на третьем получаю значение.13.01.2021 в 11:04 #18020manjey73
УчастникСкачивал по ссылке с github community версию 5.3.1 но версия библиотеки там 1.0.0
Может какая ошибка и есть более новая версия библиотеки ?
Реально mqtt в Scada тормозит, если сравнивать получение данных подписчиком в MQTTBox или в терминале самого сервера13.01.2021 в 17:29 #18026Mikhail
МодераторСкачивал по ссылке с github community версию 5.3.1 но версия библиотеки там 1.0.0
Значит в проекте не была проставлена версия, чтобы она попала в DLL. Думаю, что скачали свежую версию.
Реально mqtt в Scada тормозит, если сравнивать получение данных подписчиком в MQTTBox или в терминале самого сервера
Нужно исследовать этот вопрос. Не могу сказать, к сожалению. Учитывая важность протокола MQTT, думаю придётся этим заняться рано или поздно.
14.01.2021 в 09:10 #18033manjey73
УчастникКак минимум надо доработать драйвер, чтобы он мог за один опрос считывать все публикации ну и ускорить немного его работу по части чтения.
Ну а вообще.
1. пустые секции, если они не требуются и отсутствуют в xml чтобы не приводили к ошибкам
2. если в версии 6 Scada, как вы писали что-то изменится в механизмах драйверов, чтобы драйвер MQTT мог ловить новые публикации и предлагать их добавить в конфигурацию
3. сделать небольшой GUI для настройки, по типу Modbus и т.д.14.01.2021 в 16:50 #18036Mikhail
Модератор1. Это да.
2. Конкретно эта функция не зависит от версии, а зависит от драйвера. Но если конфигурация драйвера изменится на рабочем экземпляре, то нужно будет закачать изменившуюся конфигурацию в проект и перезапустить линию связи. В версии 6 перезапуск линии связи можно будет сделать командой ТУ. Но без перезапуска линии набор тегов КП не получится обновить — оказалось что такая функция сильно запутывает программу и не стоит того. К тому же всё равно каналы нужно привязывать.
3. Конечно, так было бы удобнее.14.01.2021 в 17:21 #18037manjey73
Участник2. не, я не говорю о изменении конфигурации КП. в MQTT есть возможность подписаться на все топики по # как это работает в MQTTBox
Вот если бы драйвер периодически проверял подписку по # всем топикам и просто сообщал в какой-то канал что появились новые топики, отличные от уже прописанных в файле конфигурации и куда-то новые скидывал в лог. Возможность настройки времени опроса всех топиков, раз в час, в два или раз в сутки.Было бы удобно.
Но главное скорость. Я отправляю в два топика сообщения, драйвер на одном цикле опроса считывает один топик, на следующем только второй топик. А может даже пропустить чтение первого и считать его со второго раза. Вот это вот странно, почему подключившись к серверу драйвер не считывает сразу оба топика, которые изменились с момента прошлого опроса ????
-
Этот ответ был изменен 2 года, 8 месяцев назад от
manjey73.
14.01.2021 в 17:25 #18039manjey73
УчастникЕсли можно будет перезапустить линию командой ТУ, нужно, чтобы это могло работать прямо из драйвера… чтобы драйвер мог по определенной команде перезапустить линию.
Давнишняя тема и очень нужная. Но я просто в лог выводил «Перезапустите линию связи»…15.01.2021 в 16:18 #18041Mikhail
МодераторВот это вот странно, почему подключившись к серверу драйвер не считывает сразу оба топика, которые изменились с момента прошлого опроса ????
Если мне придётся настраивать этот драйвер, то я проверю. Если найдёте причину, то напишите, пожалуйста.
чтобы драйвер мог по определенной команде перезапустить линию.
Линия перезапускается Коммуникатором. Будет возможность отправить любую команду из драйвера на Коммуникатор, в том числе перезапуск линии. Это уже реализовано. Если линия не перезапустится из-за какой-нибудь ошибки, то потребуется вмешательство инженера.
-
Этот ответ был изменен 2 года, 8 месяцев назад от
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.