engineering

WinCC Unified et React : Synergies pour le développement IHM moderne

Vous connaissez React ou JavaScript ? Alors vous pouvez apprendre WinCC Unified plus rapidement. Synergies concrètes, exemples de code et conseils pratiques d'un expert.

David Prybisch
10 min read
WinCC Unified et React : Synergies pour le développement IHM moderne

Après plus de dix ans dans l'automatisation industrielle avec Siemens WinCC et TIA Portal, j'ai observé un changement fondamental : les panneaux classiques WinCC Basic et Comfort sont remplacés par WinCC Unified – la plateforme SCADA/IHM moderne de Siemens. Cela change fondamentalement la façon dont nous concevons les interfaces IHM.

Le cœur de ce changement : WinCC Unified est basé sur le moteur JavaScript Google V8 – le même moteur qui alimente Chrome et Node.js. Ceux qui connaissent React, TypeScript ou le JavaScript moderne retrouvent soudain des concepts familiers dans le monde de l'IHM industrielle.

Dans cet article, je montre les synergies techniques concrètes entre le développement web et WinCC Unified – basées sur la documentation officielle Siemens et l'expérience pratique.

1.WinCC Unified : Fondamentaux techniques

1.1.Le moteur V8 au cœur

WinCC Unified utilise le moteur JavaScript Google V8, qui « implémente largement » ECMAScript 2015 (ES6) – selon la documentation officielle Siemens. Cela signifie : les fonctionnalités JavaScript modernes comme const/let, les Arrow Functions, les Template Literals, les Classes et les Promises sont disponibles.

AspectWinCC Basic/ComfortWinCC Unified
ScriptingVBScript (propriétaire)JavaScript (ES6 via V8)
RenduMoteur propriétaireHTML5 + SVG
RuntimeService WindowsWebRH (Web Runtime Host)
DébogageIntégré TIA PortalChrome DevTools (Port 9222)
ArchitectureMonolithiqueClient-Serveur (WebSockets)

L'architecture runtime est basée sur un backend similaire à Node.js (WebRH) qui communique via WebSockets avec le frontend navigateur. C'est révolutionnaire pour l'atelier : les opérations asynchrones ne bloquent plus l'interface utilisateur.

1.2.Disponibilité et historique des versions

TIA PortalAnnéeFonctionnalités majeures
V162019/2020Première version, systèmes PC
V172021Unified Comfort Panels, View of Things
V182022Faceplates imbriqués, support PLCUDT
V192023Dynamisation par Expression, aperçu Redondance
V202024Redondance complète des données, Intégrateur MTP, compilation 20-40% plus rapide

2.Synergies : Les compétences web accélèrent la conception IHM

2.1.JavaScript : Même syntaxe, APIs différentes

La syntaxe est identique – mais les APIs diffèrent. Un exemple important :

// React/Web : JavaScript standard
console.log('Moteur démarré');
setTimeout(() => { /* ... */ }, 1000);

// WinCC Unified : APIs spécifiques Siemens
HMIRuntime.Trace('Moteur démarré');
HMIRuntime.Timers.SetTimeout(() => { /* ... */ }, 1000);

Fonctionnalités ES6 disponibles dans WinCC Unified :

  • const et let (variables avec portée de bloc)
  • Template Literals avec backticks
  • Arrow Functions
  • Classes et héritage
  • Promises et async/await
  • Méthodes Array (map, filter, reduce)

Différences d'API importantes :

Web/ReactWinCC UnifiedFonction
console.log()HMIRuntime.Trace()Sortie de débogage
setTimeout()HMIRuntime.Timers.SetTimeout()Temporisateur
Manipulation DOMScreen.Items()Accès UI
useStateTags.Read()/Tags.Write()Gestion d'état
Comparaison API : Web/React vs WinCC Unified - console.log, setTimeout, useState et leurs équivalents Siemens

2.2.Faceplates vs Composants React

Le concept de Faceplate dans WinCC Unified correspond conceptuellement aux composants React :

Composant React :

interface MotorStatusProps {
  name: string;
  isRunning: boolean;
  rpm: number;
}

