Организуйте процесс таким образом, чтобы обеспечить проверку достоверности путем перекрестной проверки различных измерений.  Существуют различные способы проверки измерений на достоверность:  a) Сравнение интегралов и независимых от времени измерений Проверка достоверности может быть выполнена путем интегрирования или дифференцирования зависящих от времени значений в течение определенного периода и их последующего сравнения с независимыми от времени измерениями.  b) Сравнение измерений от разных источников Измерение одного и того же параметра разными способами также хороший вариант. Разные источники измерений не обязательно должны быть разными физическими датчиками, но также могут означать альтернативные каналы связи (см. Примеры).  a) Сравнение интеграла и независимых от времени измерений  Дозирующий насос и указатель уровня в баке: изменение объема должно соответствовать суммарному расходу. Нагреватель в бойлере: потраченная энергия должна соответствовать повышению температуры.  b) Сравнение измерений от разных источников  Использование скорости полета, искусственного горизонта, вертикальной скорости и высоты в самолете для измерения набора высоты/снижения самолета.  Сравнение значений параметров процесса от независимых источников данных с данными SCADA (поступающими “обычным” способом через ПЛК и HMI). Оповещение об отклонении получаемых значений.  Облегчается мониторинг за манипуляциями с измерениями (при условии, что не все данные подделываются). Предотвращает или определяет поврежденные/неправильные измерения в качестве входных данных. Возможность быстрее выявить возможные физические причины сбоев. Убедитесь, что операторы могут вводить только то, что практически или физически осуществимо в процессе. Установите таймеры для операций на время, которое они должны физически занять. Подумайте о том, чтобы предупреждать о наличии отклонений. Предупреждайте о незапланированных бездействиях.  a) Мониторинг ожидаемой физической продолжительности Если операция занимает больше времени, чем ожидалось, чтобы перейти от одного состояния к другому, сделайте оповещение. Если действие или переход происходит слишком быстро, то это тоже заслуживает оповещения.   Простым решением было бы оповещение о таймауте шага. Это было бы полезно для последовательных процессов. Например, шаг “переместить объект из пункта А в пункт В” занимает 5 секунд с момента начала шага и до тех пор, пока не будет выполнено условие перехода (датчик: объект прибыл в пункт В).  Если условие выполняется значительно раньше или с большим опозданием, то следует выдать оповещение.  b) Мониторинг регулярной физической активности Проверка физической достоверности может означать предупреждение о бездействии: если ожидается регулярный повторяющийся цикл событий (например синхроимпульсы, суточные отчёты), таймер бездействия будет предупреждать, если ожидаемое событие не происходит слишком долго.  a) Мониторинг ожидаемой физической продолжительности  Воротам на плотине требуется определенное время, чтобы перейти от полностью закрытых к полностью открытым В канализационной системе для заполнения колодца требуется определенное время  b) Мониторинг регулярной физической активности  Производственный процесс или дозирование трубопроводов должны регулярно переключаться между диапазонами регулирования или режимами работы.  Муниципальные очистные сооружения сточных вод, как правило, имеют суточный цикл активности расхода потока.  c) Ограничьте ввод оператора значениями, которые практически и физически возможны.  например, случай Олдсмара во Флориде допускал ввод данных оператором, которые были в тысячи раз больше, чем обычно требовалось или были физически невозможны. Попробуйте настроить рабочие ограничения в коде ПЛК везде, где это возможно, совместно с использованием ограничения ввода на HMI.  Отклонения могут указывать на то, что кто-то пытается подделать ввод-вывод, например, путем постоянной атаки.  Предупреждения о неактивности облегчают мониторинг за "застывшими" или принудительно постоянными значениями, которые могут быть результатом взлома системы или устройства.  Отклонения дают вам предупреждения о поломке оборудования из-за электрических или механических неисправностей.  Предупреждения о неактивности помогают отмечать измерения или части управляемой системы, которые могут давать “статические” сбои из-за неисправности физического устройства или проблемы с алгоритмом логического управления или сбоя/неправильного ввода оператора.  Приглашаю всех в telegram чат и telegram канал для специалистов в области промышленной автоматизации. Здесь можно напрямую задать очень узкоспециализированный вопрос и даже получить ответ. Жду ваше мнение и опыт относительно данного пункта в комментариях. Всего будет 20 пунктов из "Top 20 Secure PLC Coding Practices", надеюсь на каждый получить как можно больше комментариев, чтобы составить свой список рекомендаций по программированию для ПЛК. Безопасность ПЛК: 10) Разделите регистры по их назначению Безопасность ПЛК: 13-15) Сетевые интерфейсы и безопасная перезагрузка ПЛК Software Developer