Цитата Сообщение от Евгений Кислов Посмотреть сообщение
Попробуйте для начала просто по видео повторить.

- используйте CFC
- используйте в качестве брокера www.mqtt-dashboard.com
- не используйте логин и пароль
- воздействуйте на переменные, привязанные к входам i_xPublish и i_xSubscribe "вручную", а не с помощью кода

Когда в такой связке заработает (а я считаю, что оно должно работать - только что проверил у себя, см. скрин), то поэтапно начинайте адаптировать к своей задаче, после каждого этапа проверяя, сохранилась ли работоспособность. Если после очередного изменения связь пропадет - надо приступать к анализу изменений. Так обычно происходит отладка проектов.

01-05-2021 8-36-29.png
Да, спасибо! Вчера весь вечер возился, и как-то оно заработало. Но очень нечетко. И есть нюансы, смысла которых я не понимаю, а описание очень скудное
  1. Первое, что выяснил - нельзя вызывать mqtt() внутри FB Изначально была логика иметь в PLC_PRG настроеный экземпляр, передавать его в FB, где указывать топик, payload, устанавливать i_xPublish в TRUE, и вызывать mqtt(). Это не работало. Как только я вынес все указанное за пределы FB в PLC_PRG - я увидел факт передачи. Уже успех. Но почему это не работает внутри FB - не понимаю. Видимо, аналогия из моего пограммисткого опыта, что FB - это просто функция, неверна. У FB есть какие-то ограничения, на описание которых я не натыкался.
  2. Долго не мог понять, почему MQTT_Client режет json, который я подготовил. Потом понял - передаю строку более 80 символов. Как указать STRING(250) для i_sPayload - не нашел Это вообще возможно, или начинать смотреть в сторону платных бибилиотек? Там у библиотеки 3S длина 1024 символа.
  3. Хотя я вызываю функцию mqtt() раз в 2 секунды, отправка данных идет ОДИН раз за запуск. Видимо, есть опят какие-то базовые нюансы, которые нужно просто знать Я пробовал по разному: пробовал после вызова mqtt() вызывать i_xPublis = FALSE. Пробовал менять Payload (была версия, что отправляются только измененные данные, хотя в исходниках вроде не так). Но ничего не помогло. И здесь мыслей вообще нет. Видимо, есть какие-то особенности именно работы PLC, которые я фундаментально не понимаю