ソース情報
- リポジトリ
- 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コマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?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).