function MotorStatus({ name, isRunning, rpm }: MotorStatusProps) {
  return (
    <div className={isRunning ? 'running' : 'stopped'}>
      <h3>{name}</h3>
      <span>{rpm} tr/min</span>
    </div>
  );
}

Faceplate WinCC Unified (Script) :

// Instancier un Faceplate via script
let data = {
  MotorName: { Tag: "Motor1.Name" },
  Speed: { Tag: "Motor1.Speed" },
  Running: { Tag: "Motor1.Running" }
};

let popup = UI.OpenFaceplateInPopup("fpMotor", "Moteur 1", data);
popup.Left = 100;
popup.Top = 150;
popup.Visible = true;
Faceplate WinCCÉquivalent React
Tag InterfaceProps pour liaison de données
Property InterfaceProps pour configuration
Event InterfaceProps callback
Library TypesPackages npm
Faceplates vs Composants React : Comparaison des interfaces entre WinCC Unified et React - Props, State et Events

2.3.Gestion d'état : Tags vs useState

WinCC Unified utilise les Tags comme concept central d'état – comparable au State React, mais avec des mécanismes de déclenchement spécifiques à l'industrie :

WinCC UnifiedÉquivalent React
Internal TaguseState
Tag avec TriggeruseState + useEffect
TagSetuseReducer
Session DataSetReact Context

Trois types de déclencheurs pour les changements de Tag :

  1. Cyclic Triggers - Temporisés (comme setInterval)
  2. Tag Triggers - Sur changement de valeur (comme useEffect avec dependencies)
  3. Event Triggers - Sur interaction utilisateur
// Optimisé pour la performance : TagSet pour plusieurs Tags
let ts = Tags.CreateTagSet(["Motor1.Speed", "Motor1.Temp", "Motor1.Status"]);
ts.Read();  // Lire tous en un seul appel
// ... traiter les valeurs ...
ts.Write(); // Écrire tous en un seul appel

2.4.Système d'événements : Patterns familiers

Web/ReactWinCC Unified
onClickClick left mouse button
onMouseDown/onMouseUpPress/Release
Touch-EventsTapped, Gesture detected
onFocus/onBlurFocus change
useEffect([], [])Loaded

3.Custom Web Controls : Le pont vers React

Les Custom Web Controls (CWC) sont le moyen le plus direct d'intégrer React dans WinCC Unified. Un CWC est essentiellement une Single Page Application qui s'exécute dans un conteneur isolé au sein du runtime.

3.1.Architecture d'un CWC

MyCWC/
├── manifest.json    # Définition de l'interface
├── index.html       # Point d'entrée
├── bundle.js        # Code React compilé
└── assets/          # Images, CSS

Le manifest.json définit le contrat entre le CWC et le WinCC Runtime :

{
  "name": "MyReactGauge",
  "properties": [
    { "name": "Speed", "type": "number" },
    { "name": "MaxSpeed", "type": "number" }
  ],
  "events": [
    { "name": "OnOverSpeed" }
  ]
}

3.2.Flux de données entre React et WinCC

  1. Variable API change → WinCC Runtime détecte le changement
  2. Runtime pousse la valeur → CWC reçoit de nouvelles Props
  3. React fait le rendu → Virtual DOM Diff, mise à jour UI
  4. Utilisateur interagit → React émet un Event
  5. WinCC réagit → Script écrit la variable API
Architecture Custom Web Control : Flux de données entre API S7-1500, WinCC Runtime et composant React via manifest.json

Bibliothèques utilisées avec succès (exemples Siemens) :

  • Gauge.js pour les affichages à aiguille
  • ApexCharts.js pour les graphiques
  • N'importe quel package npm (côté client)

4.Limitations pratiques

4.1.Pas d'accès direct au DOM

Dans les écrans standard, il n'y a pas d'accès direct au DOM comme sur le web. On utilise à la place le modèle d'objet propriétaire :

// Web : Accès DOM
document.getElementById('motor').style.backgroundColor = 'green';

// WinCC Unified : Modèle d'objet
Screen.Items('Motor').BackColor = 0xFF00FF00; // Format Hex ARGB

La syntaxe CSS n'est disponible que dans les Custom Web Controls – dans les écrans standard, le style se fait via les Properties.

4.2.Architecture single-threaded

