Что именно вы хотите сделать и с какой целью?А не подскажите еще - как выводить что-то в консоль?
Что именно вы хотите сделать и с какой целью?А не подскажите еще - как выводить что-то в консоль?
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Для работы со строками можно использовать переменные типа STRING и WSTRING.
https://help.codesys.com/webapp/_cds...rsion=3.5.16.0
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Ага, понялЯ думал - есть какой-то аналог console.log в JavaScript. Но лога в строковую переменную оказалось достаточно. В общем, задумка получилась. Вроде все работает норм. Одинарный, двойной, тройной клик для включения/выключения до 3-х выходов, и длительный для сброса всех выходов. Спасибо большое!
Евгений, добрый вечер! А подскажите, плз, в режиме эмулятора должен ли работать MQTT Client, то есть отсылать сообщения в брокер? Или он работает в режиме эмуляции без реальной отправки сообщений? Просто делаю
mqtt.i_sPayload := json;
mqtt.i_xPublish := TRUE;
sError := mqtt.q_sDiagMsg;
Но не вижу ни отправки, ни сообщений об ошибках.
Попробуйте для начала просто по видео повторить:
https://youtu.be/3AGJbDp0aaU
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Я посмотрел внимательно видео. Вроде бы так и делаю. Попробовал максимально упростить задачу. И прямо в PLC_PRG написал так:
mqtt.i_xEnable := TRUE;
mqtt.i_sBrokerAddress := 'subdomain.domain.com';
mqtt.i_uiPort := 1883;
mqtt.i_sUsername := 'user';
mqtt.i_sPassword := 'password';
mqtt.i_sPayload := 'starting';
mqtt.i_sTopicPublish := '/topic11/plc';
mqtt.i_xPublish := TRUE;
И после запуска ничего не происходитЯ указываю те же данные в приложении MQTT Explorer, и все нормально подключается. То есть коннективити есть, логин/пароль верные.
По netstat вижу подключения к Gateaway (localhost:1217). Но не вижу обращений к адресу mqtt-брокера.
Последний раз редактировалось Stan_1; 30.04.2021 в 22:42.
Попробуйте для начала просто по видео повторить.
- используйте CFC
- используйте в качестве брокера www.mqtt-dashboard.com
- не используйте логин и пароль
- воздействуйте на переменные, привязанные к входам i_xPublish и i_xSubscribe "вручную", а не с помощью кода
Когда в такой связке заработает (а я считаю, что оно должно работать - только что проверил у себя, см. скрин), то поэтапно начинайте адаптировать к своей задаче, после каждого этапа проверяя, сохранилась ли работоспособность. Если после очередного изменения связь пропадет - надо приступать к анализу изменений. Так обычно происходит отладка проектов.
01-05-2021 8-36-29.png
Последний раз редактировалось Евгений Кислов; 01.05.2021 в 09:05.
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Да, спасибо! Вчера весь вечер возился, и как-то оно заработало. Но очень нечетко. И есть нюансы, смысла которых я не понимаю, а описание очень скудное![]()
- Первое, что выяснил - нельзя вызывать mqtt() внутри FB
Изначально была логика иметь в PLC_PRG настроеный экземпляр, передавать его в FB, где указывать топик, payload, устанавливать i_xPublish в TRUE, и вызывать mqtt(). Это не работало. Как только я вынес все указанное за пределы FB в PLC_PRG - я увидел факт передачи. Уже успех. Но почему это не работает внутри FB - не понимаю. Видимо, аналогия из моего пограммисткого опыта, что FB - это просто функция, неверна. У FB есть какие-то ограничения, на описание которых я не натыкался.
- Долго не мог понять, почему MQTT_Client режет json, который я подготовил. Потом понял - передаю строку более 80 символов. Как указать STRING(250) для i_sPayload - не нашел
Это вообще возможно, или начинать смотреть в сторону платных бибилиотек? Там у библиотеки 3S длина 1024 символа.
- Хотя я вызываю функцию mqtt() раз в 2 секунды, отправка данных идет ОДИН раз за запуск. Видимо, есть опят какие-то базовые нюансы, которые нужно просто знать
Я пробовал по разному: пробовал после вызова mqtt() вызывать i_xPublis = FALSE. Пробовал менять Payload (была версия, что отправляются только измененные данные, хотя в исходниках вроде не так). Но ничего не помогло. И здесь мыслей вообще нет. Видимо, есть какие-то особенности именно работы PLC, которые я фундаментально не понимаю