Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Обсуждение MQTT  (Прочитано 30575 раз)

Serhioormano

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Обсуждение MQTT
« : 08 Августа 2017, 07:52:40 »
Я бы это все сделал через MQTT. Это достаточно быстрый протокол. У ваго есть в кокпите библотека. Можно москито сервер ipk файлы кинуть на сам контроллер и он станет сервером. Можно связать потом с AWS IoT и работать через облако. Можно напрямую.

Другими словами зачам использовать ОПС вообще? Это ведь прошлый вет а MQTT будующее. Индустриальный IoT. Сегодня смотря на то куда все идет, можно с увереностью сказать что через 10 лет ОПС будет архаичным придатком и MQTT будет править балом. Ведь.

1. Он супер быстрый (рельном времени)
2. Легкий и его релизация занимает на памяти 200кб
3. Не нужно что бы был запущет любой HTTP сервер а значит экономия батареи и опять же скорость так как топология HTTP не расчитана на технологии пуш
4. Экономит батарею если устройство работает от аккамулятора.
5. Очень простой в использовании

Ааааа, нет!!!! Забыл! Симпл скада ведь не поддреживает MQTT! Ладно, забудьте!
« Изменён: 24 Августа 2017, 17:14:01 от Simple-Scada »

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #1 : 08 Августа 2017, 09:52:29 »
OPC сервер теоретически может быть заодно и MQTT брокером. А уже скада работать с ним. Это вообще разные вещи.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #2 : 08 Августа 2017, 10:27:28 »
Цитировать
Ааааа, нет!!!! Забыл! Симпл скада ведь не поддреживает MQTT! Ладно, забудьте!
MQTT и OPC это на данный момент всё таки разные вещи. Совершенно непонятно как Вы представляете поддержку MQTT на уровне скады? Это просто сетевой протокол со своими достоинствами, который никак не ограничивает разработчиков стандартами, поэтому каждый может передавать данные как захочет, в любой последовательности, любое количество данных. Мы можем обговорить с конкретным пользователем как будет проходить обмен и передача данных и реализовать это на MQTT, а что делать с другими пользователями? (аналогично можно говорить и о других сетевых протоколах). Поэтому сейчас предпочтительнее использовать OPC-UA, который значительно ближе к MQTT по характеристикам, чем устаревший OPC-DA. Если в ходе своего развития в MQTT будет добавлена спецификация с указанием каких-то стандартов обмена данными, то мы обязательно добавим поддержку MQTT в скаду.

OPC сервер теоретически может быть заодно и MQTT брокером. А уже скада работать с ним. Это вообще разные вещи.
+1
« Изменён: 08 Августа 2017, 10:28:28 от Simple-Scada »

Serhioormano

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #3 : 08 Августа 2017, 18:36:45 »
Совершенно непонятно как Вы представляете поддержку MQTT на уровне скады?

Ну например TeslsScada уже себе представил как это будет и внедрила поддержку MQTT. Это значит что я могу подключать теги, к серверу MQTT а не OPC. Напряму подписываться на топики. Один тег - одна подписка на топик.

Это просто сетевой протокол со своими достоинствами, который никак не ограничивает разработчиков стандартами, поэтому каждый может передавать данные как захочет, в любой последовательности, любое количество данных. Мы можем обговорить с конкретным пользователем как будет проходить обмен и передача данных и реализовать это на MQTT, а что делать с другими пользователями? (аналогично можно говорить и о других сетевых протоколах). Поэтому сейчас предпочтительнее использовать OPC-UA, который значительно ближе к MQTT по характеристикам, чем устаревший OPC-DA. Если в ходе своего развития в MQTT будет добавлена спецификация с указанием каких-то стандартов обмена данными, то мы обязательно добавим поддержку MQTT в скаду.

Ну тут я не согласен. Да данные пердаваемые через MQTT не типизируются. В топик можно положить строку, цифру, с точкой и т.д. Но стандарт здесь уж точно есть. А то что MQTT агностик к типам передаваемых данных делает его только гибче и универсальней. Я могу передать строку, в ней просто JSON кодированый, на клиенте распоковать и у меня готовый объект. Это пример.

Но способ получения и отравке вполне стандарнтый.

