Тестирование релейной логики

Все мы знаем различные способы тестирования объектно-ориентированных систем. Однако похоже, что я собираюсь сделать проект, в котором я буду иметь дело с релейной логикой ПЛК (не спрашивайте: /), и мне было интересно, есть ли хороший способ проверить правильность системы.

Единственный способ, который я вижу до сих пор, - это просто построить огромную таблицу со всеми известными состояниями системы и состояниями вывода, которые они генерируют. Это подходит для простых случаев: «если вход A включен, включите выход B». Но я не думаю, что это сработает для более сложных конструкций.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
10
0
4 864
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Проверка «логических» систем в области проектирования ИС известна как «Проверка проекта», которая представляет собой процесс обеспечения того, чтобы система, которую вы проектируете на оборудовании (RTL), реализует желаемую функциональность.

Лестничную логику можно преобразовать в один из современных HDL, например Verilog .. преобразовать каждую лестницу

|---|R15|---+---|/R16|---------(R18)--------|
|           |
|---|R12|---+

к выражению вроде

always @(*) R18 = !R16 && ( R15 | R12);

или вы можете использовать оператор присваивания

assign R18 = R16 && (R15 | R12); 

фиксирующее реле

assign R18 = (set condition) || R18 && !(break condition);

Затем используйте бесплатный симулятор Verilog, например Икар, для разработки тестовой среды и тестирования вашей системы. Убедитесь, что ваши тестовые примеры хорошо охватывают вашу логику КОДОМ! И если ваше программное обеспечение для редактирования релейных диаграмм дает вам приличные возможности именования, используйте их, а не Rnn.

(Примечание: в соглашении о релейной логике для ПЛК Rnn используется для внутренних реле, в то время как Xnn является входом, а Ynn - выходом, что можно быстро понять из одного из онлайн-руководств.

Verilog станет более простым языком для разработки ваших тестов и тестовых стендов!

Может быть полезно запрограммировать задержки некоторых единиц.

Извините, я никогда не искал лестничную логику в / из переводчиков verilog .. но в мои дни релейная логика только что вводилась в компьютер для программирования ПЛК - большинство релейных систем, которые я использовал, были НАСТОЯЩИМИ реле, подключенными к шкафам !!

Удачи. jbd

Есть пара редакторов релейной логики (с симуляторами), доступных бесплатно. вот тот, который предположительно работает в Windows:

http://cq.cx/ladder.pl

Очень хорошо! Надеюсь, я скоро изучу этот симулятор.

Erik van Brakel 16.09.2008 15:27

Существует программа под названием LogixPro, в которой есть симулятор ввода-вывода для релейной логики, вы можете попробовать это.

Мы экспериментировали с инструментами покрытия тестов для контроллеров Rockwell Control Logix. Большинство инструментов тестирования процедурного языка выполняют покрытие ветвей или что-то подобное; поскольку релейная лестничная логика обычно не имеет ответвлений, это работает не очень хорошо.

Мы создали прототип MC / DC (изменено / условие / покрытие решения) для кода RLL для контроллеров Rockwell. Это говорит для каждого условия в цепочке, было ли это условие проверено как ИСТИНА, проверено как ЛОЖЬ и, что более важно, если есть условие управляло выводом решения в цепочке (ну, по крайней мере, действием, управляемым решением) как в истинном, так и в ложном направлениях при некотором тесте.

Эта работа выполняется с использованием инструмента анализа и преобразования программ общего назначения, называемого DMS используется для оснащения кода RLL дополнительной логикой для сбора необходимых данных.

Вам все еще нужно кодировать модульные тесты. Самый простой способ сделать это - заставить другой ПЛК действовать как замену механическому оборудованию, которым вы собираетесь управлять, и просто написать другую программу RLL для проверки первого.

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

В более крупных проектах каждое устройство имеет режим моделирования, который делает что-то похожее. http://www.batchcontrol.com/s88/01_tutorial/06-modules.shtml

Это не что иное, как использование тестовых фреймворков для объектно-ориентированных языков, но я действительно не видел разработки для ПЛК, основанной на тестировании, или даже автоматизированного тестирования.

Мой начальник постоянно говорит мне, что тестирование встроено в саму логику. На самом деле ПЛК детерминированы, поэтому вы должны практически уметь следовать логике и вам не нужно моделировать тестирование. Однако мы не идеальны. Наличие фреймворка действительно позволит нам пройти через то, что мы уже знаем, релейная логика на самом деле просто требует практики, чтобы понять, как работают PLCS.

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

Другие вопросы по теме