97. Чтение и запись значения по Modbus с помощью одного элемента визуализации

แชร์
ฝัง

ความคิดเห็น • 32

  • @nikitagorkovenko6544
    @nikitagorkovenko6544 9 หลายเดือนก่อน +3

    Спасибо за интересное видео. Как всегда интересно и понятно. В качестве темы было бы интересно как реализовать режим Modbus Slave (Server) используя СИСТЕМНЫЕ библиотеки CODESYS. У вас имеется замечательный документ "Реализация нестандартных протоколов обмена", в котором подробно описано как реализовать обмен по нестандартному протоколу для контроллера в качестве Master, было бы интересно как из контроллера сделать Slave устройство как для нестандартного протокола, так и для Modbus. Хотя бы осветить основные принципы и алгоритм.

    • @CodesysOneLove
      @CodesysOneLove  9 หลายเดือนก่อน

      Про slave для нестандартного протокола - уже делал видео: th-cam.com/video/F_unaGOBC08/w-d-xo.htmlsi=VDM1xb_-doysRymH
      По поводу Modbus Slave - а зачем его писать вручную с помощью системных библиотек? Какой сценарий использования?

    • @nikitagorkovenko6544
      @nikitagorkovenko6544 9 หลายเดือนก่อน

      Спасибо за ссылку на видео с реализацией нестандартного протокола, когда контроллер выступает в качестве Slave. Много чего почерпнул для себя. Что касается Modbus Slave, то задача простая, разобраться как это реализовано и пробовать самостоятельно это реализовать для контроллера у которого нет поддержки "стандартной" библиотеки от CODESYS в виде "Modbus Serial Device" и не реализовано производителем контроллера в виде функциональных блоков типа "MB_RTU_SLAVE" из собственной библиотеки. Если для реализации Master есть представление какие библиотеки использовать (спасибо документу "Реализация нестандартных протоколов обмена"), то для Slave нет понимания как реализовать привязку переменных к адресам регистров (как формируется адресное пространство), как реализовано управление COM портом. Я предполагаю, что COM порт должен быть открыт и постоянно анализировать буфер порта на предмет кода функций Modbus в кадре и в зависимости от этого кода формировать ответ для Master устройства.

    • @CodesysOneLove
      @CodesysOneLove  9 หลายเดือนก่อน

      @@nikitagorkovenko6544 в целом, пример slave'а для нестандартного протокола можно использовать при реализации своего Modbus Slave. Что касается привязки переменных к регистрам - реализации могут быть разными. В наших библиотеках, например, все адресное пространство слэйва интерпретируется как ARRAY OF WORD, где каждый WORD соответствует одному регистру, а индекс массива - номеру регистра. Реализация собственного Modbus Slave является довольно непростой задачей; в данный момент у меня не получается придумать, как можно было бы её разумно реализовать в формате видео.

    • @nikitagorkovenko6544
      @nikitagorkovenko6544 9 หลายเดือนก่อน +1

      Спасибо, благодаря видео и вашим объяснениям теперь больше понимания. Надо пробовать!

  • @user-rz6lz5tf5x
    @user-rz6lz5tf5x 9 หลายเดือนก่อน +2

    Евгений как всегда на высоте. Коротко, понятно, и без мании величия, доходчиво объясняет даже для чайников. Так держать, молодец. У меня сейчас есть попытка связать по COM порту анеометр ТМ-710-МС по Modbus RTU с датчиком ветра ТМ-610-МС в Codesys. Вот если бы какое-то обучающее видео было как переводить пакеты в регистры в Codesys ну или вообще как работать с картами регистров, куда смотреть, в каком месте репку чесать и т.д., что бы получилась связь и считывание/запись данных, то был бы очень благодарен. Ну если время будет, конечно, на данную задачку.

    • @CodesysOneLove
      @CodesysOneLove  9 หลายเดือนก่อน

      Было видео про настройку обмена с произвольными устройствами: th-cam.com/video/Bd6HQKTjLn4/w-d-xo.htmlsi=6TuMmGrLduDgtd9O
      Там про Modbus TCP, но для Modbus RTU - всё аналогично.
      Если потребуется поддержка по опросу вашего прибора - напишите на e.kislov@owen.ru, пожалуйста.
      Главное, чтобы была документация с картой регистров.

    • @user-rz6lz5tf5x
      @user-rz6lz5tf5x 9 หลายเดือนก่อน

      @@CodesysOneLove Понял, благодарю. Да, карты регистров имеются. Попробую вначале сам, если будет туго, обязательно напишу.

  • @user-bv7qg2rd4j
    @user-bv7qg2rd4j 9 หลายเดือนก่อน

    Спасибо за очередное видео. Все как всегда четко и понятно. Слез с сименс перевожу проекты в CDS. Пока Modbus использую только для визуализации и редко для чтения измеренных параметров участвующих в регулировании. Хотелось бы данный протокол использовать и для управления, как по аналогии с Profibus, но у профибаса все четко, т.е. приборы "сцепляются", а в модбасе такого нет, ну не ответил прибор и ладно, понятно что можно накрутить диагностику и т.п. Предлагаю сделать видео создание некого ФБ в котором были бы реализованы механизмы и опроса и записи и диагностики по модбас какого либо прибора (механизма), с выдачей флага статуса и ошибки, расшифровка статуса и ошибки, с выводом информации о задержках чтения/записи и т.п. Лучше Вас это никто не сделает!

    • @CodesysOneLove
      @CodesysOneLove  9 หลายเดือนก่อน +1

      На тему Modbus было уже довольно видео. Вот о Modbus в CODESYS "в общем и целом":
      th-cam.com/video/-YsXmwY3t5s/w-d-xo.htmlsi=SSzMoPVz8VNGLZ5-
      Вот про диагностику:
      th-cam.com/video/IFUN4cYskRI/w-d-xo.htmlsi=xAUGC8_JegWDT-5d
      О "информации о задержках чтения/записи", правда, не было - Modbus вообще не подразумевает детерминированность, поэтому задержки тут нечто типичное.
      Я бы рекомендовал начать с упомянутых выше видео, а если после них останутся вопросы - напишите мне их на e.kislov@owen.ru, пожалуйста. Я понимаю, что настройка обмена вызывает много вопросов (особенно в первые разы), и, конечно, если среди них найдутся те, которые я еще не рассматривал - то постараюсь сделать о них видео.

  • @user-xk6vn3xp5c
    @user-xk6vn3xp5c 9 หลายเดือนก่อน +1

    Спасибо за видео. Как всегда интересно . В CDS очень мало стандартных шаблонов для создания визуализации, поэтому многие предпочитают другие SCADA системы, что не удобно, ведь приходиться копировать теги из CDS в SCADAи пр... Может у вы подскажите как подгрузить в CDS библиотеку для визуализации (клапана, двигатели, баки и пр.)

    • @CodesysOneLove
      @CodesysOneLove  9 หลายเดือนก่อน

      Вы правы, к сожалению, в визуализации CODESYS нет "технологических" элементов - клапанов, задвижек, труб и т. д. Единственный вариант - добавить в пул изображений проекта нужные картинки и отображать их в визуализации с помощью стандартных элементов Изображение или Переключатель изображений.

  • @tomas111video
    @tomas111video 9 หลายเดือนก่อน

    Спасибо за видео, узнал новый способ записи через OnValueChanger, Раньше я делал в коде по изменению, через визуализацию конечно это проще.
    Мне интересно в визуализации настраивать элемент потенциометра типом REAL с шагом допустим 0,5. При измении шкалы с 0 до 100, шаг был допустим по 5, если без настройки то выбирается значение 8.89745. Хотел бы понять как можно настраивать более стабильные значения 8,0 или 8,5 и 9,0. Возможно я что-то не досмотрел в настройках.

    • @CodesysOneLove
      @CodesysOneLove  9 หลายเดือนก่อน +1

      У потенциометра нет "дискретности перемещения" - так что, на мой взгляд, решить вашу задачу каким-то простоым способ не получится.

  • @user-jv8el3je9y
    @user-jv8el3je9y 9 หลายเดือนก่อน +1

    Спасибо за информативный ролик. Как раз в данный момент стоит аналогичная задача по изменению вставок в ТРМ138, но из MasterSCADA 3. Будут ли в этом случае существенные различия в реализации?

    • @CodesysOneLove
      @CodesysOneLove  9 หลายเดือนก่อน

      В вашем случае задача будет решаться встроенными средствами SCADA и OPC-сервера - так что всё получится даже проще.

    • @user-jv8el3je9y
      @user-jv8el3je9y 9 หลายเดือนก่อน

      ​@@CodesysOneLoveНе могли бы Вы дать направление работы.

    • @CodesysOneLove
      @CodesysOneLove  9 หลายเดือนก่อน

      @@user-jv8el3je9y Для начала я бы рекомендовал установить наш OPC-сервер (owen.ru/product/new_opc_server) и опросить ТРМ с помощью готового шаблона. Далее подключить OPC к SCADA по примеру из видео (там рассмотрен другой OPC, но это не влияет на показанный принцип):
      th-cam.com/video/GqJS8OALAOE/w-d-xo.htmlsi=OHPRrjNAxEKneCXl

  • @tomas111video
    @tomas111video 9 หลายเดือนก่อน

    У меня появился ещё один вопрос на будущее. Есть журнал аварий, при возникновении ошибки вылезло маленькое модальное окно на заданное время и/или по нажатию закрыть. Было бы полезно в некоторых проектах.

    • @CodesysOneLove
      @CodesysOneLove  9 หลายเดือนก่อน +1

      См. пример: ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/02_Visu/03_Additional/Example_AlarmMessageBox_3514v1.projectarchive

    • @tomas111video
      @tomas111video 9 หลายเดือนก่อน

      @@CodesysOneLove скачал открыл, в списке визуализаций только одна страница. Модальное окно?

    • @CodesysOneLove
      @CodesysOneLove  9 หลายเดือนก่อน +1

      @@tomas111video в качестве модального окна в примере использован диалог MessageBoxOwen из библиотеки OwenVisuDialogs. По аналогии можно вызвать свое диалоговое окно.

  • @redov_mihail
    @redov_mihail 9 หลายเดือนก่อน +1

    Здравствуйте. Вопрос не по теме: возможно ли часть кода как-то сворачивать, какие-либо скобки - а то лень мышкой перематывать и искать когда много кода. Понимаю, что можно сделать подпрограмму, но всё же может есть какой способ?

    • @CodesysOneLove
      @CodesysOneLove  9 หลายเดือนก่อน +1

      Добрый день. CODESYS автоматически расставляет кнопки "свертывания" блоков кода (см. "минус" в строке 3 на 10:13). Их также можно добавлять автоматические с помощью атрибута region: content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_pragma_region.html

    • @redov_mihail
      @redov_mihail 9 หลายเดือนก่อน +1

      @@CodesysOneLove Во, то что нужно, спасибо.

    • @mihail_redov
      @mihail_redov 8 หลายเดือนก่อน

      @@CodesysOneLove Евгений, а можете еще ответить на один вопрос - никак не найду точной информации. В ПЛК как осуществляется опрос нескольких слейв-устройств по poll time - устройства становятся в очередь или как - Если время разное, может произойти прерывание опроса одного устройства? Если в очередь, то ждет следующий опрос таймауты ошибки? И что будет если не успеет опросить все регистры за данное время? Есть какая-то зависимость между временем цикла программы и периодом опроса устройств - опрос идет независимо - Если минимальное время плк будет значительно превышать время опроса, то устройства опросятся несколько раз в течении одного цикла ПЛК?

    • @CodesysOneLove
      @CodesysOneLove  8 หลายเดือนก่อน +1

      @@mihail_redov добрый день. Для Modbus Serial опрос осуществляется по очереди. "Прерывания опроса" в общем случае не может произойдет.
      "И что будет если не успеет опросить все регистры за данное время" - будет задержка. Опросит так быстро, как сможет.
      Если время задачи будет превышать время опроса - то опрос будет работать некорректно (будет "тормозить").

    • @mihail_redov
      @mihail_redov 8 หลายเดือนก่อน

      ​ @CodesysOneLove Спасибо за просвещение😀 👍🧠💪

  • @mdvedhjr
    @mdvedhjr 2 หลายเดือนก่อน

    Здравствуйте. Спасибо за видео. Подскажите пожалуйста, на вход поступает word2, я преобразую его в real. А как перевести из real в word2? Почему-то OCL.REAL_TO_WORD2 не хочет работать, присваивание для входа отсуствует для параметра.

    • @CodesysOneLove
      @CodesysOneLove  2 หลายเดือนก่อน +1

      Добрый день. Обратите внимание, что REAL_TO_WORD2 - это функциональный блок, а не функция. Нужно сначала объявить его экземпляр, и только после этого вызвать этот экземпляр в программе с нужными аргументами.

    • @mdvedhjr
      @mdvedhjr 2 หลายเดือนก่อน

      @@CodesysOneLove спасибо большое! Достаточно этот блок объявить и присвоить его полю .rInput значение? Функциональный блок постоянно выполняется?

    • @CodesysOneLove
      @CodesysOneLove  2 หลายเดือนก่อน +1

      ​@@mdvedhjr Экземпляр функционального блока выполняется только в те моменты, когда он вызывается в вашем коде. Вызов - это когда появляются скобочки (проведите аналогию с функцией).