Прошу заметить сименс выпустил свой контроллер IoT, Ваго выпустили поддержку MQTT в виде библиотек готовых к работе. Бекхов вообще выпустил поддержку привязки к сервисам Амазон куда включается и сервис IoT включая MQTT. Тут кончено вообще возможности шире. Можно перед передачей данных обраотать их лямбда функцией на питоне, РНР или ноде. Можно сохранить в базе, передать дальше на другой MQTT сервер (С версии 3.1.1 термен брокер был официально заменен на сервер). Аутомэйшн директ внедряет MQTT поддержку. Уже даже образовался термен Industrial IoT. А Российские производители все еще не видят как MQTT вообще к ним относиться.

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

Сами подумайет когда разрабатывался OPC? В те времена протокол HTTP был версии 0.1. Технологии вообще не были приспособленны для решения таких задач. OPC эта была заплатка, которая перекрывала недостатки технологий и даавла возможности кторых нет в технологиях. Но MQTT это новая технологи. Хотя и не такая новая. Но она разработана не на базе старой  HTTP а совершенно новая алтернатива, и разработана специально для решения этих задач передачи даных. Например в MQTT встроет QoS 3х уровней. Он встроен уже внутрь. В контесте MQTT это как бы гарантированая доставка сообщений. Этот протокол разрабатывался к стати для индустрии. Что бы предавать данные с удаленных нефтяных вышек через спутник на контроль.



Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #4 : 08 Августа 2017, 22:45:23 »
А Российские производители все еще не видят как MQTT вообще к ним относиться.
Я понимаю, легче использовать то что знаешь, и по накатаной еще десятилетие многие будут пользоваться OPC.
Складывается впечатление, что Вы считаете, что разработчики смотрят на MQTT и просто игнорируют его потому что им просто лень уходить от OPC (или просто плохо соображают)? Но это не так. Разработчики тоже люди и могут узнать о MQTT также как это сделали Вы. Мы не исключение и постоянно следим на развитием технологий, в том числе за развитием MQTT и также знаем о его преимуществах. Мы также знакомы с реализацией MQTT в TeslaSCADA. В Simple-Scada 2 взаимодействие между сервером и клиентами реализовано на близком к MQTT сетевом протоколе, мы не используем для этого OPC. Это очень хорошо, что Вы можете передавать по MQTT данные как JSON-строку или как-то ещё, но ведь затем эту строку нужно будет принять и где-то это принятие и его формат описать. Мы с уверенностью можем сказать, что практически никто из наших пользователей этого делать не будет и это приведёт лишь к усложнению. Чтобы избежать этого можно организовать стандартную работу через MQTT как в TeslaSCADA (хорошо показано в этом примере) когда есть к примеру Modbus сервер, который читает данные с устройства и средствами скада эти данные публикуются на MQTT сервер. Затем средствами скада создается подписчик который читает эти стандартные данные. В данный момент мы действительно не видим в этом смысла из-за низкой востребованности и конечно для нас выгоднее потратить время на внедрение более популярной сегодня и развивающейся в том же направлении технологии OPC-UA. В ней уже заложен стандарт передачи в котором есть все необходимое (как контроль качества, отметки времени, значения и другие параметры тегов). К тому же, судя по всему, сами OPC-UA серверы в будущем будут использовать MQTT-подобные протоколы для обмена данными (см. OPC UA PubSub). А если вдруг ничего подобного не произойдет и лучшее развитие получит MQTT, то мы точно не оставим этого без внимания.

Цитировать
Сами подумайет когда разрабатывался OPC?
Мы согласны с этим, но только в отношении OPC-DA. К OPC-UA, которая выпущена в 2008 году и развивается сегодня этого нельзя применить, устаревшей её точно не назовешь.

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #5 : 09 Августа 2017, 09:21:02 »
Не. Это все хорошо, но в случае с OPC cкада получает переменную определенного типа. С MQTT "нечто", к чему надо писать обработчик, который из него уже получит кучку переменных. Так зачем этот обработчик должен быть частью скады? Я бы еще понял нечто типа бакнета, где вместе с этой кучей приходит заодно и ее структура. Тогда вообще не жизнь, а малина. Посему, как по мне, то логичной есть обработка данных на шлюзе MQTT - OPC с последующим отгребанием сортированных данных в скаду.

