Добрый день!
Панель мастер, ПЛК - слейв.
Макрос панели SyncTime, который читает дату из ПЛК. По мотивам документа "Панели оператора СП3хх-Р. Синхронизация времени с ПЛК" с сайта https://owen.ru/
Код:
BOOL bUpdate = FALSE;
WORD awVar[12];
Read(NET_0, 1, MODBUS_TCP_BIT_0X, 1300, 0, TYPE_BIT, &bUpdate);
if (bUpdate)
{
Reads(NET_0, 1, MODBUS_TCP_REGS_3X, 4310, 12, &awVar);
for ( i = 0; i < 6; i++ )
{
PSW[300+i] = DEC_TO_BCD(awVar[i*2]); // Debug - чтобы вывести на экран что именно будет писаться в регистр PSW[220]
PSW[220] = DEC_TO_BCD(awVar[i*2]);
WriteBitInReg(221, 0+i, TRUE, TYPE_PSW);
Delay(200);
WriteBitInReg(221, 0+i, FALSE, TYPE_PSW);
}
Write(NET_0, 1, MODBUS_TCP_BIT_0X, 1300, 0, TYPE_BIT, 0);
}
Функции DEC_TO_BCD и WriteBitInReg в глобальном макросе - копипаст из того же документа "Панели оператора СП3хх-Р. Синхронизация времени с ПЛК".
Прочитали из ПЛК: 2024-12-21 5:16:12
конвертировали в BCD: 8228-18-33 5:22:18
смотрим на экране:
2025-05-22_17-39-21.png
Системное время панели не поменялось:
2025-05-22_17-39-43.png
В чем ошибка?