Назад к блогу

Проектирование безопасного управления рецептами в Logix и PanelView

Архитектура рецептов с централизованным управлением для Logix и PanelView, разделяющая редактирование, проверку, хранение и активацию, при этом обеспечивающая соблюдение ограничений, управление вер...

Рецепт может изменять температуру, скорость, давление, время, движение и качество продукции без загрузки новой программы в контроллер. Поэтому данные рецептов имеют важное операционное значение, даже если хранятся в обычном массиве UDT Logix. Цель проектирования — не просто сохранять значения, а не допускать, чтобы неполные, устаревшие, несанкционированные или несовместимые значения становились активными.

Терминал PanelView Plus отображает управляемый рабочий процесс с рецептом Logix

Управляемый рабочий процесс отделяет редактирование оператором от значений, которые в данный момент управляют машиной.

Задайте для данных рецепта четыре отдельные роли

Используйте отдельные структуры для сохранённых рецептов, выбранного источника, редактируемой рабочей копии и активной копии процесса. HMI редактирует только рабочую копию. Запрос на сохранение проверяет эту рабочую копию и фиксирует её в выбранной записи хранилища. Отдельный запрос на активацию повторно выполняет проверку и переносит одну полностью утверждённую запись в активную структуру.

Такое разделение не позволяет каждому нажатию клавиши на HMI изменять действующую уставку. Оно также поддерживает отмену, сравнение, утверждение, откат и понятные сообщения для оператора. Активный рецепт остаётся неизменным, пока проверяется другой рецепт.

Оборудование PanelView представлено в коллекции Allen-Bradley PanelView, а платформы контроллеров доступны в разделе PLC и PAC Systems. Выбор оборудования не заменяет правила транзакций, реализованные в приложении.

Проектируйте UDT как управляемую запись

Объединяйте связанные технологические значения в UDT, чтобы хранение, сравнение и перенос выполнялись с использованием одной определённой структуры. Добавляйте метаданные: идентификатор рецепта, название, версию формата, код продукта, редакцию, время создания, время изменения, состояние допустимости и роль, ответственную за изменение. Рабочий статус следует хранить отдельно от структуры уставок, если его не нужно переносить вместе с рецептом.

Для каждого числового элемента указывайте инженерные единицы, допустимый диапазон и обоснование этого диапазона. Для дискретных режимов используйте ограниченные перечисления или проверяемые коды, а не произвольный текст. Значения по умолчанию задавайте только в тех случаях, когда они безопасны и имеют технический смысл.

Версия формата важна при обновлении программного обеспечения. Если в последующей программе контроллера добавляются поля или изменяются единицы измерения, старые записи необходимо отклонять или намеренно преобразовывать. Перенос старого двоичного формата в новый UDT без правила совместимости может создать внешне корректные, но ошибочные уставки.

Проверяйте взаимосвязи, а не только отдельные пределы

Проверка каждого поля по минимальному и максимальному значениям необходима, но недостаточна. Верхний предел должен оставаться выше нижнего. Время разгона должно соответствовать скорости и расстоянию. Длительности фаз должны укладываться в последовательность. Взаимоисключающие параметры нельзя включать одновременно. Скорость может быть допустимой для одного размера продукта и небезопасной для другой конфигурации оснастки.

Реализуйте проверку в логике контроллера, поскольку именно контроллер отвечает за реакцию процесса. HMI может повторять проверки для немедленной обратной связи, но не должен быть единственным уровнем контроля. Возвращайте конкретный код проверки и указывайте элемент или взаимосвязь, из-за которых произошла ошибка. Одного сообщения «Рецепт недействителен» недостаточно: обслуживающему персоналу придётся искать ошибку среди десятков значений.

Разделяйте предупреждение и отклонение. Предупреждение может требовать подтверждения или проверки руководителем, тогда как отклонённую запись нельзя сохранять или активировать. Никогда не позволяйте универсальной кнопке подтверждения обходить жёсткое ограничение оборудования или безопасности.

Используйте явную машину состояний транзакции

Мгновенные команды HMI могут быть пропущены, повторены или остаться активными после прерывания связи. Реализуйте последовательность запроса и подтверждения с номером транзакции. HMI записывает рабочие данные, увеличивает номер запроса и ожидает. Контроллер фиксирует стабильную копию, проверяет её, один раз выполняет запрошенное действие и возвращает тот же номер транзакции вместе с результатом и кодом ошибки.