В принципе, как и с модбасом поступают. Некоторые скады имеют прямой драйвер модбаса, где есть тупо раздел точки МБ и их дальнейшая обработка. В конце-концов, я уже так пробовал с СС поступать. Питоновский МБ клиент/сервер пишет точки в файл, откуда их и выгребает скада. Ниче, работает, но зачем, если оказалось проще из ОРС их выгрести из того же файла и уже оттуда красивые/ровненькие переменные в скаду. Благо лектус очень удобен в данном плане.

Это я еще не начинал, что структура может изменится, и намного проще тот же JSON (мегабайта на 3) распарсить в питоне на отдельные переменные и их скормить скаде/ОРС чем изголяться средствами скады.

Serhioormano

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #6 : 09 Августа 2017, 14:10:30 »
Извините если я звучал грубо. Это я так как бы шуточный сарказм был. Я понял, здесь так не общаются. Буду акуратней.

По поводу типизирования я вообще не понимаю в чем проблема. Объявлем тег и на уровне скада выбираем тип. Скада проверит что данные в этом топике соотвествуют этому типу. Выбрали  числовой, значит будет минимум 0.

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

Технологии похожие на МКТТ или даже использующие МКТТ это совсем не то что сам МКТТ. Почему? Потому что если даже ОПС начнет использовать МКТТ для передачи данных, это все еще будет ОПС. А МКТТ это связующе звено IoT. Это значит что сегодня на рынке уже доступно тысячи разных товаров, всякие лампочки, розетки, датчики освещенности, и многое другое с поддержкой МКТТ и если реализовать этот протокол, то ты сразу становишься частью этого облака интернет вещей которые уже есть и которые можно сразуже подключать. То есть можно будет к скада подключить что угодно миную контроллер. Ведь в этом вишка МКТТ, что не нужно устройстов сервер, а вещи могут обдаться между собой. Если данными этого датчика пользуеются только один контактор, то возможно что просто только он может быть подписчиком этих данных а другим это вообще не нужно знать. Думаю понятно что МКТТ контакторов нет еще, это просто пример.

Напрпример как я уже упомянал есть AWS IoT и Azure IoT. Это облачные сервисы. Если реализовать МКТТ в чистом виде а не в виде ОПС, то эти сервисы можно будет использовать сразуже в щитаные минуты настроить архивирование данных, распределение, пост обработку, ...

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #7 : 09 Августа 2017, 16:13:24 »
Эмм... можете прикинуть здесь содержимое типичного топика которое должна "увидеть" скада, для системы газонополива в 10 зон, которые должны запускаться в определенное время, на х минут, в определенный день недели.

...
Бонусом для самого протокола учтите, что кроме скады еще есть визуализация контроллера и 2 панели, с которых могут задаваться те-же параметры одновременно.

...
А еще мне кажется что вы так и не поняли что такое ОРС вообще. ОРС, изначально, вовсе не протокол СВЯЗИ. Это внутренний протокол виндового DDE. Можете его представить себе как буфер обменна между двумя програмами(они могут быть и на разных компах). Собсно одна из них это скада(OPC клиент), вторая получает откуда-то, какие-то  данные(ОРС сервер) и передает их клиенту. Зачем так? Да просто чтобы отвязать клиента (скаду) от разборок куда и какие данные идут. А вот ОРС сервер имеет некие програмно-аппаратные интерфейсы зависимо от внешнега протокола  (DCom, MBus, Modbus, Lon, NQTT, Bacnet) и приводит их к ОРС виду.
« Изменён: 09 Августа 2017, 16:27:09 от Teodor »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #8 : 09 Августа 2017, 18:37:08 »
Serhioormano, мы понимаем о чем Вы говорите, но пока не видим причин (и подходящей реализации) по которым пользователи сейчас стали бы использовать MQTT средствами скада. Давайте для лучшего понимания рассмотрим следующую ситуацию... Допустим мы внедряем в Simple-Scada поддержку MQTT и у Вас появляется возможность подключиться к любому MQTT серверу, подписаться на любое количество тем, а также публиковать данные в любую тему средствами скада. После того как Вы подписались на тему скада начнёт принимать все данные, которые публикуются в этой теме. Мы для этого можем выделить, например, отдельный скрипт, который будет вызываться, когда в теме появились новые данные. Например кто-то опубликовал в теме сообщение "Привет мир!" и в скаде тут же будет вызван скрипт следующего вида:
Код
procedure OnPublish(ATopic, AData: string);
begin
  // здесь Вы можете как угодно обработать данные
