PDA

Просмотр полной версии : По битовое чтение/запись



bort992
25.01.2023, 15:12
Всем привет.
Не пинайте сильно, ну забыл как работать с Coil/Bool :confused:
Прошу вашей подсказки в настройке Конфигурации ПЛК. Суть вопроса: мне нужно прочитать - записать из/в девайс вот этот регистор: 0х0009 Coil RW. Создал в конфигураторе вот такое...
Но видимо я совсем обезумел :rolleyes:

kondor3000
25.01.2023, 15:34
Всем привет.
Не пинайте сильно, ну забыл как работать с Coil/Bool :confused:
Прошу вашей подсказки в настройке Конфигурации ПЛК. Суть вопроса: мне нужно прочитать - записать из/в девайс вот этот регистор: 0х0009 Coil RW. Создал в конфигураторе вот такое...
Но видимо я совсем обезумел :rolleyes:

Как все новички, вы думаете что достаточно только скрина с ПЛК, так вот этого не достаточно.
Надо название девайса с которого вы читаете и скрин из конфигуратора панели которую вы читаете. А так же скрин настроек RS 485 панели и ПЛК

bort992
25.01.2023, 15:58
Это диммер 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

bort992
25.01.2023, 16:34
А причем здесь ОРС, если речь идет об ПЛК?
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

bort992
25.01.2023, 19:43
Ваш вариант не сработал.
А что за бибка? Я так полагаю, что это из библиотеки. Тог что именно?

bort992
25.01.2023, 19:45
Не так получилось

Николай Суриков
25.01.2023, 19:47
Библиотека modbus.lib
Советую посетить эту страницу https://owen.ru/product/codesys_v2/libraries там и библиотека есть, и ее описание с примерами.

bort992
25.01.2023, 19:47
Попробуйте сделать так,
Для чтения, выкинуть всё и добавить только 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 через библиотеку. Пример конечно нужно адаптировать под себя.
Будут вопросы, выкладывайте адаптированный проект, выкладывать можно в расширенных настройках, добавить файл.
Или вопросы со скринами.

Cs-Cs
25.01.2023, 21:56
...а WirenBoard обожают Coils!
Я ща как раз этот самый WB-LED исследую и буду его к ПРке подключать.
Вроде как там достаточно только яркость в регистрах выставлять, а на Coils можно забить: они сами включатся.
То есть, если выставить яркость = 0, то диммер выключится, а если >0 - то включится и без Coil.

bort992
26.01.2023, 09:02
...а WirenBoard обожают Coils!
Я ща как раз этот самый WB-LED исследую и буду его к ПРке подключать.
Вроде как там достаточно только яркость в регистрах выставлять, а на Coils можно забить: они сами включатся.
То есть, если выставить яркость = 0, то диммер выключится, а если >0 - то включится и без Coil.

Можно оставить как вы и думаете, но не всегда так удобно. Поэтому буду допиливать этот Coil ;)

Cs-Cs
26.01.2023, 10:30
Можно оставить как вы и думаете, но не всегда так удобно. Поэтому буду допиливать этот Coil ;)
Тогда лучше через бибилотеку Modbus это делать, так как штатно CodeSys 2.3 Coil не поддерживает (что тут и писали).
Я хотел бы, пользуясь случаем, спросить:
1. Можно ли питать разные каналы этого WB-LED от разных блоков питания (вроде там только GND общий, а плюсы можно разные подавать)
2. Как используешь его (для RGBW, или объединяешь каналы, или вообще как один мощный диммер на один канал)? Вообще, есть ли опыт с ними? Нормальные они?

bort992
26.01.2023, 11:47
Опять повторение.

bort992
26.01.2023, 11:59
Тогда лучше через бибилотеку Modbus это делать, так как штатно CodeSys 2.3 Coil не поддерживает (что тут и писали).
Я хотел бы, пользуясь случаем, спросить:
1. Можно ли питать разные каналы этого WB-LED от разных блоков питания (вроде там только GND общий, а плюсы можно разные подавать)
2. Как используешь его (для RGBW, или объединяешь каналы, или вообще как один мощный диммер на один канал)? Вообще, есть ли опыт с ними? Нормальные они?

Толком и не скажу, потому как сам не так давно купил. Лента обыкновенная RGB, 5 метров.
Ленту с диммером запитал от одного блока питания. Все это купленное в "Чип и Дип".

