Процесс подтверждения событий в протоколе Modbus предназначен для гарантии доставки событий от устройства к мастеру. habr.com
Процесс происходит так: habr.com
- В пакете с событиями есть поле флага, который может быть 0 или 1. habr.com Слейвы (устройства, передающие события) в каждом пакете инвертируют этот флаг относительно предыдущего, отправленного ими же. habr.com Таким образом, не существует двух пакетов подряд от одного устройства с одинаковым значением флага. habr.com Флаги от разных устройств между собой не связаны. habr.com
- Когда мастер принял пакет с событиями, он отправляет в шину очередной широковещательный запрос событий и вкладывает в специальное место modbus-адрес устройства, которому нужно подтвердить событие и флаг из полученного пакета с событиями, которые он подтверждает. habr.com Если подтверждать нечего — мастер в пакете запроса событий в поле для modbus-адреса устройства просто указывает 0. habr.com
- Слейв, который в запросе событий увидел свой modbus-адрес и верный флаг, сбрасывает отправленные события и выходит на арбитраж с новыми. habr.com
- Если флаг пришёл неверный — он добавляет новые события к уже отправленным, выходит на арбитраж и после победы отправляет новый пакет с тем же флагом. habr.com
Для подтверждения событий существуют два варианта: автоматическое подтверждение и ручное подтверждение. inctin.com В автоматическом режиме чтение события одновременно является его подтверждением. inctin.com В ручном режиме необходимо записать специальную команду для подтверждения последнего события (установить значение 13-го бита в слове управления 400h). inctin.com