PDA

Просмотр полной версии : MQTT



S.A.D.
13.01.2015, 14:23
Вопрос наверное прежде всего к специалистам компании ОВЕН. Можно ли на ПЛК100 реализовать обмен на базе протокола MQTT? Есть ли какие-то библиотеки на эту тему?

Николаев Андрей
14.01.2015, 10:16
Ну если верить гуглу, то уже есть реализации. В том числе oscat сделал.
А уже есть устройства с этим протоколом?

S.A.D.
15.01.2015, 17:14
да, есть задача с MQTT протоколом. Спасибо за подсказку

S.A.D.
15.01.2015, 17:37
Не могли бы вы натолкнуть на библиотеку оската в которой есть реализация заддного протокола, а то что-то не могу на сайте их найти.

Yegor
15.01.2015, 20:54
https://github.com/kmpm/OSC-MQTT

Мопед не мой, я только нагуглил.

Николаев Андрей
16.01.2015, 11:37
https://www.google.ru/search?q=MQTT+CODESYS&oq=MQTT+&aqs=chrome.1.69i57j69i59l2j0l3.1800j0j4&sourceid=chrome&es_sm=93&ie=UTF-8

murdemon
18.01.2015, 15:11
Если нужна помощь в адаптации https://github.com/FieldFox/Codesys-Mqtt-lib к ПЛК100, то могу помочь..

murdemon
24.01.2015, 15:36
протокол MQTT клиент для ПЛК323 (только пока посылка, подписки нет)

S.A.D.
19.02.2015, 09:46
Если нужна помощь в адаптации https://github.com/FieldFox/Codesys-Mqtt-lib к ПЛК100, то могу помочь..
да вроде адаптировать не сложно. Опыт в реализации модбас ТСР мастера и слейва есть. Вот только возникла проблема. создаю сокет после этого отправляю серверу запрос CONNECT на подключение к брокеру и он не отправляется, однако если поставить точку останова перед отправкой этого запроса и после остановки сразу продолжить исполнение программы, то он отправляется и подключается к брокеру. Не понимаю почему не работает в рантайме. в чем проблема. Пробовал ставить таймер 1-2-3-5 секунд между открытием сокета и отправкой запроса - не помогает. Только если сделать кратковременную остановку брейкпойнтом, работает. С модбас ТСР такой проблемы нет, хотя непонятно в чем в данном случае разница то. Что там после открытия отправляется серверу набор байт, что тут.

murdemon
19.02.2015, 11:12
Ты мой проект используешь?

S.A.D.
19.02.2015, 11:29
Ты мой проект используешь?
я не знаю ваш ли это проект. Скачал с гитхаба тот что с ваговской библиотекой и переделал на использование syslibsockets

murdemon
19.02.2015, 20:26
там есть фичи с работой с сокетами, я в oscat подсмотрел... попробуй тот архив, что выше в ветке этой лежит..

smxms
31.01.2016, 14:57
А может кто-нибудь более детально рассказать или показать как сделать mqtt на ПЛК110? Или ткнуть носом в какую-нибудь статью?

lingvo
09.05.2016, 17:58
Привет всем.
Подскажите есть ли у кого подвижки по этой теме? Удалось ли сделать подписку на сообщения? Я пробовал https://github.com/kmpm/OSC-MQTT - сообщения публикует, но там есть несколько багов и подписки нет. А https://github.com/FieldFox/Codesys-Mqtt-lib мне не удалось портировать из-за специфической Wago библиотеки.

Artshw
11.11.2016, 14:50
Библиотека wago вовсе не специфична, построена с использованием все тойже syslibSockets. Есть свидетельства Ее работы на плк100. http://www.owen.ru/forum/showthread.php?t=8994

Artshw
15.11.2016, 00:03
Привет всем.
Подскажите есть ли у кого подвижки по этой теме? Удалось ли сделать подписку на сообщения? Я пробовал https://github.com/kmpm/OSC-MQTT - сообщения публикует, но там есть несколько багов и подписки нет. А https://github.com/FieldFox/Codesys-Mqtt-lib мне не удалось портировать из-за специфической Wago библиотеки.

В библиотеке WAGO нет ничего специфического, основана на стандартной SysLibSockets проблема в том что ПЛК 1XX поддерживает ее частично, поэтому ваговская библиотека не работает. Прикладываю допиленную библиотеку взамен ваговской с клиентом TCP. Проверена на ПЛК100. в проекте mqtt заменить ваговскую на эту.

