Просмотр полной версии : Не работает битовый обмен ПР205 Slave + СП310 (Modbus TCP)
CEBKACooler
08.10.2026, 16:52
Скажу сразу, что обмен INT и Float работает нормально по Modbus, проблема только в битовом обращении.
Так как в ПР205 нет Coil, то писать туда можно только INT сетевые переменные.
Изначально я пробовал родным средствами в СП300 - переключатель выставлять нужный мне регистр и бит, но понял, что оно не работает (кстати почему, тоже дайте ответ).
Я начал писать через функциональную кнопку , по нажатию в PSW нужный бит в 1 и тут же вызывать макрос
WORD wValue = PSW[300];
Write(NET_0, 1, MODBUS_TCP_REG_4X, 17000, 0, TYPE_WORD, wValue);
По нажатию в PSW нужный бит в 0 и тут же вызывать этот же макрос.
И не работает. Было такое, что на 50 попыток, 2 раза установилось в 1, но не сбросилась на панели.
Пробовал подключать к modbus slave на ПК - все работает нормально с функциональной кнопкой, на ПР205 лажа какая то.
Что я делаю не так? а может есть какой то нормальный рабочий метод?
kondor3000
08.10.2026, 18:20
Чтение и запись бит через Маску бит в регистре 16384 90634
от 4х16384 бит 0 до 4х16384 бит 15, в эмуляции к сожалению не работает, только в панели.
В ПР упаковываете и распаковываете биты до 16 бит в одном регистре, как на скрине (на скрине биты с 0 по 2, далее по аналогии)
Макрос SelChgI из Менеджера компонентов
как и в пр200 не работают с COILS в режиме слейв
Как это с битами не работает?
В пр200 умножаем регистр на 16, получаем 0 бит регистра.
Что, в пр205 не так же?
CEBKACooler
09.10.2026, 08:21
В пр200 нет eth входа и modbus tcp. Вся проблема в том, что через цифровой ввод регистр прилетает в ПР205, а вот если я делаю через макрос, то ничего в него не приходит, хотя должно.
CEBKACooler
09.10.2026, 08:24
Распаковать не проблема на стороне ПР205. Проблема что он не записывается в нужный регистр, хотя должен, макрос 100% рабочий, потому что пишет в modbus slave на ПК.
kondor3000
09.10.2026, 09:23
В пр200 нет eth входа и modbus tcp. Вся проблема в том, что через цифровой ввод регистр прилетает в ПР205, а вот если я делаю через макрос, то ничего в него не приходит, хотя должно.
Все эксперименты с обменом надо делать на новом пустом проекте. Если вы добавили макрос в готовый проект,
то панель штатными средствами читает и записывает новый бит (число) в 10 раз чаще вашего макроса. Так работать не будет.
Спрашивается, нахрена вам макрос?
Мало того, этот бит (число) может перезаписываться из программы ПР, не известно как там сделано.
CEBKACooler
09.10.2026, 09:36
90637
Потому что вот так он не пишет. Я 2 года назад с ПЛК200 пробовал, тогда у меня тоже ничего не получилось побитово родными средствами писать
kondor3000
09.10.2026, 10:26
Потому что вот так он не пишет. Я 2 года назад с ПЛК200 пробовал, тогда у меня тоже ничего не получилось побитово родными средствами писать
Значит у вас в ПР не правильно настроено. Я написал как должно быть https://owen.ru/forum/showthread.php?t=43136&p=488969&viewfull=1#post488969
CEBKACooler
09.10.2026, 13:40
как распаковать я знаю. В сам регистр не пишется, там 0 всегда. Пр нормально настроен, INT пишется же обычный
kondor3000
09.10.2026, 13:46
как распаковать я знаю. В сам регистр не пишется, там 0 всегда. Пр нормально настроен, INT пишется же обычный
Если хотите разобраться, выложите простой пример, как вы делаете. Потому как если пишется регистр, то и Маска бит тоже должна писаться.
Записывая бит, фактически вы записываете число, соответствующее этому биту.
CEBKACooler
09.10.2026, 14:36
нашел затыку. ВО первых я брал за основу старый проект, он общался в несуществующие регистры и иза за этого тупила передача. А во вторых в самой кнопке стояла галка пароль. Он небыл введен, поэтому кнопка нажималась, но команда не улетала по модбасу. Такая фот фигня.
kondor3000
09.10.2026, 14:52
нашел затыку. ВО первых я брал за основу старый проект, он общался в несуществующие регистры и иза за этого тупила передача. А во вторых в самой кнопке стояла галка пароль. Он небыл введен, поэтому кнопка нажималась, но команда не улетала по модбасу. Такая фот фигня.
На будущее, когда настраиваете передачу Маски бит, ставьте рядом дисплей этого регистра. Сразу видно что и как передаётся.
Например в Codesys 3.5 17.3, переставлены байты и вместо 0 бита включается 8 бит. На дисплее вместо 1 появляется 256.
,,, в самой кнопке стояла галка пароль. Он небыл введен, поэтому кнопка нажималась, но команда не улетала по модбасу. Такая фот фигня.
На этот случай, когда элементы с паролем визуально ничего не делают, а только "пикают" при нажатии на них, в моей библиотеке есть ВСЕ стандартные элементы ввода с модифицированным механизмом парольного доступа - если доступ закрыт или не достаточный уровень введенного пароля, то появляются окна с предупреждением. https://owen.ru/forum/showthread.php?t=22915&p=477873&viewfull=1#post477873
https://owen.ru/forum/attachment.php?attachmentid=82271&d=1740765494
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot