PDA

Просмотр полной версии : ПР200 + панель оператора KINCO GL070E, не читаются булевые переменные



Ronnie008
24.09.2024, 18:34
Всем здравствуйте. Может есть у кого опыт работы с ПР200 и панелями KINCO? Имеется ПР200 и панель GL070E, соединены по RS-485, используем MODBUS, ПР200 является мастером.
Связь настроена, ПР200 может считать из панели и записать в нее целочисленные и FLOAT переменные, тут все корректно работает, но записать или считать с панели переменные типа BOOL не выходит. Для теста в панели используются три булевых переключателя - ПУСК,СТОП,СБРОС (скриншот приложен), для каждого переключателя указан свой адрес, совпадающий с адресом в ПР200. Нажатие на переключатели на панели оператора не меняет состояние переменных в ПР200 ( Еще раз повторю с целочисленными значениями и FLOAT все работает - уставки, вводимые на панели оператора меняются в ПР200 корректно).
В среде разработки DTOOLS пробовал для переменных "ПУСК,СТОП,СБРОС" указывать разные типы регистров - LB, RB, LW.B, а затем через "НАСТРОЙКА ПЕРЕДАЧИ ДАННЫХ" настроил между ними передачу ( к примеру кнопку "ПУСК" в DTOOLS пишем в LB, затем передаем данные в RB, или в LW.B. и наоборот. Пробовал, кажется, все возможные варианты и комбинации, но ни один не работает).
Заменил ПР200 на ПЛК - все работает. Пробовал смещать адреса на +\- 1, не помогает.
Может кто то работает с таким оборудованием и уже нашел в чем проблема?

kondor3000
24.09.2024, 18:42
В среде разработки DTOOLS пробовал для переменных "ПУСК,СТОП,СБРОС" указывать разные типы регистров - LB, RB, LW.B, а затем через "НАСТРОЙКА ПЕРЕДАЧИ ДАННЫХ" настроил между ними передачу ( к примеру кнопку "ПУСК" в DTOOLS пишем в LB, затем передаем данные в RB, или в LW.B. и наоборот. Пробовал, кажется, все возможные варианты и комбинации, но ни один не работает).
Заменил ПР200 на ПЛК - все работает. Пробовал смещать адреса на +\- 1, не помогает.
Может кто то работает с таким оборудованием и уже нашел в чем проблема?

Много написали и ни одного скрина как настроена панель. Всмысле есть ли смещение по адресам +1 ?

Для панели слейва у вас смещение +1 к адресу 78862
Для регистра в ПР 533 бит 0, в панели LW.B 534.0
Вообще по хорошему, надо биты упаковывать в Маски бит по 16 штук, и передавать только регистры. Тогда вместо 16 отдельных запросов, будет 1 запрос.
ПР мастер не умеет работать с группой регистров, поэтому надо упаковывать биты для ускорения опроса.

Чтобы не путаться для панели Мастера надо делать протокол Модбас RTU (Zero Adress), смещения не будет.
Для панели мастера 4хBit 533.0

Ronnie008
25.09.2024, 08:50
Приложил скрины с настройкой, я так пробовал и не работает, 534 адрес в панели, в ПР200 на всякий случай смотрю 534, 533 и 535 (бит 0) адреса, при нажатии пуск значения переменных по этим адресам не меняется.

Ronnie008
25.09.2024, 09:39
ПЛК не овеновский был, другой производитель, в том ПЛК ставил те же 534, 533 и 535 и все работает, целочисленные, булевые, float - переменные все читается и записывается.

Ronnie008
25.09.2024, 10:01
Да пофиг наверно. В том ПЛК для битовых задается адрес бита или адрес регистра + смещение бита?
Я к тому что в модбасе для булей просто адрес бита, а ПР-ные 535 читаются (пытаются) с 8530

В том плк задается адрес регистра и все.

kondor3000
25.09.2024, 10:19
Приложил скрины с настройкой, я так пробовал и не работает, 534 адрес в панели, в ПР200 на всякий случай смотрю 534, 533 и 535 (бит 0) адреса, при нажатии пуск значения переменных по этим адресам не меняется.

У вас на первом скрине приём с правильного бита LW.B 534.0, а запись из другого LB 534. Это уже не правильно. Номер бита считается так:
533*16=8528 это 0 бит в 533 регистре
534*16=8544 это 0 бит в 534 регистре

С ваших слов у вас целочисленные передаются.
Упаковываете биты в тот же регистр и передаёте, записываете целочисленное. Всё!
Включение 0 бита даёт в регистре 1, 1 бита -2, 2 бита - 4, 3 бита - 8 и т. д.

Ronnie008
25.09.2024, 10:24
У вас на первом скрине приём с правильного бита LW.B 534.0, а запись из другого LB 534. Это уже не правильно.

С ваших слов у вас целочисленные передаются.
Упаковываете биты в тот же регистр и передаёте, записываете целочисленное. Всё!
Да этот вариант рассматриваю, но хотелось бы все таки разобраться именно с передачей BOOL значений.

kondor3000
25.09.2024, 10:53
Да этот вариант рассматриваю, но хотелось бы все таки разобраться именно с передачей BOOL значений.

Номер бита считается так:
533*16=8528 это 0 бит в 533 регистре
534*16=8544 это 0 бит в 534 регистре
Тиражируете линейку битов для 2- 3 регистров и смотрите в какой прилетит включение.

Ronnie008
25.09.2024, 11:04
Номер бита считается так:
533*16=8528 это 0 бит в 533 регистре
534*16=8544 это 0 бит в 534 регистре
Тиражируете линейку битов для 2- 3 регистров и смотрите в какой прилетит включение.

Да вот теперь работает, спасибо Вам огромное. 533 прилетает в 533*16