Просмотр полной версии : По битовое чтение/запись
Всем привет.
Не пинайте сильно, ну забыл как работать с Coil/Bool :confused:
Прошу вашей подсказки в настройке Конфигурации ПЛК. Суть вопроса: мне нужно прочитать - записать из/в девайс вот этот регистор: 0х0009 Coil RW. Создал в конфигураторе вот такое...
Но видимо я совсем обезумел :rolleyes:
kondor3000
25.01.2023, 15:34
Всем привет.
Не пинайте сильно, ну забыл как работать с Coil/Bool :confused:
Прошу вашей подсказки в настройке Конфигурации ПЛК. Суть вопроса: мне нужно прочитать - записать из/в девайс вот этот регистор: 0х0009 Coil RW. Создал в конфигураторе вот такое...
Но видимо я совсем обезумел :rolleyes:
Как все новички, вы думаете что достаточно только скрина с ПЛК, так вот этого не достаточно.
Надо название девайса с которого вы читаете и скрин из конфигуратора панели которую вы читаете. А так же скрин настроек RS 485 панели и ПЛК
Это диммер WB-LED, с помощью ПЛК 160 нужно опросить адрес 0х0009 Тип: Coil Формат: Bool. С остальными адресами проблем нет, за исключением Coil. Через OPC Lectus проблем нет, в вот в конфигураторе, залип.
Поэтому и прошу направить в нужную сторону, как правильно работать с типом Bool в Modbus (Master) RTU
Ссылка на железо https://wirenboard.com/wiki/WB-LED_Modbus_Registers
kondor3000
25.01.2023, 16:11
Тогда скрин с настройками Coil, адрес 0х0009 в OPC Lectus
А причем здесь ОРС, если речь идет об ПЛК?
6546465465
kondor3000
25.01.2023, 18:38
А причем здесь ОРС, если речь идет об ПЛК?
Попробуйте сделать так,
Для чтения, выкинуть всё и добавить только 2 штуки 8 Bit Input, первый адрес 0, второй адрес 8. Ваш 9 бит будет во втором 8 Bit Input (бит 1)65471
Для записи добавьте ещё UMD (Универсал Модбас девайс, с настройкой By Value Ghange) и в него 2 штуки 8 Bit Output, там те же адреса 0 и 8.
Заработает, хорошо, если нет придётся опрашивать биб-кой. Почему, поймёте при настройке функции записи 8 Bit Output.
Надеюсь остальные настройки, протокол, адрес слейва, скорости, чётности, стоп-бит проверять у вас не надо.
Николай Суриков
25.01.2023, 19:27
Причем надо в остальные биты при записи записывать состояние прочитанных битов, иначе в них будут писаться нули и не понятно к чему это приведет.
В конфигураторе нет функции 0х5 - запись единичного бита, так что лучше все сделать на библиотеке.
На сайте есть пример работы с ТРМ138 через библиотеку, и там как раз есть пример и функциональный блок записи единичного бита.
https://ftp.owen.ru/CoDeSys23/07_Examples/06_Owen/07_PLC1xx+TRM138_Modbus_Modbus_lib.zip
Ваш вариант не сработал.
А что за бибка? Я так полагаю, что это из библиотеки. Тог что именно?
Николай Суриков
25.01.2023, 19:47
Библиотека modbus.lib
Советую посетить эту страницу https://owen.ru/product/codesys_v2/libraries там и библиотека есть, и ее описание с примерами.
Попробуйте сделать так,
Для чтения, выкинуть всё и добавить только 2 штуки 8 Bit Input, первый адрес 0, второй адрес 8. Ваш 9 бит будет во втором 8 Bit Input (бит 1)65471
Для записи добавьте ещё UMD (Универсал Модбас девайс, с настройкой By Value Ghange) и в него 2 штуки 8 Bit Output, там те же адреса 0 и 8.
Заработает, хорошо, если нет придётся опрашивать биб-кой. Почему, поймёте при настройке функции записи 8 Bit Output.
Надеюсь остальные настройки, протокол, адрес слейва, скорости, чётности, стоп-бит проверять у вас не надо.
Ваш вариант не сработал.
А что за бибка? Я так полагаю, что это из библиотеки. Тог что именно?
kondor3000
25.01.2023, 21:47
Ваш вариант не сработал.
А что за бибка? Я так полагаю, что это из библиотеки. Тог что именно?
Вам же дали на 1 странице и ссылку на библиотеку и пример записи Coils через библиотеку. Пример конечно нужно адаптировать под себя.
Будут вопросы, выкладывайте адаптированный проект, выкладывать можно в расширенных настройках, добавить файл.
Или вопросы со скринами.
...а WirenBoard обожают Coils!
Я ща как раз этот самый WB-LED исследую и буду его к ПРке подключать.
Вроде как там достаточно только яркость в регистрах выставлять, а на Coils можно забить: они сами включатся.
То есть, если выставить яркость = 0, то диммер выключится, а если >0 - то включится и без Coil.
...а WirenBoard обожают Coils!
Я ща как раз этот самый WB-LED исследую и буду его к ПРке подключать.
Вроде как там достаточно только яркость в регистрах выставлять, а на Coils можно забить: они сами включатся.
То есть, если выставить яркость = 0, то диммер выключится, а если >0 - то включится и без Coil.
Можно оставить как вы и думаете, но не всегда так удобно. Поэтому буду допиливать этот Coil ;)
Можно оставить как вы и думаете, но не всегда так удобно. Поэтому буду допиливать этот Coil ;)
Тогда лучше через бибилотеку Modbus это делать, так как штатно CodeSys 2.3 Coil не поддерживает (что тут и писали).
Я хотел бы, пользуясь случаем, спросить:
1. Можно ли питать разные каналы этого WB-LED от разных блоков питания (вроде там только GND общий, а плюсы можно разные подавать)
2. Как используешь его (для RGBW, или объединяешь каналы, или вообще как один мощный диммер на один канал)? Вообще, есть ли опыт с ними? Нормальные они?
Тогда лучше через бибилотеку Modbus это делать, так как штатно CodeSys 2.3 Coil не поддерживает (что тут и писали).
Я хотел бы, пользуясь случаем, спросить:
1. Можно ли питать разные каналы этого WB-LED от разных блоков питания (вроде там только GND общий, а плюсы можно разные подавать)
2. Как используешь его (для RGBW, или объединяешь каналы, или вообще как один мощный диммер на один канал)? Вообще, есть ли опыт с ними? Нормальные они?
Толком и не скажу, потому как сам не так давно купил. Лента обыкновенная RGB, 5 метров.
Ленту с диммером запитал от одного блока питания. Все это купленное в "Чип и Дип".
Однако выбор функций в конфигурации для чтения и записи Coil присутствует. Можно, наверное, поопрашивать с ПЛК какой-нибудь симулятор модбас-слейва на ПК и посмотреть, какого вида запросы шлёт ПЛК при обращении к Coil.
У меня на ПРке завелось: 65492
Оказалось, что Coils важны.
И ещё, для бОльшей скорости работы, важно писать групповыми запросами. ПРка такое не умеет, а библиотека на ПЛК - да.
Я бы посоветовал всё же с библиотекой разобраться и написать FB-обёртку WB-LED, чтобы он сразу и управлял им, и регистры писал-читал.
так как штатно CodeSys 2.3 Coil не поддерживает (что тут и писали)..:
Поддерживает. Но ограничено))
У меня на ПРке завелось: 65492
Оказалось, что Coils важны.
И ещё, для бОльшей скорости работы, важно писать групповыми запросами. ПРка такое не умеет, а библиотека на ПЛК - да.
Я бы посоветовал всё же с библиотекой разобраться и написать FB-обёртку WB-LED, чтобы он сразу и управлял им, и регистры писал-читал.
Так может тогда покупать ПЛК с Codedy 3.5!? Там точно Bool работает..... :rolleyes:
kondor3000
26.01.2023, 19:12
Так может тогда покупать ПЛК с Codedy 3.5!? Там точно Bool работает..... :rolleyes:
Потратил 10 минут и переделал пример для чтения и записи битов. Функции 01 и 05, пример рабочий. Чтение Real тоже работает, только байты переставить. Даже на панели проверил.
Вы могли за 2 дня тоже пример исправить для себя.
Думаете в 3.5 легче будет ? )))
Так может тогда покупать ПЛК с Codedy 3.5!? Там точно Bool работает..... :rolleyes:
Зато Modbus медленнее в несколько раз, если работать с ним без библиотек.
А что это за метания такие? Мне показалось, что железо уже было выбрано начисто!
kondor3000 А что за пример-то был? Через библиотеки?
kondor3000
26.01.2023, 21:36
kondor3000 А что за пример-то был? Через библиотеки?
Да на 1 странице ссылка (пример работы с ТРМ138 через библиотеку), там чтение Real и запись бит 05 функцией, добавил чтение бит 01 функцией.
У меня на ПРке завелось: 65492
Оказалось, что Coils важны.
И ещё, для бОльшей скорости работы, важно писать групповыми запросами. ПРка такое не умеет, а библиотека на ПЛК - да.
Я бы посоветовал всё же с библиотекой разобраться и написать FB-обёртку WB-LED, чтобы он сразу и управлял им, и регистры писал-читал.
И так, мне удалось запустить диммер. Толи проблема была в описании карты регистров, толи в самом железе - "бяки", но не суть. Если создать один UMD и прописать только адрес прибора, а в нем два блока - 8 bit input и 8 bit out с регистром "3", то все работает как часы.
Как раз и получается, что адреса "9" и "10" соответствуют той таблице, что указана на сайте: https://wirenboard.com/wiki/WB-LED_Modbus_Registers
Да, и еще, подключив диммер к OPC Lectus, команды отправляются 5 или 15 функцией.
Помимо включения и выключения, адресом 10 меняется палитра RGB.
65497
kondor3000
26.01.2023, 22:43
И так, мне удалось запустить диммер. Толи проблема была в описании карты регистров, толи в самом железе - "бяки", но не суть. Если создать один UMD и прописать только адрес прибора, а в нем два блока - 8 bit input и 8 bit out с регистром "3", то все работает как часы.
Как раз и получается, что адреса "9" и "10" соответствуют той таблице, что указана на сайте: https://wirenboard.com/wiki/WB-LED_Modbus_Registers
Да, и еще, подключив диммер к OPC Lectus, команды отправляются 5 или 15 функцией.
Помимо включения и выключения, адресом 10 меняется палитра RGB.
Покажите скрин настроек UMD (Универсал Модбас девайс)
Если работает 15 (0х0f) функция, то работать должно и как написал на 1 странице тоже.
У Cs-Cs работает же на ПР и запись по изменению.
Покажите скрин настроек UMD (Универсал Модбас девайс)
Если работает 15 (0х0f) функция, то работать должно и как написал на 1 странице тоже.
У Cs-Cs работает же на ПР и запись по изменению.
Все по умолчанию....
65500
Потратил 10 минут и переделал пример для чтения и записи битов. Функции 01 и 05, пример рабочий. Чтение Real тоже работает, только байты переставить. Даже на панели проверил.
Вы могли за 2 дня тоже пример исправить для себя.
Думаете в 3.5 легче будет ? )))
Покажите теперь вы, что сделали?
kondor3000
27.01.2023, 08:38
Покажите теперь вы, что сделали?
Вы сами то начните что то делать и задавайте вопросы, выкладывайте сюда пример проекта.
Подсказка, в нулевом шаге CASE, вставил блок чтения бит, делается по нажатию F2, MB_RD_COILS, там же где запись MB_WR_SNG_COIL 65503
В PLC_PRG начиная с 8 шага изменил адреса записи бит.
kondor3000 Эй эй!! Я по изменению не делал! Это ж диммер: я решил, что пусть туда постоянно всё пишется!
bort992 Глянул какой-то скриншот... господи! Ну почему? Почему нельзя нормально именовать переменные? Почему нельзя сразу написать FB-обёртку для диммера на ST, чтобы код был понятны, а не выглядел как месиво квадратиков?...
И, кстати. У тебя блок питания пищит или нет? У меня пищит, и сильно. Тестирую на Mean Well серии HDR.
Вы сами то начните что то делать и задавайте вопросы, выкладывайте сюда пример проекта.
Подсказка, в нулевом шаге CASE, вставил блок чтения бит, MB_RD_COILS, там же где запись MB_WR_SNG_COIL
В PLC_PRG начиная с 8 шага изменил адреса записи бит.
Я вам про Ерему, а вы мне про Фому....
Покажите скрин с блоком MB_RD_COILS
kondor3000 Эй эй!! Я по изменению не делал! Это ж диммер: я решил, что пусть туда постоянно всё пишется!
bort992 Глянул какой-то скриншот... господи! Ну почему? Почему нельзя нормально именовать переменные? Почему нельзя сразу написать FB-обёртку для диммера на ST, чтобы код был понятны, а не выглядел как месиво квадратиков?...
И, кстати. У тебя блок питания пищит или нет? У меня пищит, и сильно. Тестирую на Mean Well серии HDR.
А что значит нормальное имя переменной?
Каждый в душе художник!!!!
Ну во-первых, это тестовый вариант.
А во-вторых, я давно работаю на cfc, да и проще просмотреть, чем мотать портянку ST. Ну не пошел ST.
Что касаемо блока питания, использую Mean Well серии MDR-100-12, работает стабильно. Повторюсь, он питает диммер с 5-ти метровой лентой. Сторонние звуки могут появиться от того, что мощность может быть недостаточной, как мне кажется.
А что значит нормальное имя переменной?
Каждый в душе художник!!!!
Ну во-первых, это тестовый вариант.
А во-вторых, я давно работаю на cfc, да и проще просмотреть, чем мотать портянку ST. Ну не пошел ST.
Что касаемо блока питания, использую Mean Well серии MDR-100-12, работает стабильно. Повторюсь, он питает диммер с 5-ти метровой лентой. Сторонние звуки могут появиться от того, что мощность может быть недостаточной, как мне кажется.
Про блок - спасибо! Учту, ага! Видимо, HDR пищит. Сегодня ещё тестану тоже на 5 метрах. Мощности у меня ща точно с запасом: я тестирую на блоке в 60 Ватт отрезок ленты в 30 см. Дешёвой самой ещё вдобавок =)
Виноват: на каком-то скриншоте увидел огрызки типа GS2.1 и выбесился.
kondor3000
27.01.2023, 15:40
Покажите скрин с блоком MB_RD_COILS
Скрин лежит с 8 часов 49 минут утра на предыдущей странице.
Скрин лежит с 8 часов 49 минут утра на предыдущей странице.
Слона и не заметил.
Спасибо.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot