用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/JohnNuwan/EVA_CORE --skill dcs-engineering命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | dcs-engineering |
| description | Configurer, programmer et maintenir les systèmes DCS des industries de procédé. |
| version | 1.0.0 |
| author | EVA |
| license | Privée EVA St-Étienne |
| platforms | ["linux","macos","windows"] |
| metadata | {"EVA":{"tags":["dcs","distributed-control-system","emerson-deltav","yokogawa-centum","honeywell-experion","abb-800xa","siemens-pcs7","pcs-neo","process-control","batch-control","apc","advanced-process-control","control-loops","cascade-control","feedforward","ratio-control","override-control","split-range","industrie-de-procédé","isa-106","isa-18-alarm-management"],"related_skills":["mes-integration","batch-process-isa88","pid-tuning-control","pid-instrumentation","historian-timeseries"]}} |
Un DCS (Distributed Control System) est un système de contrôle-commande dédié aux industries de procédé continu (pétrochimie, raffinage, chimie, pharmaceutique, agroalimentaire, eau, énergie). Contrairement aux automates (PLC) qui excellent dans le contrôle discret/logique, le DCS est optimisé pour :
À utiliser lorsque l'utilisateur demande :
┌─────────────────────────────────────────────────────────────────┐
│ Niveau 4 — MES / ERP (couche entreprise) │
├─────────────────────────────────────────────────────────────────┤
│ Niveau 3 — Historien, APC, Reporting │
├─────────────────────────────────┬───────────────────────────────┤
│ Stations Opérateur (HMI) │ Stations Ingénierie │
│ ┌─────────────────────────┐ │ ┌─────────────────────────┐ │
│ │ Emerson DeltaV Operate │ │ │ Control Studio / AMS │ │
│ │ Yokogawa CENTUM HIS │ │ │ Fieldbus Configurator │ │
│ │ Honeywell Experion FX │ │ │ Control Builder / CEE │ │
│ └─────────┬───────────────┘ │ └───────────┬─────────────┘ │
├─────────────┼───────────────────┴───────────────┼────────────────┤
│ │ Ethernet (1 Gb Redundant) │ │
│ ┌──────────┴───────────────────────────────────┴──────────┐ │
│ │ Contrôleurs DCS │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌──────────────────┐ │ │
│ │ │ DeltaV Sx │ │ Centum VP │ │ Experion C300 │ │ │
│ │ │ (Emerson) │ │ (Yokogawa) │ │ (Honeywell) │ │ │
│ │ └──────┬──────┘ └──────┬──────┘ └────────┬─────────┘ │ │
│ │ ┌──────┴──────┐ ┌──────┴──────┐ ┌────────┴─────────┐ │ │
│ │ │ I/O Cards │ │ FIO Bus │ │ CEE (Control │ │ │
│ │ │ (CIOC) │ │ (FCS) │ │ Execution Env) │ │ │
│ │ └─────────────┘ └────────────┘ └───────────────────┘ │ │
│ └───────────────────────────────────────────────────────────┘ │
├──────────────────────────────────────────────────────────────────┤
│ Fieldbus (FF, PA, Profibus DP, HART) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ Capteurs│ │ Vannes │ │Analyseurs│ │ Safety Sys (SIS) │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
| Caractéristique | DCS | PLC + SCADA |
|---|---|---|
| Domaine | Procédé continu / batch | Discret, fabrication, machine |
| Boucles PID | Centaines à milliers intégrés | Quelques dizaines max |
| Redondance | Native (contrôleur, réseau, I/O) | Optionnelle, coûteuse |
| Configuration | Bibliothèque de blocs fonctionnels | Langages IEC 61131-3 |
| Base de données | Centralisée (tags, tendances, alarmes) | Distribuée |
| Batch (ISA-88) | Native (recettes, phases) | Souvent via SCADA additionnel |
| Historien | Intégré | Via boîtier externe |
Le CFC (Continuous Function Chart) est le langage visuel principal. Les blocs sont organisés par catégorie :
# Configuration d'un bloc PID dans Control Studio (API OPC)
# 1. Ajouter le bloc PID à un module de contrôle
module.add_block("PID", "PIC-101")
# 2. Configurer les paramètres
PIC_101.set_attribute("MODE_TARGET", "Auto")
PIC_101.set_attribute("SP", 150.0)
PIC_101.set_attribute("GAIN", 2.5)
PIC_101.set_attribute("RESET", 1.0) # Minutes per repeat
PIC_101.set_attribute("RATE", 0.0) # Derivative
PIC_101.set_attribute("PV_SCALE.EU_100", 300.0)
PIC_101.set_attribute("PV_SCALE.EU_0", 0.0)
# 3. Connecter les entrées/sorties
PIC_101.set_attribute("IN", "FT-101.OUT")
PIC_101.set_attribute("OUT_D", "FV-101.CAS_IN")
# Structure de recette batch
recette_1 = Recipe("POLYPROPYLENE_GRADE_A")
recette_1.add_phase("REACTOR", "HEAT_UP", {"target_temp": 180.0, "ramp_rate": 5.0})
recette_1.add_phase("REACTOR", "HOLD", {"hold_time": 30.0})
recette_1.add_phase("REACTOR", "COOL_DOWN", {"target_temp": 50.0, "ramp_rate": 3.0})
Le Control Drawing (ST-2 / ST-4) est l'éditeur de blocs fonctionnels Yokogawa.
# Exemple : paramétrage d'un bloc PID-L
PID_L.set_parameter("PV", "FT-101.PV")
PID_L.set_parameter("SV", 150.0)
PID_L.set_parameter("PID.MODE", "AUTO")
PID_L.set_parameter("PID.P", 250.0)
PID_L.set_parameter("PID.I", 120.0) # Seconds
PID_L.set_parameter("PID.D", 0.0)
PID_L.set_parameter("PID.DL", 0.0) # Derivative lag
PID_L.set_parameter("MH", 100.0) # Output high limit
PID_L.set_parameter("ML", 0.0) # Output low limit
Sebol est le langage de séquence de Centum pour le batch et les séquences procédé.
# Exemple de séquence Sebol conceptuelle
SEQ01:
STEP 10: MV-101 → OPEN
STEP 20: WAIT TI-101 ≥ 80.0
STEP 30: START PUMP P-101
STEP 40: WAIT LS-201 → ON
STEP 50: MV-101 → CLOSE
STEP 60: STOP PUMP P-101
END
# Configuration d'un Control Module (CM) Experion
CM_PIC_101 = ControlModule("PIC101", "PIDLoop")
CM_PIC_101.set_attribute("PV_SOURCE", "AI-101.PV_CV")
CM_PIC_101.set_attribute("SP", 200.0)
CM_PIC_101.set_attribute("MODE", "AUTO")
CM_PIC_101.set_attribute("PID_GAIN", 1.8)
CM_PIC_101.set_attribute("PID_RESET", 80.0) # Seconds
CM_PIC_101.set_attribute("PID_RATE", 0.0)
CM_PIC_101.set_attribute("OUTPUT_TRACK", True)
CM_PIC_101.set_attribute("OUTPUT_TRACK_VALUE", "FV-101.OUT")
(* Exemple : Bloc Analog Alarm dans Control Builder *)
FUNCTION_BLOCK FB_AnalogAlarm
VAR_INPUT
PV : REAL;
PV_Low : REAL := 10.0;
PV_High : REAL := 90.0;
Hyst : REAL := 1.0;
END_VAR
VAR_OUTPUT
ALARM_Low : BOOL;
ALARM_High : BOOL;
END_VAR
ALARM_High := PV >= (PV_High + Hyst);
ALARM_Low := PV <= (PV_Low - Hyst);
IF NOT (PV >= PV_Low AND PV <= PV_High) THEN
ALARM_High := PV > (PV_High + Hyst);
ALARM_Low := PV < (PV_Low - Hyst);
END_IF;
END_FUNCTION_BLOCK
| Stratégie | Description | Quand l'utiliser |
|---|---|---|
| Cascade | PD secondaire + PID primaire | Longue inertie, perturbé |
| Ratio | Proportion entre deux débits | Mélanges, blending |
| Feedforward | Anticipation de perturbation | Mesurable avant effet |
| Override | Hiérarchie de consignes | Saturation / sécurité |
| Split-range | Deux actionneurs sur un signal | Pression, température |
┌─────────────────────────────────────────────────────────────┐
│ Consigne ─── PID(Temp) ─── PID(Pression) ─── Vanne │
│ TIC-101 TIC-101.SP PIC-101.SP PV-101 │
│ ↓ ↑ │
│ Température Pression │
└─────────────────────────────────────────────────────────────┘
Configuration en DeltaV :
TIC_101 = block("PID", "TIC-101")
PIC_101 = block("PID", "PIC-101")
PV_101 = block("AO", "PV-101")
# Cascade : TIC-101 sortie → PIC-101 consigne
TIC_101.set_attribute("MODE_TARGET", "Auto")
PIC_101.set_attribute("MODE_TARGET", "Cas") # Cascade mode
PV_101.set_attribute("MODE_TARGET", "Auto")
# Signal routing
TIC_101.OUT → PIC_101.CAS_IN
PIC_101.OUT → PV_101.CAS_IN
Tag, Description, Type, Priorité, Seuil, Délai, Conséquence
TIC-101_HI, Température haute réacteur, HI_AUTO, HIGH, 200°C, 5s, Arrêt production
PIC-101_LO, Pression basse colonne, LO_AUTO, MEDIUM, 0.5 bar, 10s, Perte qualité
LI-201_AL, Niveau haut ballon, HI_AUTO, CRITICAL, 85%, 2s, Débordement - sécurité
| Stratégie | Approche | Risque | Coût |
|---|---|---|---|
| Forklift | Remplacement complet | Élevé | Très élevé |
| Contrôleur hybride | Nouveau contrôleur, I/O existant | Moyen | Élevé |
| I/O marshalling | Electronic marshalling, câblage conservé | Faible | Moyen |
| Simulation | Émulateur du système legacy | Minimal | Faible |