Здравствуйте. Настраиваю соединение скада системы ТМ и щитов управления вентиляцией VS 10-75 CG UPC от компании VTS group
Связь настроил через модуль расширения TCP/IP в ТМ подключил через протокол Modbus IP. по видеоуроку.
В щите управления имеется три группы параметров: ANALOG, DIGITAL, INTEGER. Так в скаде могу увидеть только ANALOG и INTEGER параметры.
Дело в том, что в описании на соединение по Modbus IP адреса регистров ANALOG и INTEGER различаются 1-122 и 5001-5201 соответственно.
а регистры DIGITAL имеют адреса 1-68 что совпадает с регистрами аналоговых значений. Имеется ли возможность обойти это перекрытие адресов?
для считывания аналоговых значений в стандартном протоколе есть выбор принятия байта или слова. А можно как-нибудь настроить на принятие бита данных? ведь регистры DIGITAL как раз имеют битовые значения.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В стандартном протоколе Modbus "для считывания аналоговых значений" отсутствует "выбор принятия байта или слова." Для считывания битовых значений по Modbus в Trace Mode 6 используются функции 1 или 2: Rout_Byte(1) – считать байт данных типа out или Rin_Byte(2) – считать байт данных типа in.
При правильном выборе функций пересечение адресов регистровых и битовых переменных не должно иметь значения.
Posted by Ilgeneer (Участник № / Member № 5896) on :
Спасибо за направление мысли,все получилось следующим образом:
данные DIGITAL имеют тип out, 1) при редактировании группы modbus установить размерность 1 бит, 2) указать соответствующий канал из описания, 3) Перетащив из слоя источников в узел проекта, каналы принимают тип HEX16. в каждом канале установить размерность 1 бит. 4)привязав каналы к аргументам экрана указать тип данных BOOL и указать атрибут канала в привязке - БИТ 1.
только поэкспериментировав получилось так, что достаточно только в привязке аргумента экрана указать БИТ 1.
так ли это и почему?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
По умолчанию в канал HEX16 функциями Rout_Byte(1) и Rin_Byte(2) считывается 1 байт. Если необходимо считать только 1 бит, надо задать этому каналу "Размерность в битах"=1.
Posted by oasafronov (Участник № / Member № 8846) on :
А если нужно считать 4 бита? В документации на прибор говориться: "Так как в составе прибора имеется только четыре ключа, адрес начального ключа и старший байт количества читаемых ключей всегда должны иметь нулевые значения. Младший байт количества читаемых ключей должен иметь значение 4 (по числу ключей, имеющихся в составе прибора). При несовпадении полей адреса начального ключа и количества читаемых ключей с указанными значениями прибор будет генерировать ответ ошибочной ситуации"
А в справке к каналу Hex 16 указано: "Размерность в битах – этот параметр задает число бит значения канала для некоторых операций по следующему закону: – 1 – 1 бит; – 2 – 2 бита; – 3-8 – 8 бит; – 9-16 – 16 бит. "
Т.е даже, если я поставлю размерность канала 4 бита, он все равно будет пытаться считать 8 и прибор вернет ошибку?
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
quote:Отправитель / Originally posted by oasafronov: А если нужно считать 4 бита?
Установите "Размерность битов = 4". В этом случае канал HEX16 с привязкой к modbus-функциям Rout_Byte(1) или Rin_Byte(2), считает ровно 4 бита.
Указанная цитата на Справочную Систему не относится к данному случаю.