end.

, где ATopic это название темы с которой пришли данные, а AData это сами данные. А если кто-то публикует в тему значение Температуры и Давления в виде такой JSON-строки:
Код
 '{ "temperature": 27, "pressure": 1 }';

, то нужно будет выполнить парсинг этой строки и полученную температуру вывести в поле температуры, а давление в поле давления. Т.е. обработка данных ложится на разработчика SCADA-проекта. Мы считаем, что по этой причине большинство пользователей откажутся от использования MQTT, особенно в больших проектах.

Тогда можно рассмотреть второй вариант: публиковать значение каждой отдельной переменной в отдельную тему. И мы будем знать, что в теме просто публикуются значения, например 5, 12, 2, 34 и т.д., их можно сразу использовать, без необходимости уникальной обработки, причем это можно реализовать на уровне скады. Пришло новое значение значение в тему, а скада взяла его и отобразила там где нужно. Но если для Вас такой подход подойдёт, то что скажут другие пользователи? Одним нужно будет получать не только значение, а "значение + отметка времени". Другим нужно будет "значение + качество переменной" и т.д.. А кто-то захочет то же самое, но в другой последовательности "качество переменной + значение". Такие данные скада автоматически распознать не сможет и подойдет только первый способ с "ручной" обработкой данных. В результате в скаде будет какой-то стандартный формат, который она может принять и автоматически рассортировать и нужно будет либо подстраиваться под него и не публиковать данные в другом формате, либо использовать "ручную" обработку. В такой ситуации пользователи действительно продолжат использовать стандарт OPC, который содержит всё необходимое (каждый OPC-тег несет в себе большое количество данных. Помимо, значения, отметки времени и качества это: тип данных, права доступа, частота опроса, описание, единицы измерения, четыре граничных значения, мертвая зона и т.д.) и в котором всё это грубо говоря "обрабатывается" автоматически.

Teodor

  • Старожил
  • ****
  • Сообщений: 256
    • Просмотр профиля
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #9 : 10 Августа 2017, 10:43:18 »
И тут же уточню. Вся эта куча данных генерится ОРС сервером из... Да из чего угодно, хоть MQTT (если оное предусмотрено автором).

Но я уже начинаю понимать что хотел сказать топикстартер. Скады типа WinCC, Honeywell (часто интерпритаторы) действительно вместо ОРС используют отдельные модули (обычно платные) для каждого отдельно взятого протокола. Например, в том-же MQTT можно ограничиться парсингом JSON по шаблону, но "на лету" НЕ менять структуру переменных. Разбирать по этому-же шаблону (да нужна древовидная структура переменных) и отдельный модуль для оного шаблона создания.

А теперь представим, что мы меняем/добавляем формат сообщения в существующей среде... Перестраиваем все дерево, правим все зависимости во всех скриптах... (у ханивела при удалении нода обрываются все связи с ним и ВСЕ. Куда они шли уже никогда не узнаешь.) А в случае с ОРС мы только правим зависимости нового дерева с старой структурой в ОРС и добавляем новые. В скаде меняем только то что объективно изменилось.

Просто в тех скадах роль ОРС исполняют драйвера... Здесь тоже можно так делать. Имея файловый интерфейс, внешний драйвер может читать что угодно, как угодно править, и складывать в бинарный файл определенного вида, откуда скада его может забирать. Хотя нет, файлами медленно, лучше через DDE/OLE/COM/DCOM... Надо же... Так ведь ОРС именно это и делает... Ура мы его опять изобрели...

Serhioormano

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #10 : 20 Августа 2017, 09:49:17 »
Ни понимаю почему не ввести новый тип данных JSON и просто парсить его и превращать в обхект. Допусти я подключился переменной sensor_1 к топику и там
Код
{ "temperature": 27, "pressure": 1 }
. Сделал это типом JSON и теперь могу указывать sensor_1.temerature. В реале это единственный тип данных который нужно добавить.

Все можно сделать средствами СКАДА. Добавил переменную JSON, и потом добавил под-переменные или свойства и определил их типы. Или можно сделать мета-JSON для такой переменной. Например.

Код
[{
   "name": "temperature",
   "type": "float",
   "sign": "C",
   "minimum": "30.2"
},{
   "name": "pressure",
   "type": "int",
   "sign": "Pa",
   "minimum": "120"
}]

JSON сам по себе уже стандарт. Свойсвто : Значение. Ведь не важно их очередность в документе. И потом если я отправляю данные в тему, то я не буду использовать JSON а просто отправлю чистые данные. JSON нужен для того что бы получать данные с устройств готовых уже сделаных производителям и там уже не поменяешь что ты хочешь получить. Он просто выдет тебе что прописано. В этом случае от все равно фиксированый.

Короче выход можно найти.

Цитировать
Эмм... можете прикинуть здесь содержимое типичного топика которое должна "увидеть" скада, для системы газонополива в 10 зон, которые должны запускаться в определенное время, на х минут, в определенный день недели.

О чем вы говорите? При чем тут 10 зон и ден недели? Это решает программа. MQTT это просто альтернатива передачи данных. И потом для ответа нужно понять кто, что передает. Зачем вообще ей что то видеть? Просто запустите полив на 10 зон раз в неделю, зачем вам что то принимать? Если вы хотите учитывать текущую влажность например, берете датчик влажности, подключаете к контроллеру, и с контроллера шлете эти данные в топик МКТТ а в скаде принимаете, и берете эти данные в расчет.

Цитировать
Бонусом для самого протокола учтите, что кроме скады еще есть визуализация контроллера и 2 панели, с которых могут задаваться те-же параметры одновременно.

Ну в этом и прелесь МКТТ. Если есть контроллер который например получает данные от датчика влажности, применяет фильтра, делает предварительно обсчет, и публикует в топик МКТТ, то и визуализиции, и скады, все смогут подписаться на этот топик, и если нужно изменить то и постить в этот топик.

Цитировать
А еще мне кажется что вы так и не поняли что такое ОРС вообще. ОРС, изначально, вовсе не протокол СВЯЗИ. Это внутренний протокол виндового DDE.
Как в не поймете. Мне все равно что это с технической точки зрения, протокол, буфер, поток, сокет или еще что. Мне вообще нет до этого дела с той перспективы с которой я говорю. Как ОПС решает технически совю задачу это не суть. Суть в том что МКТТ и ОПС решают одну и туже задачу. Они совершенно разные, но сделаны для одного и тогоже и занчит могут друг друга заменить. Это как поезд и самолет. Они вообще по разным средам передвигаются, по земле и по воздуху, разные технические решения, но решают оду и туже задачу, перемещать объекты в пространстве.

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

По этому ОБА имеют право на существование.

Я не говорю что нужно убрать ОПС. Да пользуйтесь вы ей на здоровье сколько хотите.

Моя идею в том что бы ДОБАВИТЬ МКТТ к тому что уже есть. Надесь моя позиция стала понятней. Пожалйста, не надо мне больше расказывать о том какой ОПС хороший. Я это знаю. Я согласен. Я им сам пользуюсь. Но сегодня мне этого мало. Мне нужно поддержка МКТТ.


Двайте я привиде пример почему. МКТТ кроме устрйоств еще можно использовать в приложениях. Например у меня вебсайт, я на сайте нажал кнопочку и отправил данные в тему, а тема взяла и выключила выход на контроллере. Как такое сделать с ОПС? Как мне из приложения, отправлять данные в ОПС Серевер если мое приложение размещено в облаке вообще? Ипользовать HTTP не всегда безопастно да и не всегда вобще допустимо по тойже причине.

Тоже самое и обратно. Допустим мой ПЛК, получил данные с термодатчика и оправил в топик, мой сайт сможет это прочесть и отобразить а так же скада, визуализация, другой контроллер или несколько конроллеров. Не только сайт. Например я пишу мобильное приложение, для умного дома.


Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #11 : 21 Августа 2017, 10:10:47 »
Цитировать
Ни понимаю почему не ввести новый тип данных JSON и просто парсить его и превращать в обхект.
Теперь мы с Вами, наконец, подошли к самой сути. Хоть тип, хоть процедуру для любой ручной обработки JSON строки, всё можем добавить. Представьте, что это все есть. Что дальше с этими данными нужно делать? Расставлять каждое значение по полям? Так, например:
Код
begin
  Field1.Text := sensor_1.temerature;
  Filed2.Text := sensor_1.pressure;
  Field3.Text := sensor_1.timestamp;