Artshw
15.11.2016, 10:54
В предыдущем топике перезалита библиотека, выложил с ошибкой. Дополнительно прикладываю проект.

Artshw
16.11.2016, 13:27
Mqtt c подпиской и публикацией. Библиотеки + проект, проверено на ПЛК100.

Дмитрий Вилесов
17.11.2016, 15:03
да, есть задача с MQTT протоколом.
Может быть всё-таки расскажете что за устройство? Просто интересно.

murdemon
14.01.2017, 20:12
для ПЛК323 тоже самое

traver
23.01.2017, 18:17
В предыдущем топике перезалита библиотека, выложил с ошибкой. Дополнительно прикладываю проект.

Господа, требуется Ваша помощь: в данном случае на какой брокер делается публикация в топик /plc? Я так понимаю, что на сам контроллер, тогда подскажите, пожалуйста, настройки конфигурации mqtt spy, тк он у меня не соединяется с плк100.
А как быть в случае, если необходимо взаимодействие с онлайн-брокером, то есть нужны подписки и публикации в топики на брокере по адресу www.....?

murdemon
23.01.2017, 20:17
делается на mosquitto broker например.. где он расположен не важно.. главное что бы пинговался с ПЛК и всякие там фаерволы были настроены правильно.

traver
24.01.2017, 12:45
делается на mosquitto broker например.. где он расположен не важно.. главное что бы пинговался с ПЛК и всякие там фаерволы были настроены правильно.
это понятно, вопрос в том, где указывается параметры удаленного брокера (к примеру mosquitto.org) для дальнейшей связи с ним? И при чтении сообщений из топика /plc (как в примере) например программой mqtt spy- какие параметры соединения должны быть? (ip- контроллера, 1883-порт и тд..) Дело в том, что ни один из клиентов (например wise-5231 или же mqtt spy не могут соединиться с плк100)

murdemon
24.01.2017, 12:53
mosquitto.org - в IP прописывается.. ПЛК не является сервером MQTT. Те логика работы такая ПЛК подключился к masqito серверу и подписался на топик. Другой клиент подключился к masqito и запостил в тот же топик на который подписан ПЛК. ПЛК получил данные. И так же ПЛК может постить данные в другие топики и или в тот же на который подписан, не важно.

traver
24.01.2017, 13:40
mosquitto.org - в IP прописывается.. ПЛК не является сервером MQTT. Те логика работы такая ПЛК подключился к masqito серверу и подписался на топик. Другой клиент подключился к masqito и запостил в тот же топик на который подписан ПЛК. ПЛК получил данные. И так же ПЛК может постить данные в другие топики и или в тот же на который подписан, не важно.

как тогда его там указать, если вход DWORD?

murdemon
24.01.2017, 14:50
ну как то ip 85.119.83.194 (mosquitto.org) - 16#557753C2 как то так.. это если ты про ПО для Codesys V2 в версии для V3 там просто Sting '85.119.83.194'

traver
24.01.2017, 16:08
Огромное спасибо за консультацию!

opyzhov
09.05.2017, 21:48
Подскажите а библиотека с github-а Codesys-Mqtt-lib умеет только публиковать или подписка тоже работает?

Для чего то там же есть Subscribe?

murdemon
10.05.2017, 09:02
подписка тоже работает в последней в теме версии

S.A.D.
10.05.2017, 11:38
Может быть всё-таки расскажете что за устройство? Просто интересно.

это было не устройство, а сервер с самописной скадой к которому надо было коннектится и общаться по mqtt. Идея была ради оптимизации и удешевления заменить в серийном шкафу управления контроллер собственной разработки на ПЛК100.

opyzhov
10.05.2017, 20:30
> подписка тоже работает в последней в теме версии

Последняя версия в теме я так понимаю для PLC Owen.. а у меня так уж сложилось другой контроллер с библиотекой Eth от wago.
кстати словил неприятную ошибку. Если записывать TRUE на Pub и не задавать значение Payload - контроллер виснет наглухо до ручной перезагрузки.

Про оригинальную версию не подскажите?
Вашу версию (projectarchive MQTT_V2.projectarchive)я даже открыть не могу (Codesys 2.3).. расширение незнакомое

Serhioromano
16.07.2017, 16:12
Вроде все настроил. Все без ошибок компелиться. Но вот соединятся не хочет.

