Панель СП310-Р выступает в качестве мастера Modbus TCP (адрес панели 172.16.0.100/24 шлюз 172.16.0.1).
Slave-устройство (172.16.0.11), статус связи экспортируются Конфигуратором СП300 во внутренние регистры панели (PSW256-259).
Опрос выполняется с помощью макроса 1 раз в секунду. Используется следующий код:
Код:
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;
}
Всё бы хорошо, но в статусе связи счетчик полученных ответов увеличивается, а счетчики неполученных ответов, ошибок и таймаутов всегда 0 даже если к панели НЕ подключен сетевой кабель.
При этом в PSB54 (Ошибка связи с TCP Slave 1) всегда 0, а приведенный макрос всегда возвращает TRUE.
Вопрос: что не так и как узнать статус связи?