end.

Может быть это подойдёт для проектов на 200 тегов, но если тегов 1000 и больше, то разработка проекта превратится в написание таких расстановок. Без этого можно обойтись только если в каждую тему публиковать значение переменной и ничего лишнего (т.е. не использовать ту самую гибкость MQTT, а наоборот избавиться от неё) и сразу выводить это значение в связанные поля. Вы, возможно, так и сделаете. А остальные пользователи, у которых в тему данные публикуются в своём формате (а таких случаев, судя по всему, большинство), они должны использовать ручную расстановку?

Serhioormano

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #12 : 23 Августа 2017, 17:29:20 »
Не обязательно, просто при выборе переменной, будет еще одно вложение выбор свойства внутри переменной. Так что связал одно поле с сенсор.температура а другое с сенсор.влажность без всяких скриптов.

Но естественно если я к этой переменной из скрипта обращусь, то могу получить любое свойство.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #13 : 24 Августа 2017, 15:06:29 »
Цитировать
Не обязательно, просто при выборе переменной, будет еще одно вложение выбор свойства внутри переменной. Так что связал одно поле с сенсор.температура а другое с сенсор.влажность без всяких скриптов.
Когда проект уже работает, подключен к MQTT серверу и с сервера приходит JSON строка, то да, её можно разобрать и понять какие свойства она содержит. Но сначала этот проект нужно разработать в редакторе. А в редакторе нам ничего неизвестно о структуре JSON-строки, мы даже не подключены к MQTT-серверу. Чтобы узнать структуру нужно подключиться к MQTT серверу из редактора и дальше как-то получить информацию о тегах и структуре JSON-запросов. А т.к. MQTT это обычный сетевой протокол, то и передавать в скаду он может любую информацию как захочет пользователь. Кто-то может сделать отдельную тему в которую будет публиковать данные о тегах, чтобы скада могла её оттуда взять. Но только скада ничего не знает об этой теме и ничего не знает о структуре информации, которая публикуется в этой теме. Нет строгих требований к структуре любой передаваемой информации. Их и не должно быть, т.к. MQTT это сетевой протокол, а не единый для всех интерфейс как OPC.
« Изменён: 24 Августа 2017, 15:13:08 от Simple-Scada »

Serhioormano

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Re: OPC сервер под EtherNet/IP (плк WAGO 750-8202)
« Ответ #14 : 24 Августа 2017, 16:01:33 »
А в редакторе нам ничего неизвестно о структуре JSON-строки, мы даже не подключены к MQTT-серверу. Чтобы узнать структуру нужно подключиться к MQTT серверу из редактора и дальше как-то получить информацию о тегах и структуре JSON-запросов.

Да нет же!

Я же говорю, можно сделать отдельный праметер переменной для JSON это описание структуры можно пока просто в текстовом формате.

Код
[{
   "name": "temperature",
   "type": "float",
   "sign": "C",
   "minimum": "30.2"
},{
   "name": "pressure",
   "type": "int",
   "sign": "Pa",
   "minimum": "120"
}]

Допустим у меня есть кнопка AWS. Я знаю что она шлет в свой топик такой JSON.

Код
{
    "click": "SINGLE",
    "battery": "3654mv",
    "DSN": "GFD45J7GWE54K8"
}

Ну тогда мы создаем переменную aws_button, которая подключается к топику. Ведь с МКТТ одна переменная = один топик. Я знаю что мне придет вот такой JSON.

Теперь когда я привязываю переменную к объету я могу сам дописать свойство например aws_button.click тоже в скриптах.

Или можно разрешить выбор доступных свойств. В настроках этих переменных я вписываю в параметре структуры переменных

Код
[{
   "name": "click"
},{
   "name": "DSN",
   "type" : "string"
}]

И все а battery я не пиши потому что не буду это использовать. Теперь у меня будут доступны дополнительный выбор, выбрал свойство объекта переменная, раскрыл список, выбрал переменную, и новое это вышел подсписок с двумя свойствами click и DSN.