1exan
26.01.2023, 12:13
Однако выбор функций в конфигурации для чтения и записи Coil присутствует. Можно, наверное, поопрашивать с ПЛК какой-нибудь симулятор модбас-слейва на ПК и посмотреть, какого вида запросы шлёт ПЛК при обращении к Coil.

Cs-Cs
26.01.2023, 13:42
У меня на ПРке завелось: 65492

Оказалось, что Coils важны.
И ещё, для бОльшей скорости работы, важно писать групповыми запросами. ПРка такое не умеет, а библиотека на ПЛК - да.
Я бы посоветовал всё же с библиотекой разобраться и написать FB-обёртку WB-LED, чтобы он сразу и управлял им, и регистры писал-читал.

Валенок
26.01.2023, 14:09
так как штатно CodeSys 2.3 Coil не поддерживает (что тут и писали)..:
Поддерживает. Но ограничено))

bort992
26.01.2023, 18:49
У меня на ПРке завелось: 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 легче будет ? )))

Cs-Cs
26.01.2023, 19:59
Так может тогда покупать ПЛК с Codedy 3.5!? Там точно Bool работает..... :rolleyes:
Зато Modbus медленнее в несколько раз, если работать с ним без библиотек.
А что это за метания такие? Мне показалось, что железо уже было выбрано начисто!

kondor3000 А что за пример-то был? Через библиотеки?

kondor3000
26.01.2023, 21:36
kondor3000 А что за пример-то был? Через библиотеки?

Да на 1 странице ссылка (пример работы с ТРМ138 через библиотеку), там чтение Real и запись бит 05 функцией, добавил чтение бит 01 функцией.

bort992
26.01.2023, 22:12
У меня на ПРке завелось: 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 работает же на ПР и запись по изменению.

bort992
26.01.2023, 23:08
Покажите скрин настроек UMD (Универсал Модбас девайс)
Если работает 15 (0х0f) функция, то работать должно и как написал на 1 странице тоже.
У Cs-Cs работает же на ПР и запись по изменению.

Все по умолчанию....

65500

bort992
27.01.2023, 00:26
Потратил 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 шага изменил адреса записи бит.

Cs-Cs
27.01.2023, 08:46
kondor3000 Эй эй!! Я по изменению не делал! Это ж диммер: я решил, что пусть туда постоянно всё пишется!
bort992 Глянул какой-то скриншот... господи! Ну почему? Почему нельзя нормально именовать переменные? Почему нельзя сразу написать FB-обёртку для диммера на ST, чтобы код был понятны, а не выглядел как месиво квадратиков?...
И, кстати. У тебя блок питания пищит или нет? У меня пищит, и сильно. Тестирую на Mean Well серии HDR.

bort992
27.01.2023, 08:47
Вы сами то начните что то делать и задавайте вопросы, выкладывайте сюда пример проекта.
Подсказка, в нулевом шаге CASE, вставил блок чтения бит, MB_RD_COILS, там же где запись MB_WR_SNG_COIL
В PLC_PRG начиная с 8 шага изменил адреса записи бит.

Я вам про Ерему, а вы мне про Фому....
Покажите скрин с блоком MB_RD_COILS

bort992
27.01.2023, 09:22
kondor3000 Эй эй!! Я по изменению не делал! Это ж диммер: я решил, что пусть туда постоянно всё пишется!
bort992 Глянул какой-то скриншот... господи! Ну почему? Почему нельзя нормально именовать переменные? Почему нельзя сразу написать FB-обёртку для диммера на ST, чтобы код был понятны, а не выглядел как месиво квадратиков?...
И, кстати. У тебя блок питания пищит или нет? У меня пищит, и сильно. Тестирую на Mean Well серии HDR.

А что значит нормальное имя переменной?
Каждый в душе художник!!!!
Ну во-первых, это тестовый вариант.
А во-вторых, я давно работаю на cfc, да и проще просмотреть, чем мотать портянку ST. Ну не пошел ST.
Что касаемо блока питания, использую Mean Well серии MDR-100-12, работает стабильно. Повторюсь, он питает диммер с 5-ти метровой лентой. Сторонние звуки могут появиться от того, что мощность может быть недостаточной, как мне кажется.

Cs-Cs
27.01.2023, 09:57
А что значит нормальное имя переменной?
Каждый в душе художник!!!!
Ну во-первых, это тестовый вариант.
А во-вторых, я давно работаю на 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 минут утра на предыдущей странице.

bort992
27.01.2023, 17:01
Скрин лежит с 8 часов 49 минут утра на предыдущей странице.

Слона и не заметил.
Спасибо.