Драйвер KpMQTT

Помечено: 

Просмотр 15 сообщений - с 61 по 75 (из 78 всего)
  • Автор
    Сообщения
  • #18007
    manjey73
    Участник

    mosquitto_sub -h localhost -t /work/object1/psi1 -u «пользователь» -P «пароль»
    3,04
    3,04

    Хотя в терминале ввожу на сервере и ловлю посылки с рабочего ПК из MQTTBox

    #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 формате

    • Этот ответ был изменен 9 месяцев, 1 неделя назад от manjey73.
    #18010
    manjey73
    Участник

    Блин, предупреждать надо, что нельзя удалять секции, которые не нужны.

    Вообще не мешало бы это в драйвере поправить, если требуется только подписка, зачем пустые секции тогда, просто в игнор их отсутствие и все….

    • Этот ответ был изменен 9 месяцев, 1 неделя назад от manjey73.
    • Этот ответ был изменен 9 месяцев, 1 неделя назад от manjey73.
    #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>:0 
    
    #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.
    #18017
    Mikhail
    Модератор

    Вообще не мешало бы это в драйвере поправить, если требуется только подписка, зачем пустые секции тогда, просто в игнор их отсутствие и все….

    Первоначальный автор уже не поддерживает этот драйвер. Мы сами поддерживаем по мере сил. Но спасибо автору за то, что драйвер появился.

    Какая версия драйвера вызывает ошибку?

    #18018
    Mikhail
    Модератор

    По тексту ошибок складывается впечатление, что соединение не устанавливается?

    #18019
    manjey73
    Участник

    Да вроде 5.3.1 скачивал, проверю завтра.
    Ошибки не всегда были, когда стоял период опроса 30 секунд, потом поставил 10, вроде перестало, но опять же, завтра буду смотреть.

    Драйвер установлен на Debian 10 на VPS сервере.
    Заметил такую особенность. Период опроса 10 сек. на рабочем ПК запущен MQTTBox и одновременно в нем подписка. В терминале сервера так же включена прослушка mosquitto_sub (строка выше была).
    При отправке и в терминале и в MQTTBox мгновенно прилетают сообщения, а вот в Scada первый опрос после отправки пустой, и только на втором а бывает и на третьем получаю значение.

    #18020
    manjey73
    Участник

    Скачивал по ссылке с github community версию 5.3.1 но версия библиотеки там 1.0.0

    Может какая ошибка и есть более новая версия библиотеки ?
    Реально mqtt в Scada тормозит, если сравнивать получение данных подписчиком в MQTTBox или в терминале самого сервера

    #18026
    Mikhail
    Модератор

    Скачивал по ссылке с github community версию 5.3.1 но версия библиотеки там 1.0.0

    Значит в проекте не была проставлена версия, чтобы она попала в DLL. Думаю, что скачали свежую версию.

    Реально mqtt в Scada тормозит, если сравнивать получение данных подписчиком в MQTTBox или в терминале самого сервера

    Нужно исследовать этот вопрос. Не могу сказать, к сожалению. Учитывая важность протокола MQTT, думаю придётся этим заняться рано или поздно.

    #18033
    manjey73
    Участник

    Как минимум надо доработать драйвер, чтобы он мог за один опрос считывать все публикации ну и ускорить немного его работу по части чтения.

    Ну а вообще.
    1. пустые секции, если они не требуются и отсутствуют в xml чтобы не приводили к ошибкам
    2. если в версии 6 Scada, как вы писали что-то изменится в механизмах драйверов, чтобы драйвер MQTT мог ловить новые публикации и предлагать их добавить в конфигурацию
    3. сделать небольшой GUI для настройки, по типу Modbus и т.д.

    #18036
    Mikhail
    Модератор

    1. Это да.
    2. Конкретно эта функция не зависит от версии, а зависит от драйвера. Но если конфигурация драйвера изменится на рабочем экземпляре, то нужно будет закачать изменившуюся конфигурацию в проект и перезапустить линию связи. В версии 6 перезапуск линии связи можно будет сделать командой ТУ. Но без перезапуска линии набор тегов КП не получится обновить — оказалось что такая функция сильно запутывает программу и не стоит того. К тому же всё равно каналы нужно привязывать.
    3. Конечно, так было бы удобнее.

    #18037
    manjey73
    Участник

    2. не, я не говорю о изменении конфигурации КП. в MQTT есть возможность подписаться на все топики по # как это работает в MQTTBox
    Вот если бы драйвер периодически проверял подписку по # всем топикам и просто сообщал в какой-то канал что появились новые топики, отличные от уже прописанных в файле конфигурации и куда-то новые скидывал в лог. Возможность настройки времени опроса всех топиков, раз в час, в два или раз в сутки.

    Было бы удобно.

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

    • Этот ответ был изменен 9 месяцев, 1 неделя назад от manjey73.
    #18039
    manjey73
    Участник

    Если можно будет перезапустить линию командой ТУ, нужно, чтобы это могло работать прямо из драйвера… чтобы драйвер мог по определенной команде перезапустить линию.
    Давнишняя тема и очень нужная. Но я просто в лог выводил «Перезапустите линию связи»…

    #18041
    Mikhail
    Модератор

    Вот это вот странно, почему подключившись к серверу драйвер не считывает сразу оба топика, которые изменились с момента прошлого опроса ????

    Если мне придётся настраивать этот драйвер, то я проверю. Если найдёте причину, то напишите, пожалуйста.

    чтобы драйвер мог по определенной команде перезапустить линию.

    Линия перезапускается Коммуникатором. Будет возможность отправить любую команду из драйвера на Коммуникатор, в том числе перезапуск линии. Это уже реализовано. Если линия не перезапустится из-за какой-нибудь ошибки, то потребуется вмешательство инженера.

Просмотр 15 сообщений - с 61 по 75 (из 78 всего)
  • Вы должны авторизироваться для ответа в этой теме.