Les scripts WinCC Unified s'exécutent dans deux processus Node.js – un pour les scripts d'écran, un pour le Task Scheduler. Les deux sont single-threaded :

  • Tous les scripts d'écran partagent un seul cœur CPU
  • Les calculs longs bloquent les autres scripts
  • Les patterns asynchrones (async/await) sont donc critiques

4.3.TypeScript : Uniquement en externe

TypeScript n'est pas nativement supporté dans TIA Portal. Le workflow recommandé :

  1. Développer dans VS Code avec TypeScript
  2. Utiliser ESLint pour les règles spécifiques Siemens
  3. Copier le code dans TIA Portal

Siemens fournit un VS Code Development Guide (SIOS 109801600).

5.Débogage avec Chrome DevTools

L'une des fonctionnalités les plus puissantes : Remote Debugging via Chrome DevTools.

5.1.Configuration

  1. Activer le débogueur de scripts dans le SIMATIC Runtime Manager
  2. Ouvrir Chrome : chrome://inspect
  3. Connecter le port 9222 du runtime IHM

5.2.Ce qui fonctionne

FonctionnalitéÉtat
Points d'arrêt
Débogage pas à pas
Inspection des variables
Console (HMIRuntime.Trace)
Onglet Sources✅ (écran actuel uniquement)
Onglet Network
Sauvegarder les modifications❌ (doit être fait dans TIA Portal)

Cela dépasse largement le « débogage printf » des anciens systèmes IHM et permet le diagnostic d'erreurs logiques complexes et de conditions de concurrence.

6.Perspective : Les tableaux de bord web comme complément

Pour les visualisations de niveau supérieur, une architecture combinant WinCC Unified avec de vrais tableaux de bord web s'offre :

[API S7-1500] ⟷ [OPC UA / Open Pipe] ⟷ [Backend Node.js] ⟷ [Tableau de bord Next.js]

L'interface Open Pipe dans WinCC Unified permet la communication avec des applications externes – Python pour l'IA/ML, Node.js pour des interactions base de données complexes, ou du matériel personnalisé sans pilote API.

7.Infographie : Technologies web dans WinCC Unified

L'infographie montre toutes les synergies entre le développement web et WinCC Unified en un coup d'œil : moteur V8, patterns de composants, gestion d'état, débogage et Custom Web Controls.

Vue d'ensemble de toutes les synergies : Moteur V8, Composants, Gestion d'état, Débogage et Custom Web Controls - Technologies web dans WinCC Unified

8.Conclusion : Le transfert de connaissances comme avantage compétitif

Avec WinCC Unified, Siemens a créé un véritable pont entre OT et IT dans les systèmes SCADA modernes :

  • Moteur Google V8 avec JavaScript ES6 – syntaxe familière pour les développeurs web
  • Faceplates suivent le pattern de composants de React
  • Custom Web Controls permettent l'intégration directe de React
  • Chrome DevTools pour un débogage professionnel
  • Open Pipe pour l'intégration IA/ML et les applications externes

Les techniciens en automatisation avec des connaissances web ont un avantage clair – ils comprennent les patterns sous-jacents et peuvent utiliser des pratiques de développement modernes.

Ressources complémentaires :

Vous planifiez un projet IHM avec WinCC Unified ou souhaitez développer des Custom Web Controls ? J'apporte l'expérience des deux mondes – automatisation et développement web. Parlons-en.

Tags

WinCC UnifiedReactJavaScriptHMITIA PortalSiemensAutomatisierungWeb-EntwicklungCustom Web ControlsV8 EngineIndustry 4.0

Des questions sur votre projet d'automatisation ?

En tant qu'ingénieur en automatisation basé à Stadtbredimus, Luxembourg, j'offre des consultations initiales gratuites pour les entreprises de la Grande Région Saar-Lor-Lux.

David Prybisch · API · IHM · Mise en service

Related Articles

Programmation API : Bonnes Pratiques
engineering
15 min

Programmation API : Bonnes Pratiques

Méthodes éprouvées pour des programmes API maintenables : conventions de nommage, structuration et gestion des erreurs avec Siemens TIA Portal selon IEC 61131-3.

Read more: Programmation API : Bonnes Pratiques