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





Проверка «логических» систем в области проектирования ИС известна как «Проверка проекта», которая представляет собой процесс обеспечения того, чтобы система, которую вы проектируете на оборудовании (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:
Существует программа под названием LogixPro, в которой есть симулятор ввода-вывода для релейной логики, вы можете попробовать это.
Мы экспериментировали с инструментами покрытия тестов для контроллеров Rockwell Control Logix. Большинство инструментов тестирования процедурного языка выполняют покрытие ветвей или что-то подобное; поскольку релейная лестничная логика обычно не имеет ответвлений, это работает не очень хорошо.
Мы создали прототип MC / DC (изменено / условие / покрытие решения) для кода RLL для контроллеров Rockwell. Это говорит для каждого условия в цепочке, было ли это условие проверено как ИСТИНА, проверено как ЛОЖЬ и, что более важно, если есть условие управляло выводом решения в цепочке (ну, по крайней мере, действием, управляемым решением) как в истинном, так и в ложном направлениях при некотором тесте.
Эта работа выполняется с использованием инструмента анализа и преобразования программ общего назначения, называемого DMS используется для оснащения кода RLL дополнительной логикой для сбора необходимых данных.
Вам все еще нужно кодировать модульные тесты. Самый простой способ сделать это - заставить другой ПЛК действовать как замену механическому оборудованию, которым вы собираетесь управлять, и просто написать другую программу RLL для проверки первого.
Иногда в небольших программах ПЛК в проект записывается тестовая программа (или подпрограмма, или файл релейной логики), который запускается только во время эмуляции проекта. В файле есть простая логика, которая гласит, что при подаче питания на выход включайте вход, связанный с обратной связью. Затем вы можете управлять своим ПЛК через любой HMI, подключенный к нему, и видеть, что код ведет себя так, как ожидалось. Очень важно отключить или удалить тестовую программу, когда программное обеспечение загружается на реальный сайт, поскольку оно может делать очень странные вещи в реальном мире.
В более крупных проектах каждое устройство имеет режим моделирования, который делает что-то похожее. http://www.batchcontrol.com/s88/01_tutorial/06-modules.shtml
Это не что иное, как использование тестовых фреймворков для объектно-ориентированных языков, но я действительно не видел разработки для ПЛК, основанной на тестировании, или даже автоматизированного тестирования.
Мой начальник постоянно говорит мне, что тестирование встроено в саму логику. На самом деле ПЛК детерминированы, поэтому вы должны практически уметь следовать логике и вам не нужно моделировать тестирование. Однако мы не идеальны. Наличие фреймворка действительно позволит нам пройти через то, что мы уже знаем, релейная логика на самом деле просто требует практики, чтобы понять, как работают PLCS.
При этом у меня был хороший успех с программой, которую я сделал, которая по существу включала и выключала ввод-вывод, она могла даже имитировать счетчики кодировщика, чтобы проверить, что происходит, когда объект достигает позиции. Это были утверждения, которые могли сбить меня с толку и сообщить мне, где моя логика ошибалась. В нем действительно было обнаружено несколько ошибок, и эта реализация очень хорошо подошла для системы, которую я никогда не касался. Само по себе это было очень полезно, и я действительно думаю, что это могло бы быть полезно, но я стал намного лучше, поэтому мне это не нужно из-за моего опыта.
Очень хорошо! Надеюсь, я скоро изучу этот симулятор.