소스 정보
- 저장소
- JohnNuwan/EVA_CORE
- 최근 소스 활동
- 2026년 7월 18일 08:30
- 감지된 SKILL.md 언어
- 프랑스어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
SOC 직업 분류 기준
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/JohnNuwan/EVA_CORE --skill plc-testing-cicd명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
Concevoir et maintenir un watchdog auto-correcteur pour services HTTP — checks de santé, auto-restart, état persistant, rapports et pièges bash.
Serveur de messagerie sécurisé auto-hébergé (Signal-like) avec Flask + WebSocket + AES-256-GCM + pont EVA
ADAM-SENTINEL — Veilleur technologique 24h/24h. Scanne 10 domaines, cree des rapports, met a jour les skills, alerte sur les CVE et breaking changes.
| name | plc-testing-cicd |
| description | Concevoir des tests unitaires et pipelines CI/CD pour PLC. |
| version | 1.0.0 |
| author | EVA |
| license | MIT |
| platforms | ["linux","macos","windows"] |
| metadata | {"tags":["plc","testing","unit-tests","cicd","devops","twincat","tcunit","plcsim-advanced","simulation"],"related_skills":["beckhoff-twincat","siemens-scl"]} |
Le développement d'automatisme moderne intègre les méthodologies DevOps. L'automatisation des compilations, le versioning propre avec Git et l'exécution systématique de tests unitaires permettent de sécuriser le code avant le déploiement sur site.
Cette compétence guide l'agent EVA pour écrire des tests unitaires PLC (avec TcUnit sous TwinCAT), concevoir des scripts d'intégration fonctionnels (avec PLCSIM Advanced sous Siemens), et structurer des pipelines de CI/CD (GitLab CI, GitHub Actions) pour les projets d'automatisme.
À utiliser lorsque l'utilisateur demande de :
TcUnit est le framework de test unitaire standard conforme à la CEI 61131-3 pour Beckhoff TwinCAT. Les tests sont écrits sous forme de blocs fonctionnels (FB) qui héritent de FB_TestSuite.
(* Bloc Fonctionnel FB_Scale_Test héritant de TcUnit.FB_TestSuite *)
FUNCTION_BLOCK FB_Scale_Test EXTENDS FB_TestSuite
VAR
fbScale : FB_Scale; // Instance du bloc à tester
// Variables d'entrées
rInputRaw : REAL;
rRawMin : REAL := 0.0;
rRawMax : REAL := 100.0;
rEUMin : REAL := 0.0;
rEUMax : REAL := 10.0;
// Variables de sorties
rOutputScaled : REAL;
bScaleFault : BOOL;
END_VAR
(* Corps du Bloc de Test *)
TEST('TestScaleNominal');
// 1. Arrange & Act
rInputRaw := 50.0;
fbScale(
Input_Raw := rInputRaw,
Raw_Min := rRawMin,
Raw_Max := rRawMax,
EU_Min := rEUMin,
EU_Max := rEUMax,
Output_Scaled => rOutputScaled,
Scale_Fault => bScaleFault
);
// 2. Assert
AssertEquals_REAL(
Expected := 5.0,
Actual := rOutputScaled,
Delta := 0.01,
Message := 'La valeur de mise à l'échelle nominale à 50% devrait être 5.0'
);
AssertFalse(
Condition := bScaleFault,
Message := 'Le bit de défaut ne devrait pas être actif'
);
TEST_FINISHED();
Pour Siemens S7-1500, nous utilisons l'API de PLCSIM Advanced pour lancer une instance virtuelle de l'automate, y charger le programme, et valider son comportement en simulant le terrain avec un script Python.
import time
# verify_plc_sim charge dynamiquement le wrapper C# PLCSIM Advanced API
from tools.verify_plc_sim import SiemensPLCSimulator
# 1. Démarrage de l'instance de simulation
sim = SiemensPLCSimulator(instance_name="PLCSIM_Test_Line1")
sim.start()
# 2. Chargement des variables I/O
# Simuler l'appui sur le bouton marche (Entrée %I0.0 de l'automate)
sim.write_tag("Tag_Start_Button", True)
time.sleep(0.1) # Attente du cycle automate
sim.write_tag("Tag_Start_Button", False)
# 3. Validation de l'activation du moteur (Sortie %Q0.0 de l'automate)
time.sleep(1.0) # Attente du temps de démarrage
motor_state = sim.read_tag("Tag_Motor_Running")
# Assertion du test
if motor_state == True:
print("TEST SUCCEEDED: Le moteur a démarré après appui sur le bouton.")
else:
print("TEST FAILED: Le moteur ne s'est pas activé.")
# 4. Nettoyage
sim.stop()
La compilation automatisée des projets PLC nécessite d'utiliser des conteneurs Windows ou des serveurs d'intégration possédant les licences et logiciels d'ingénierie installés.
.gitlab-ci.yml pour compiler un projet TwinCAT :stages:
- build
- test
build_twincat:
stage: build
tags:
- windows-builder # Cible un runner Windows avec TwinCAT XAE installé
script:
- echo "Démarrage de la compilation du projet TwinCAT..."
# Utilisation de la CLI TwinCAT pour compiler
- '& "C:\Program Files (x86)\Beckhoff\TcXaeShell\Common7\IDE\devenv.com" "MyTwinCATProject.sln" /Build "Release|TwinCAT RT (x64)"'
artifacts:
paths:
- MyTwinCATProject/_boot/
run_unit_tests:
stage: test
tags:
- windows-runner
script:
- echo "Exécution des tests unitaires TcUnit..."
# Démarre le runtime TwinCAT local en mode Config et injecte les tests
- '.venv\Scripts\python.exe scripts/run_tcunit_runner.py --solution "MyTwinCATProject.sln"'
dependencies:
- build_twincat
Compilation échouée en CI à cause de fenêtres interactives (Popups) :
/NoSplash, /Silent) et s'assurer que les configurations du projet désactivent l'authentification interactive.État mémoire persistant entre les tests (State Leakage) :
Instanciation concurrente de simulateurs :
CI_JOB_ID) pour nommer dynamiquement les instances et les isoler sur des adresses IP de sous-réseau virtuel différentes.FB_TestSuite de TcUnit et appellent TEST_FINISHED() en fin de cycle.TEST().try...finally pour éviter les fuites de processus sur le serveur..gitignore du projet excluent les fichiers temporaires générés par TIA Portal (~*) et TwinCAT (.vs, LineInfo).