СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Если параметр публикуется без Retain то когда подписываешься на топик после публикации там нет значения.
Протокол MQTT поддерживает подписку на множество топиков. Тот же маскитовский клиент просто подписывается на кучу топиков сразу и ждет параметры.
с библиотекой MQTT_CLient для CODESYS на PLC200 я не знаю возможна ли подписка одновременно на кучу топиков. Я смог реализовать лишь последовательную подписку на топики клиентом пробегаясь по списку топиков.
Ну и проблема что если была публикация без Retain я не вижу параметр потому что в момент публицации читался другой топик из списка.
НУ и это не правильно я считаю когда один клиент посылает брокеру кучу "сабскрайбов" .
Поэтому и спросил а можно ли сразу подписаться списком на топики и просто ждать параметры.
Пока решение для каждого топика свой клиент тогда параметры достоверно будут получены контроллером (около 50-ти клиентов).
П.С. С публикацией таже проблема в общем то приходится постоянно менять переменную сообщения и топика далее публиковать, потом ждать состояния завершения публикации , выключать публикацию менять сообщение и топик и снова публиковать, но это хотя бы работает достаточно стабильно.
В рамках данной библиотеки подразумевается именно этот подход.Я смог реализовать лишь последовательную подписку на топики клиентом пробегаясь по списку топиков.
Честно говоря, не до конца понимаю термин "читался". В MQTT клиент не "читает", а получает сообщение от брокера.Ну и проблема что если была публикация без Retain я не вижу параметр потому что в момент публицации читался другой топик из списка.
На всякий случай уточню - вы же понимаете, что подписку на все нужные топики на топики достаточно сделать однократно при старте приложения?
Вы смотрели через WireShark, что делает "маскитовский клиент", когда "просто подписывается на кучу топиков сразу ?НУ и это не правильно я считаю когда один клиент посылает брокеру кучу "сабскрайбов" .
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Вы сказали выше что подписываемся на все топики 1 раз при старте, на сколько я понял это стандартный алгоритм проверки первого запуска в котором мы должны сделать все подписки (1 итерация контроллера) после чего в это условие проверки 1-ого старта больше не попадаем ни когда. Только при след. запуске плк.
Здравствуйте!
Что нужно сделать, чтобы в визуализации у элементов появились свойства-события OnMouseDown и т.п.?
2023-09-19_11-39-28.png
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Тут описано, как что-то сделать при старте контроллера:
https://www.owen.ru/forum/showthread...l=1#post304642
Теперь по поводу алгоритма:
1. генерируете единичный импульс на входе i_xSubscribe (при этом на входе i_xTopicSubscribe должно быть задано имя первого интересующего топика)
2. дожидаетесь, пока на выходе q_udiState появится значение 67 (подписка прошла успешно) или 90 (подписка не удалась)
3. генерируете следующий единичный импульс и повторяете п. 1-3 с разными названиями топиков
4. когда подпишитесь на все топики - переводите xIsPlcStarted из сниппета по ссылке выше в значение TRUE
Библиотека доступна в исходниках (уточню - это не наша разработка) - так что вы можете понять, как она устроена и адаптировать ее под свои требования.
Последний раз редактировалось Евгений Кислов; 19.09.2023 в 12:12.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Евгений, спасибо разобрался. Ваши вопросы помогли выйти из ступора.
Вы уже алгоритм написали ) думаю все ровно пригодится будущим поколениям