Вот эта ошибка.
16#8007 => SysSockSend() fails

И выход xBusy тоже TRUE через 5-7 секунд. А потом уже и ошибка появляется.

У меня ПЛК110.

Вопрос. Мне вобще нужно добавлить интерфейс в плк изернет в конфигурации? Или он и так в сети?

Я проверил и я локально конект делаю с МКТТ клиентом, так же пробовал ТеслаСкада и проект на другом устрйстве (сотке) в локальной сети тоже работает. Это значит что сам сервер МКТТ москито разрешает соединения. Видимо что то в настроках контроллера.

Я проверил PLCInfo и айпи, маска и гейтвей все правильные, в моей подсети все.

Дополнение.

Проверил соедитенние wireshark. Очень странный результат.

http://www.owen.ru/forum/attachment.php?attachmentid=32104&stc=1&d=1500214123

Почему там какойто TCP ретрансмишен с 1685 на 23303. При чем тут эти порты? Я вообще на 1883 пытаюсь соедениться.

Dennis2004
23.08.2017, 15:49
Почему там какойто TCP ретрансмишен с 1685 на 23303. При чем тут эти порты? Я вообще на 1883 пытаюсь соедениться.
Из-за недостатка вызова htons(), htonl() в нужных местах - байты не в том порядке.
1883 == 16#075B
23303 == 16#5B07

Smith2007
10.09.2017, 21:05
Всем добрый вечер.
Скажите пожалуйста, появилась ли библиотека mqtt для ПЛК110 (Codesys 2.3)?

Scream
10.09.2017, 21:18
Всем добрый вечер.
Скажите пожалуйста, появилась ли библиотека mqtt для ПЛК110 (Codesys 2.3)?

http://www.owen.ru/forum/showthread.php?t=20265&page=2&p=227644&viewfull=1#post227644
Это не работает ?

Smith2007
11.09.2017, 18:31
А какие конкретно библиотеки нужны?
Есть mqtt_publish.lib
и есть mqtt_v1.0.lib

Что из них?
И с каким периодом необходимо запускать эту программу, что бы mqtt работал стабильно?

Singib
07.11.2018, 07:13
Mqtt c подпиской и публикацией. Библиотеки + проект, проверено на ПЛК100.

Здравствуйте. Пытаюсь прикрутить к ПЛК 110 (M2). Все компилируется, но кажется не работает.
У кого-нибудь были удачные попытки сделать MQTT на ПЛК 110?

ska-perm
14.01.2022, 10:25
Господа, подскажите как выполнтиь реконнект при потере связи?
Библиотека MQTT_OwenPLCv1
MQTT отправка работает, все отлично ... до сбоя связи с сервером. При потере связи с сервером подключение MQTT обрывается и не пытается восстановиться, зависает.
При этом xError показывает ошибку 32772 "Is returned when FB_SocketReceive is called, if the client socket is no longer connected with the server.",
xPublish в true.
Как я понимаю сокет не сбрасывается, MQTT пытается долбиться по несуществующему на сервер

Сам себе отвечу и поделюсь решением (кривым, я .Net-чик):
В библиотеке MQTT_OwenPLCv1 при потеои связи с сервером TcpClient переходил в состояние STATE_TX и, если время WatchDog выходит, скидывает в STATE_ERROR_TRAP откуда нет выхода
В общем в состоянии STATE_TX поставил заглушку типа Return при условии ошибки m_diReturn
Теперь сокету приходится бесконечно ждать возможности отправки

Также в библиотеке MQTT_OwenPLCv1 добавил возможность указания извне идентификатора клиента sOwner

Прикрепляю проект со всеми библиотеками для Овен ПЛК100

ska-perm
17.01.2022, 12:05
Указанное мной решение выше - бред
Люди, помогите!
Проблема восстановления связи после сбоя
Кому пива?

ska-perm
21.01.2022, 08:43
По итогу решился начать с нуля
В приложении проект на стандартных библиатеках
Реализована стабильная связь клиента по MQTT, восстановление подключения при обрыве связи
Но, было лень реализовывать для меня ненужное - отсутствует авторизация по логину и паролю, указание параметров, ... кому нужно сможет доработать по спецификации

ПЛК100-24R.M

саня89
23.03.2022, 15:38
было б супер если б допилили проект с логин пас и портом с айпи сервера.я вот ищу как раз рабочий код/блок для mqtt на плк 100. а сам врятли смогу допилить - мозгов не хватит