Просмотр полной версии : передача по Modbus TCP данных из ПЛК200 в СП300-Р
Icm_Elen
06.08.2025, 16:18
Здравствуйте!
Есть задача - оценить значения, полученные с датчиков и в панели цветом посветить результат - годен/брак (красный/белый).
В программе создала массив res:ARRAY [0..5] OF BOOL, в котором сохраняю результат проверки от каждого датчика. Настроила передачу по Modbus TCP этого массива в панель (панель - Master, ПЛК - Slave). В Панели организовала соответственно 6 индикаторов. Но при работе наблюдается следующее : либо все значения подсвечиваются годными либо все бракованными, хотя в проекте показывает, что значения в массиве res - разные. Скрины прилагаю.
Подскажите, пожалуйста, в чем может быть проблема.
85205
85206
85207
МихаилГл
06.08.2025, 16:23
Сильно обрезали контроллерный скрин. Непонятно в какую область памяти вы их записываете...
Icm_Elen
06.08.2025, 16:35
Вот весь скрин
85208
P.S. Еще ошиблась в названии темы - панель СП307-Р
МихаилГл
06.08.2025, 16:42
307 или 310, это не существенно...
А на странице конфигурации вы эти области случаем не объединили? Не работал с областью входов, только через холдинг и инпут регистры. Может не та функция, может 2 надо, а не 1... Или какая там...
Щас кто нибудь ответит более адекватный)
kondor3000
06.08.2025, 22:20
Подскажите, пожалуйста, в чем может быть проблема.
У Овена биты и регистры наложены друг на друга, поэтому если у вас регистры с 0, то и биты с 0. Одним регистром
можно передать до 16 бит (с 0 по 15)
Нет смысла делать биты отдельно, выделите любой регистр, назовите Mask и в программе упакуйте (распакуйте) из него биты.
Упаковка и распаковка бит из Маски бит через точку.
Например: Упаковка Mask.0:=b_0; Mask.1:=b_1; и т. д. до 15 бита
Распаковка b0:=Mask1.0; b1:=Mask1.1; и т. д.
Также надо помнить, что 0 бит попадёт на 8, а 8 на 0 бит, то есть байты переставлены.
Пример слейва со 125 регистра 85211
На скрине регистры начинаются со 125 регистра или 2000 бита
(125*16=2000 - адрес бита)
МихаилГл
07.08.2025, 04:33
У Овена биты и регистры наложены друг на друга...
Вроде только если отмечена галочка, самая нижняя которая на вашем скрине...
kondor3000
07.08.2025, 08:23
Вроде только если отмечена галочка, самая нижняя которая на вашем скрине...
Она для другого, там прямо написано, для чего
Icm_Elen
07.08.2025, 08:56
У Овена биты и регистры наложены друг на друга ...
Спасибо за помощь. Я, конечно, не до конца все поняла, но решила воспользоваться вашим советом про биты в регистре. В итоге реализовала (см. скрины) и все заработало. Но если честно, до конца так и не поняла - почему заработало. Может сможете мне пояснить.
85213852148521585216
kondor3000
07.08.2025, 09:22
Спасибо за помощь. Я, конечно, не до конца все поняла, но решила воспользоваться вашим советом про биты в регистре. В итоге реализовала (см. скрины) и все заработало. Но если честно, до конца так и не поняла - почему заработало. Может сможете мне пояснить.
85213852148521585216
Вы сделали не как писал, а по своему, то есть использовали дополнительные биты в ПЛК,
а не работало вероятно, из-за отсутствия присвоения бит в программе.
У данного варианта есть несколько минусов:
1) Надо проверять, не будут ли включения бит влиять на основные регистры.
2) Время обмена увеличится из-за наличия дополнительных бит.
In_Da_Cher_A
07.08.2025, 10:34
а не работало вероятно, из-за отсутствия присвоения бит в программеприсвоение то как раз было,
либо все значения подсвечиваются годными либо все бракованными, хотя в проекте показывает, что значения в массиве res - разные. но сразу на всё
... Я, конечно, не до конца все поняла, но решила воспользоваться вашим советом про биты в регистре. В итоге реализовала (см. скрины) и все заработало. Но если честно, до конца так и не поняла - почему заработало. Может сможете мне пояснить.
потому что
массив res:ARRAY [0..5] OF BOOL
если его переслать как есть, это 3 регистра в которых панель трогает 0-й и 8-й биты каждого регистра.
Главное нормально к ним привязаться. А какой-либо вменяемой разницы не будет - хоть пакуй хоть так. Надобность в паковке появляется при значительном кол-во битов - когда счет идет на сотни. А тут - ниочём.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot