Панель СП310-Р выступает в качестве мастера Modbus TCP (адрес панели 172.16.0.100/24 шлюз 172.16.0.1).
Slave-устройство (172.16.0.11), статус связи экспортируются Конфигуратором СП300 во внутренние регистры панели (PSW256-259).
Опрос выполняется с помощью макроса 1 раз в секунду. Используется следующий код:
Всё бы хорошо, но в статусе связи счетчик полученных ответов увеличивается, а счетчики неполученных ответов, ошибок и таймаутов всегда 0 даже если к панели НЕ подключен сетевой кабель.Код:typedef struct regs_entry_ { WORD addr; WORD count; void* tm; } regs_entry_t; BOOL tcpReadInputRegs(regs_entry_t entry) { static WORD regs[256]; if(Reads(NET_0, 1, MODBUS_TCP_REGS_3X, entry.addr, entry.count, ®s)) { memcpy(regs, entry.tm, 2*sizeof(entry.count)); return TRUE; } return FALSE; }
При этом в PSB54 (Ошибка связи с TCP Slave 1) всегда 0, а приведенный макрос всегда возвращает TRUE.
Вопрос: что не так и как узнать статус связи?




Ответить с цитированием