Добрый день! Есть у меня в программе канал флоат, связанный с сигналом от модуля аналогового ввода. У этого канала есть атрибут 52,FS(стр. 168, РП Т1). 9 бит этого байта Response показывает наличие ответа от модуля. 9 бит атрибута это 1 бит 2-го байта атрибута.
Проблема в том, что при считывании программой FS считывается только первый байт атрибута FS (ErCode), 2 байт байт не считывается. Пробовал уже считывать FS в программу и как UINT и как UDINT, не получается- читается только первый байт.
Как считать бит Response из атр, FS?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В силу асинхронности потоков обмена и потоков обработки каналов и программ бит Response может формироваться и сбрасываться между основными циклами. При редких запросах этот бит ловится и программами и каналами с большей вероятностью.
О качестве обмена надежно можно судить по признаку недостоверности, выставляемому в каждом канале, связанном с внешними устройствами.
Posted by Eman1982 (Участник № / Member № 5619) on :
Есть атрибут недостоверность 4,I. Возможные значения- аппаратная и программная недостоверность. Аппаратная недостоверность может быть из-за отсутствия связи, обрыва сигнала (0 мА на входе модуля) и по другим причинам. Как определить, что недостоверность вызвана именно отсутствием связи с модулем?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Расшифровка причины появления признака аппаратной недостоверности в общем случае осуществляется диагностическими переменными(например, @Net_Code, @e_M_LINK_Host, @e_DCS, @e_MODBUS, @e_PLC1Type, @e_PLC2Type, @e_TCP_ModBus, @e_OPC), которые возвращают код ошибки, зависящий от протокола, используемого в конкретном драйвере.