ソース情報
- リポジトリ
- JohnNuwan/EVA_CORE
- ソースの最終更新活動
- 2026年7月18日 08:30
- 検出された SKILL.md の言語
- フランス語
- スター
- 0
- フォーク
- 0
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/JohnNuwan/EVA_CORE --skill siemens-sclコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
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.
SOC 職業分類に基づく
SKILL.md を表示中
| name | siemens-scl |
| description | Générer, optimiser et déboguer du code Siemens SCL. |
| version | 1.0.0 |
| author | EVA |
| license | Privée EVA St-Étienne |
| platforms | ["linux","macos","windows"] |
| metadata | {"EVA":{"tags":["siemens","scl","tia-portal","plc","industrial-automation"],"related_skills":["simplify-code","plan"]}} |
Le Structured Control Language (SCL) est un langage textuel de haut niveau basé sur le Pascal, défini dans la norme CEI 61131-3 (Structured Text). Il est particulièrement adapté pour le traitement de données complexes, les calculs mathématiques, les algorithmes de tri et la manipulation de tableaux dans les automates Siemens (S7-1200, S7-1500, S7-300 et S7-400).
Cette compétence aide l'agent EVA à concevoir du code SCL propre, modulaire, optimisé pour TIA Portal, et conforme aux bonnes pratiques industrielles et aux standards EVA.
À utiliser lorsque l'utilisateur demande :
FB ou FC) en SCL.Ne pas utiliser pour :
rockwell-studio5000 pour Rockwell Allen-Bradley).Pour les automates S7-1200 et S7-1500, toujours privilégier l'accès optimisé pour les DB et les blocs :
%DB1.DBX0.0 ou %MW10).InstanceDB.StatusWord.Bit0).Respecter le standard de nommage EVA pour différencier la portée et le type de variable :
| Type de Variable | Préfixe | Exemple | Description |
|---|---|---|---|
| Input (Entrée) | i_ ou in_ | i_StartSignal | Paramètre d'entrée du bloc. |
| Output (Sortie) | q_ ou out_ | q_MotorRunning | Paramètre de sortie du bloc. |
| InOut (Entrée/Sortie) | iq_ ou io_ | iq_ProcessValue | Paramètre passé par référence. |
| Static (Statique) | stat_ | stat_CycleCounter | Variable interne persistante (FB uniquement). |
| Temp (Temporaire) | temp_ | temp_LoopIndex | Variable en pile, non persistante. |
| Constant | c_ | c_MaxLimit | Valeur constante fixe. |
.scl)Voici le squelette d'un Function Block (FB) standard incluant les déclarations de variables et la logique :
FUNCTION_BLOCK "FB_EVA_ControlMotor"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
i_Start : Bool; // Commande de démarrage
i_Stop : Bool; // Commande d'arrêt
i_Fault : Bool; // Signal de défaut matériel
END_VAR
VAR_OUTPUT
q_Run : Bool; // Sortie commande moteur
q_Error : Bool; // Indication de défaut
END_VAR
VAR
stat_Active : Bool; // État mémorisé de marche
END_VAR
BEGIN
// Logique de marche/arrêt avec sécurité défaut
IF #i_Fault THEN
#stat_Active := FALSE;
#q_Error := TRUE;
ELSIF #i_Stop THEN
#stat_Active := FALSE;
#q_Error := FALSE;
ELSIF #i_Start AND NOT #q_Error THEN
#stat_Active := TRUE;
END_IF;
// Assignation de la sortie physique
#q_Run := #stat_Active;
END_FUNCTION_BLOCK
Note : TIA Portal utilise le symbole # devant les variables locales au bloc.
IF #i_Temperature > 80.0 THEN
#q_Overheating := TRUE;
#q_FanSpeed := 100;
ELSIF #i_Temperature > 50.0 THEN
#q_Overheating := FALSE;
#q_FanSpeed := 50;
ELSE
#q_Overheating := FALSE;
#q_FanSpeed := 0;
END_IF;
CASE #stat_Step OF
0: // Étape Initiale
#q_Motor := FALSE;
IF #i_Start THEN
#stat_Step := 10;
END_IF;
10: // Démarrage moteur
#q_Motor := TRUE;
IF #i_RunningFeedback THEN
#stat_Step := 20;
END_IF;
20: // Surveillance
IF NOT #i_RunningFeedback THEN
#stat_Step := 99; // Erreur
END_IF;
99: // État Erreur
#q_Motor := FALSE;
#q_Alarm := TRUE;
IF #i_Reset THEN
#q_Alarm := FALSE;
#stat_Step := 0;
END_IF;
END_CASE;
// Initialisation ou cumul sur un tableau
#temp_TotalVal := 0;
FOR #temp_Index := 0 TO 9 DO
#temp_TotalVal := #temp_TotalVal + #iq_SensorData[#temp_Index];
END_FOR;
Toujours déclarer les Timers IEC dans les variables statiques du FB pour éviter l'allocation de DB de travail externes inutiles (concept de multi-instance) :
Déclaration :
VAR
stat_TimerMotor : TON_TIME; // Ou IEC_TIMER
END_VAR
Appel dans le code :
#stat_TimerMotor(IN := #i_StartCmd,
PT := T#5s);
#q_DelayedStart := #stat_TimerMotor.Q;
Confusion sur la persistance des variables TEMP :
VAR_TEMP (ex. : #temp_State) à la fin d'un cycle et s'attendre à la retrouver au cycle suivant.VAR (statiques) pour stocker les informations persistantes entre deux cycles de tâche automate.Outil d'indexation hors limites (Array Out of Bounds) :
LOWER_BOUND et UPPER_BOUND pour sécuriser les boucles dynamiques.Utilisation intensive de boucles WHILE non sécurisées :
WHILE ou REPEAT dont la condition de sortie peut ne pas être atteinte. Cela augmente le temps de cycle de l'automate et déclenche le chien de garde (Watchdog) de la CPU (passage en STOP).FOR ou ajouter un compteur de sécurité pour forcer la sortie de la boucle WHILE.i_, les sorties q_, et les statiques stat_.INT_TO_REAL, REAL_TO_INT si nécessaire).Array) sont sécurisés pour éviter un dépassement de limites en run-time.TON_TIME ou IEC_TIMER) et non comme des DB globaux séparés.VAR CONSTANT à la place).