Отклоняйте новый запрос, пока другая транзакция занята. Установите тайм-аут на HMI и храните результат в контроллере достаточно долго, чтобы оператор мог его прочитать. После восстановления связи HMI должен сравнивать номера транзакций, а не предполагать, что предыдущее сохранение завершилось ошибкой.

Контроллер должен переносить всю проверенную запись в одной определённой точке выполнения. Разрозненные операции копирования, управляемые отдельными условиями, могут создать смесь старых и новых значений. Если другая задача или канал связи может одновременно изменять данные, создайте стабильный снимок и убедитесь, что его последовательность не изменилась во время копирования.

Разделяйте сохранение и активацию

Сохранение записывает проверенную рабочую копию в хранилище. Активация изменяет значения, используемые процессом. Для этих действий нужны отдельные разрешения, сообщения и блокировки. Технику можно разрешить подготовить рецепт, не предоставляя ему права запускать его.

Определите условия, при которых активация разрешена: машина остановлена, цикл завершён, исполнительные механизмы находятся в безопасном состоянии, правильная оснастка подтверждена, критические неисправности отсутствуют, а у оператора есть необходимая роль. Если некоторые значения могут изменяться во время производства, явно перечислите их и управляйте их переносом. Не полагайтесь на память оператора в вопросе, какие поля можно изменять онлайн.

После активации возвращайте на HMI идентификатор и редакцию активного рецепта. Сравнивайте активную копию с утверждённым источником и выдавайте тревогу при неожиданном различии. Логика последующих последовательностей должна использовать только активную копию, а не рабочие теги HMI.

Соразмеряйте права и подтверждающие данные

Как минимум различайте действия просмотра, редактирования, сохранения, активации, удаления и восстановления. Ограничивайте удаление строже, чем выбор. Не используйте общие учётные данные там, где приложению требуется персональная ответственность. Если платформа поддерживает аудит, записывайте пользователя, время, действие, идентификатор рецепта, старую редакцию, новую редакцию и результат.

Контроллер также должен хранить операционные данные, не зависящие полностью от HMI: активный идентификатор, редакцию, последнюю транзакцию, результат проверки и время активации. Журналы HMI полезны, но могут быть утрачены при замене терминала или загрузке приложения.

Чётко определяйте ограничения. Обычная история рецептов машины автоматически не становится системой электронных записей для регулируемого производства. Если требуются подписи, защита от несанкционированных изменений, хранение или проверяемые журналы аудита, необходимо оценить всю архитектуру и процедуры.

Проектируйте поведение при включении питания и потере связи

Определите, какой рецепт становится активным после перезапуска контроллера, загрузки программы, восстановления памяти или замены HMI. Безусловная загрузка записи с индексом 0 может быть опасной. Энергонезависимые данные необходимо проверить перед использованием, включая версию формата и все взаимосвязи. Если подтвердить допустимость невозможно, переведите машину в определённое состояние и потребуйте выбора и подтверждения.

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

Проверяйте аварийные и ошибочные сценарии

При вводе в эксплуатацию проверьте обычное сохранение, недопустимое поле, недопустимую взаимосвязь, несанкционированное действие, повторное нажатие кнопки, прерывание сети во время переноса, перезапуск контроллера, перезапуск HMI, заполненное хранилище, удаление, откат и запись старого формата. Убедитесь, что ни один сценарий не создаёт смешанный активный рецепт.

Выполните проверку границ для каждого важного числового поля и проверьте единицы измерения на HMI и в контроллере. После переноса сравните все активные элементы. Запишите результаты и храните заведомо исправный рецепт вне резервной копии контроллера, чтобы восстановление не зависело от одного устройства.

Надёжная система рецептов делает предлагаемые изменения видимыми, проверяет их в контроллере, активирует одну полную редакцию в контролируемом состоянии и оставляет достаточно данных, чтобы восстановить последовательность событий. Такая дисциплина важнее того, начинается ли хранение с массива UDT или компонента рецептов HMI.

Оставить комментарий

Обратите внимание, комментарии должны быть одобрены перед публикацией.