Пример - программирование системы управления автоматическим шлагбаумом

Начнем с постановки задачи. Будем выполнять работу небольшими и легкими в реализации частями. В зависимости от темпа работы, создание проекта с нуля займет от 30 до 60 минут.

Постановка задачи: Стрела шлагбаума имеет два конечных положения – полностью поднята (открыта) и полностью закрыта. Концевым датчикам соответствуют входы контроллера, которые мы поименуем как BarrierOpen и BarrierClosed.

Выходы контроллера BarrierUp и BarrierDown управляют двигателем подъема и опускания стрелы шлагбаума соответственно. Пользователь открывает, либо закрывает шлагбаум одной кнопкой (вход Action). Стрела либо поднимается, либо опускается, в зависимости от текущего положения. Нажатие кнопки при движении стрелы должно вызывать ее незамедлительную остановку.

Необходимо предусмотреть защиту. Движение должно быть остановлено при возникновении перегрузки привода (вход DriveOverload), например, при механическом заклинивании. Повторным нажатием кнопки управления пользователь также должен экстренно останавливать движение.

Контрольная лампа движения стрелы (Lamp) должна автоматически включаться в момент начала движения и выключаться через некоторое время после окончания движения. Должен вырабатываться флаг ошибки по перегрузке привода, а также, если процесс движения занимает недопустимо длительное время.

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