PLC Test Harness
TDD для промышленной автоматизации
Определяйте тестовые сценарии, выполняйте их в PLCSim Advanced и получайте мгновенные вердикты PASS/FAIL. Модульное тестирование логики ПЛК — так же, как инженеры-программисты тестируют свой код.
Тестирование ПЛК по-прежнему выполняется вручную
Каждое изменение кода — это риск без автоматизированных тестов
Отсутствие регрессионного тестирования
Вы меняете функциональный блок и молитесь, чтобы больше ничего не сломалось. Без автоматизированных тестов каждое изменение чревато появлением скрытых багов, которые проявятся только на производстве.
Ручная верификация
Тестирование означает ручную установку входов на ПЛК или PLCSim, наблюдение за изменением выходов и проверку значений вручную. Это утомительно, чревато ошибками и невозможно для последовательного повторения.
Нет документации по тестам
Как доказать, что программа работает правильно? Процедуры тестирования существуют в документах Word или в голове инженера. Нет стандартизированных исполняемых спецификаций тестов, которые хранятся вместе с проектом.
ИИ не может проверить собственный код
ИИ генерирует код ПЛК, но как узнать, что он работает? Без автоматизированного тестирования код, созданный ИИ, попадает в производство непроверенным. Test Harness замыкает этот цикл.
Как работает PLC Test Harness
Структурированный фреймворк для тестирования логики ПЛК, доступный через MCP, Copilot и REST API
Определяйте тестовые сценарии
Каждый тест — это последовательность шагов: установка входов, ожидание реакции ПЛК, затем проверка соответствия выходов ожиданиям. Тесты сохраняются в файлах .test.json рядом с вашим проектом TIA Portal.
4 типа утверждений (Assertions)
Точное совпадение для логических и целых чисел. Допуск для значений с плавающей запятой (±0.1). Диапазон для проверок min/max. Неравенство для проверки изменения значения. Охватывает все типы данных ПЛК.
Setup и Teardown
Каждый тест начинается с фазы setup (инициализация тегов в известное состояние) и заканчивается фазой teardown (сброс тегов в ноль), даже если тест провален. Гарантируется чистое состояние.
Запуск одного или всех
Выполняйте один тест по имени, передавайте тест встроенным кодом или используйте подстановочный знак (*) для запуска всего набора тестов. Результаты сохраняются в last-results.json для просмотра.
Полный аудиторский след
Каждый запуск теста создает подробный отчет: какие шаги пройдены, какие провалены, ожидаемые и фактические значения, а также метки времени выполнения. Экспортируйте или запрашивайте результаты в любое время.
Цикл TDD на базе ИИ
Подключенная LLM может писать код, создавать тесты, компилировать, загружать в PLCSim, запускать тесты и исправлять ошибки — все автономно. Red → Green → Refactor для ПЛК.
Цикл TDD для ПЛК
От определения теста до проверенной логики ПЛК
1. Напишите тест
Определите ожидаемое поведение: при нажатии Start_Button значение Motor_Running должно стать true в течение 500 мс. Создайте тест с помощью plc_test_create.
2. Запуск в PLCSim
Выполните тест с помощью plc_test_run. T-IA Connect записывает входные данные в PLCSim, ожидает указанную задержку, затем считывает и проверяет выходы. Вердикт: PASS или FAIL.
3. Исправление и итерация
Если шаг не пройден, вы видите, что именно пошло не так: ожидалось Motor_Running = true, получено false. Исправьте программу ПЛК, перекомпилируйте, загрузите и запустите тест снова.
4. Создайте свой набор тестов
Накапливайте тесты по мере разработки. Запускайте весь набор после каждого изменения, чтобы отловить регрессии. Тесты хранятся вместе с проектом в .tia-connect/tests/.
Типы утверждений (Assertions) подробно
Охват каждого типа данных ПЛК с правильным сравнением
Точное совпадение
Для логических и целых чисел. Motor_Running должен быть строго true. Counter должен быть равен 5. Без права на ошибку.
Допуск (±)
Для значений REAL и LREAL. Скорость должна быть 50.0 ± 0.1. Учитывает точность чисел с плавающей запятой и шум аналоговых измерений.
Диапазон (min/max)
Значение должно попадать в определенный диапазон. Температура от 10.0 до 100.0. Идеально подходит для аналоговых входов и технологических значений.
Не равно
Проверка того, что значение изменилось по сравнению с начальным состоянием. Counter не должен быть равен 0 — подтверждение того, что логика счета действительно сработала.
5 инструментов в 3 каналах
Доступно через MCP, Copilot (встроенный ассистент) и REST API
plc_test_create
Сохраните определение тест-кейса с setup, шагами (входы → задержка → утверждения) и teardown. Сохраняется в виде файла .test.json в .tia-connect/tests/.
plc_test_run
Выполните тест по имени, передайте один встроенным кодом или используйте * для запуска всех тестов. Асинхронно через REST (возвращает jobId). Результаты сохраняются в last-results.json.
plc_test_list
Список всех сохраненных тест-кейсов с их именами и описаниями. Быстрый обзор покрытия тестами вашего проекта.
plc_test_delete
Удалите тест-кейс по имени. Очищайте устаревшие тесты по мере развития вашего проекта.
plc_test_get_results
Получите результаты последнего запуска теста: статус PASS/FAIL для каждого шага, ожидаемые и фактические значения, время выполнения и общий вердикт.
Часто задаваемые вопросы
Требуется ли для этого PLCSim Advanced?
Да. Test Harness записывает входы и считывает выходы через интерфейс симуляции PLCSim Advanced. Он не работает с реальными ПЛК (это было бы опасно для автоматизированного тестирования). PLCSim Advanced обеспечивает безопасную, воспроизводимую среду.
Может ли ИИ создавать и запускать тесты автономно?
Безусловно. Подключенная LLM (через MCP или Copilot) может писать код ПЛК, создавать тест с помощью plc_test_create, компилировать и загружать в PLCSim, запускать тест, проверять результаты и исправлять код в случае сбоя. Полный цикл TDD без участия человека.
Где хранятся тесты?
В папке .tia-connect/tests/ рядом с вашим проектом TIA Portal. Каждый тест — это файл .test.json. Результаты находятся в last-results.json. Тесты перемещаются вместе с проектом — архивируйте проект, архивируйте тесты.
Сколько времени занимает запуск теста?
Это зависит от задержек, которые вы определяете в шагах теста (время, которое вы даете ПЛК на реакцию). Типичный тест с 3-5 шагами и задержками 200-500 мс выполняется за 1-3 секунды. Запуск полного набора из 20 тестов обычно занимает меньше минуты.