Чувствительное к времени подтверждение связи между ПЛК и контроллером мотора

Я пытаюсь настроить квитирование между моим ПЛК (используя лестничную логику) и контроллером двигателя (используя VB). Я использую неявную связь, что означает, что ПЛК имеет несколько выходных регистров, в которые он может записывать данные, которые контроллер мотора видит как входные регистры. Точно так же у контроллера есть несколько выходных регистров, которые он может использовать для обратной записи, и ПЛК увидит их как входы. Важно отметить, что ни одно из устройств не может изменять регистры, которые оно считает входными.

Этот факт важен, потому что обычно ПЛК отправляет команду, устанавливая регистр равным 1, затем, когда контроллер мотора завершает эту команду, он устанавливает тот же регистр обратно в ноль, и процесс может повторяться. Но поскольку контроллер мотора не может обнулить тот же регистр, вместо этого он должен сигнализировать ПЛК с помощью другого регистра. В моем коде ПЛК у меня есть регистр «команды», возвращающийся к нулю, когда регистр «подтверждения» включен, но в зависимости от того, где находится код ПЛК в то время, он может просто снова выдать команду, прежде чем он проверит регистр «подтверждения». . В настоящее время, когда я даю команду на движение двигателя, он будет двигаться 3 или 6 раз.

Есть ли такой общий способ рукопожатия, когда используются два отдельных регистра?


person NickF    schedule 20.02.2015    source источник
comment
Ваш ПЛК должен выдавать команду на управление только тогда, когда сигнал взаимодействия переходит с 0 на 1. Просто определяется путем сохранения копии сигнала. Ваш код VB должен выдавать команду только тогда, когда он знает, что контроллер бездействует.   -  person Hans Passant    schedule 20.02.2015
comment
Добро пожаловать в удивительный мир событий, а не цикличности. Если это действительно срочная задача, то последнее, что вам следует использовать, — это VB. Почему вы не можете напрямую обмениваться данными между ПЛК и MC?   -  person The Blue Dog    schedule 20.02.2015


Ответы (1)


Не отправляйте команды как вкл/выкл, а как уникальный увеличивающийся номер версии. Получатель действует на каждое новое число только один раз. Сбросить на ноль после, например. день. Я использовал этот «протокол» снова и снова в управлении контейнерными кранами. Если получатель видел определенную версию, он возвращает номер для подтверждения. Поскольку все это отражает ход дел по разрыву квитанции входного билета и возврату (пронумерованного) билета, я назвал это «протоколом галочки и квитанции». Он безупречно работает на нескольких кранах уже 15 лет (и для многих других коммуникаций между несинхронизированными устройствами).

person Jacques de Hooge    schedule 06.08.2015