Hoch belastetes verteiltes Steuerungssystem eines modernen Kernkraftwerks

Ohne Strom wird es keine hoch ausgelasteten Internetdienste geben, die wir so lieben. Seltsamerweise sind auch die Steuerungssysteme für Stromerzeugungsanlagen wie Kernkraftwerke verteilt, unterliegen ebenfalls hohen Belastungen und erfordern viele Technologien. Darüber hinaus wird der Anteil der Kernenergie an der Welt zunehmen, die Verwaltung dieser Anlagen und ihre Sicherheit sind ein sehr wichtiges Thema.

Lassen Sie uns daher verstehen, was da ist, wie es angeordnet ist, wo die wichtigsten architektonischen Schwierigkeiten liegen und wo Sie im Kernkraftwerk modische ML- und VR-Technologien anwenden können.



Ein Kernkraftwerk ist:

  • Im Durchschnitt 3-4 Leistungsteile mit einer durchschnittlichen Leistung von 1000 MW pro KKW, da physische Systeme sowie Dienste im Internet gesichert werden müssen.
  • Etwa 150 spezielle Subsysteme, die das Funktionieren dieser Einrichtung sicherstellen. Dies ist beispielsweise ein internes Reaktorsteuersystem, ein Turbinensteuersystem, ein chemisches Wasseraufbereitungssteuersystem usw. Jedes dieser Subsysteme ist in ein riesiges System der oberen Blockebene (SVBU) eines automatisierten Prozessleitsystems (ACS TP) integriert.
  • 200-300 Tausend Tags, dh Signalquellen, die sich in Echtzeit ändern. Sie müssen verstehen, was eine Änderung ist, was nicht, wenn wir etwas nicht verpasst haben und wenn wir etwas verpasst haben, was Sie dagegen tun können. Diese Parameter werden von zwei Bedienern überwacht, einem führenden Reaktorsteuerungsingenieur (VIUR) und einem führenden Turbinensteuerungsingenieur (VIUT).
  • Zwei Gebäude, in denen sich die meisten Teilsysteme konzentrieren: ein Reaktor und ein Turbinenraum. Zwei Personen müssen in Echtzeit eine Entscheidung treffen, falls nicht standardmäßige oder standardmäßige Ereignisse auftreten. Eine so hohe Verantwortung wird nur zwei Personen auferlegt, denn wenn es mehr von ihnen gibt, müssen sie sich untereinander einigen.


Über den Sprecher: Vadim Podolny ( elektrovenisch ) vertritt die Moskauer Fabrik Fizpribor. Dies ist nicht nur eine Fabrik, sondern in erster Linie ein Ingenieurbüro, in dem sowohl Hardware als auch Software entwickelt werden. Der Name ist eine Hommage an die Geschichte des Unternehmens, die seit 1942 besteht. Das ist nicht sehr modisch, aber sehr zuverlässig - das wollten sie ihnen sagen.

IIoT in Kernkraftwerken


Fizpribor Enterprise produziert die gesamte Palette an Geräten, die für die Anbindung der gesamten Anzahl von Subsystemen erforderlich sind - dies sind Sensoren, nachgeschaltete Automatisierungssteuerungen, Plattformen zum Aufbau nachgeschalteter Automatisierungssteuerungen usw.

Im modernen Design ist der Controller nur ein Industrieserver mit einer erweiterten Anzahl von Eingabe- / Ausgabeports für die Verbindung von Geräten mit speziellen Subsystemen. Dies sind riesige Schränke - genau wie Serverschränke, nur verfügen sie über spezielle Controller, die das Rechnen, Sammeln, Verarbeiten und Verwalten ermöglichen.



Wir entwickeln Software, die auf diesen Controllern und auf Gateway-Geräten installiert ist. Wie überall haben wir auch Rechenzentren, eine lokale Cloud, in der Berechnung, Verarbeitung, Entscheidungsfindung, Prognose und alles, was für das Funktionieren des Steuerobjekts erforderlich ist, stattfinden.

Es sollte beachtet werden, dass in unserem Jahrhundert die Ausrüstung abnimmt und intelligenter wird. Viele Geräte verfügen bereits über Mikroprozessoren - kleine Computer, die eine Vorverarbeitung ermöglichen, wie es heute üblich ist - Grenzberechnungen, die durchgeführt werden, um das Gesamtsystem nicht zu überlasten. Daher kann man sagen, dass das moderne automatisierte Prozessleitsystem von KKW bereits so etwas wie ein industrielles Internet der Dinge ist.

Die Plattform, die dies steuert, ist die IoT-Plattform, von der viele gehört haben. Es gibt jetzt eine beträchtliche Anzahl von ihnen, unsere ist sehr eng an die Echtzeit gebunden.

Darüber hinaus werden End-to-End- Überprüfungs- und Validierungsmechanismen entwickelt, um Kompatibilitäts- und Zuverlässigkeitsprüfungen bereitzustellen. Dazu gehören auch Stresstests, Regressionstests und Unit-Tests - alles, was Sie wissen. Nur dies geschieht mit der von uns entworfenen und entwickelten Hardware und der Software, die mit dieser Hardware funktioniert. Cybersicherheitsprobleme (durch Design sicher usw.) werden angesprochen.



Die Abbildung zeigt die Prozessormodule, die die Steuerungen steuern. Dies ist eine Plattform mit 6 Einheiten und einem Gehäuse zum Platzieren von Motherboards, auf der wir die benötigten Geräte, einschließlich Prozessoren, auf der Oberfläche montieren. Jetzt haben wir eine Welle der Importsubstitution, wir versuchen, inländische Verarbeiter zu unterstützen . Jemand sagt, dass dadurch die Sicherheit industrieller Systeme erhöht wird. Dies ist wahr, wenig später werde ich erklären, warum.

Sicherheitssystem


Jedes Prozessleitsystem in einem Kernkraftwerk ist als Sicherheitssystem reserviert. Das Kernkraftwerk ist so ausgelegt, dass das Flugzeug darauf fällt. Das Sicherheitssystem sollte eine Notkühlung des Reaktors gewährleisten, damit dieser aufgrund der durch den Beta-Zerfall erzeugten Restwärme nicht schmilzt, wie dies im Kernkraftwerk Fukushima der Fall war. Es gab kein Sicherheitssystem, die Backup-Dieselgeneratoren wurden in einer Welle weggespült, und was passiert ist, ist passiert. Dies ist in unseren Kernkraftwerken nicht möglich, da sich dort unsere Sicherheitssysteme befinden.

Die Basis von Sicherheitssystemen ist harte Logik.

Tatsächlich debuggen wir einen oder mehrere Steueralgorithmen, die zu einem Funktionsgruppenalgorithmus kombiniert werden können, und löten diese ganze Geschichte ohne Mikroprozessor direkt auf die Platine, dh wir erhalten eine harte Logik. Wenn irgendwann ein Gerät ausgetauscht werden muss, ändern sich seine Einstellungen oder Parameter, und es müssen Änderungen am Betriebsalgorithmus vorgenommen werden. Ja, Sie müssen die Platine, auf die der Algorithmus gelötet ist, entfernen und eine neue einsetzen. Aber es ist sicher - teuer, aber sicher .



Nachfolgend ist ein Beispiel eines dreifachen Sabotageschutzsystems aufgeführt , bei dem ein Algorithmus zum Lösen eines Problems des Sicherheitssystems in der Ausführungsform zwei von drei ist. Es gibt drei von vier - es ist wie bei RAID.



Technologische Vielfalt


Erstens ist es wichtig, verschiedene Prozessoren zu verwenden. Wenn wir ein plattformübergreifendes System erstellen und ein gemeinsames System aus Modulen auswählen, die auf verschiedenen Prozessoren ausgeführt werden, wird bösartige Software zu einem bestimmten Zeitpunkt des Lebenszyklus (Design, Entwicklung, vorbeugende Wartung) in das System gelangen traf sofort die gesamte Sabotagevielfalt der Technologie.



Es gibt auch eine quantitative Vielfalt . Die Sicht auf die Felder vom Satelliten aus spiegelt das Modell wider, wenn wir eine Vielzahl von Pflanzen so weit wie möglich in Bezug auf Budget, Platz, Verständnis und Betrieb anbauen, dh Redundanz realisieren und Systeme so weit wie möglich kopieren.



Im Folgenden finden Sie einen Beispielalgorithmus für die Auswahl einer Lösung, die auf einem dreifachen Sabotageschutzsystem basiert. Der Algorithmus wird basierend auf zwei der drei Antworten als korrekt angesehen. Wir glauben, dass wir, wenn einer der Schränke ausfällt, erstens davon erfahren und zweitens die anderen beiden gut funktionieren werden. In Kernkraftwerken gibt es ganze Felder solcher Schränke.



Wir haben über Hardware gesprochen, gehen wir zu dem über, was für alle interessanter ist - zur Software.

Software. Spitze und Wirbelsäule


So sieht das Überwachungssystem dieser Schränke aus.



Das Top-Level-System (nach Low-Level-Automatisierung) bietet eine zuverlässige Erfassung, Verarbeitung und Übermittlung von Informationen an den Betreiber und andere interessierende Dienste. Zuallererst sollte es die Hauptaufgabe lösen - um alles zum Zeitpunkt der Spitzenlasten lösen zu können, kann das System im Normalbetrieb um 5-10% belastet werden. Die verbleibenden Kapazitäten arbeiten tatsächlich im Leerlauf und sind so ausgelegt, dass wir im Notfall alle Überlastungen ausgleichen, verteilen und verarbeiten können.

Das typischste Beispiel ist eine Turbine. Es liefert die meisten Informationen, und wenn es instabil zu arbeiten beginnt, geschieht DDoS tatsächlich, weil das gesamte Informationssystem mit Diagnoseinformationen dieser Turbine verstopft ist. Wenn QoS nicht gut funktioniert, können schwerwiegende Probleme auftreten: Der Bediener sieht einige wichtige Informationen einfach nicht.

In der Tat ist nicht alles so beängstigend. Ein Bediener kann 2 Stunden lang an einem physischen Reaktimeter arbeiten, jedoch einige Geräte verlieren. Um dies zu verhindern, entwickeln wir unsere neue Softwareplattform. Die Vorgängerversion bedient jetzt 15 Aggregate, die in Russland und im Ausland gebaut werden.



Eine Softwareplattform ist eine plattformübergreifende Microservice-Architektur , die aus mehreren Ebenen besteht:

  • Eine Datenschicht ist eine Echtzeitdatenbank. Es ist sehr einfach - so etwas wie Schlüsselwert, aber der Wert kann nur doppelt sein. Dort werden keine Objekte mehr gespeichert, um die Möglichkeit eines Pufferüberlaufs, Stapels oder etwas anderem vollständig auszuschließen.
  • Eine separate Datenbank zum Speichern von Metadaten. Wir verwenden PostgreSQL und andere Technologien. Grundsätzlich ist jede Technologie konfiguriert, da es keine harte Echtzeit gibt.
  • Archivierungsschicht. Dies ist ein Online-Archiv (ungefähr ein Tag) zur Verarbeitung aktueller Informationen und beispielsweise Berichte.
  • Langzeitarchiv.
  • Notfallarchiv - Eine Black Box, die verwendet wird, wenn ein Unfall auftritt und das Langzeitarchiv beschädigt wird. Darin werden Schlüsselindikatoren, Alarme und die Tatsache der Bestätigung von Alarmen aufgezeichnet ( Bestätigung bedeutet, dass der Bediener den Alarm gesehen hat und etwas unternimmt ).
  • Die logische Ebene, in der sich die Skriptsprache befindet. Der Rechenkern basiert darauf, und nach dem Rechenkern gibt es genau wie bei einem Modul einen Berichtsgenerator. Nichts Ungewöhnliches: Sie können ein Diagramm drucken, eine Anfrage stellen und sehen, wie sich die Parameter geändert haben.
  • Client-Schicht - Ein Knoten, mit dem Sie Client-Services basierend auf Code entwickeln können, enthält eine API.

Es gibt verschiedene Optionen für Clientknoten:

  • Optimiert für die Aufnahme . Es entwickelt Gerätetreiber, ist aber kein klassischer Treiber. Dies ist ein Programm, das Informationen von nachgeschalteten Automatisierungssteuerungen sammelt, Vorverarbeitung durchführt, alle Informationen und Protokolle analysiert, die von den nachgeschalteten Automatisierungsgeräten verwendet werden - OPC, HART, UART, Profibus.
  • Optimiert zum Lesen - zum Erstellen von Benutzeroberflächen, Handlern und allem, was noch weiter geht.

Basierend auf diesen Knoten bauen wir eine Cloud auf . Es besteht aus klassischen zuverlässigen Servern, die mit gängigen Betriebssystemen verwaltet werden. Wir verwenden hauptsächlich Linux, manchmal QNX.



Die Cloud wird in virtuelle Maschinen geschnitten, Container werden irgendwo gestartet. Im Rahmen der Containervirtualisierung werden verschiedene Knotentypen gestartet, die bei Bedarf unterschiedliche Aufgaben ausführen. Sie können den Berichtsgenerator beispielsweise einmal täglich ausführen, wenn alle für den Tag erforderlichen Berichtsmaterialien bereit sind, die virtuellen Maschinen entladen sind und das System für andere Aufgaben bereit ist.

Wir haben unser System Vershok genannt und den Kern des Wirbelsäulensystems - es ist klar, warum.


Wir hatten ausreichend leistungsfähige Computerressourcen auf den Gateway-Controllern und dachten, warum nicht ihre Leistung nicht nur für die Vorverarbeitung nutzen? Wir können diese Wolke und alle Grenzknoten in Nebel verwandeln und diese Kapazitäten beispielsweise mit Aufgaben wie dem Erkennen von Fehlern beladen.



Manchmal müssen die Sensoren kalibriert werden. Im Laufe der Zeit schweben die Messwerte, wir wissen, nach welchem ​​Zeitplan sie ihre Messwerte ändern werden, und anstatt diese Sensoren zu ändern, aktualisieren wir die Daten und nehmen Korrekturen vor - dies wird als Sensorkalibrierung bezeichnet.

Wir haben eine volle Nebelplattform. Ja, es führt eine begrenzte Anzahl von Aufgaben im Nebel aus, aber wir werden ihre Anzahl schrittweise erhöhen und die gesamte Cloud entladen.



Darüber hinaus haben wir einen Rechenkern. Wir enthalten eine Skriptsprache, wir können mit Lua, mit Python (zum Beispiel PyPy-Bibliothek), mit JavaScript und TypeScript arbeiten, um Probleme mit Benutzeroberflächen zu lösen. Wir können diese Aufgaben sowohl innerhalb der Cloud als auch an den Grenzknoten gleich gut ausführen. Jeder Mikrodienst kann auf dem Prozessor mit absolut jeder Speichermenge und jeder Leistung gestartet werden. Er wird einfach die Informationsmenge verarbeiten, die bei aktuellen Kapazitäten möglich ist. Das System funktioniert jedoch auf absolut jedem Knoten gleich. Es eignet sich auch für die Platzierung auf einfachen IoT-Geräten.

Jetzt erhält diese Plattform Informationen von verschiedenen Subsystemen: dem physischen Schutzniveau, Zugangskontrollsystemen, Informationen von Kameras, Brandschutzdaten, Prozesskontrollsystemen, IT-Infrastruktur, Informationssicherheitsereignissen.

Basierend auf diesen Daten wird Behavior Analytics erstellt - Verhaltensanalyse. Beispielsweise kann ein Bediener nicht angemeldet werden, wenn die Kamera nicht aufgezeichnet hat, dass er in den Bedienerraum gegangen ist. Oder ein anderer Fall: Wir sehen, dass ein Kommunikationskanal nicht funktioniert, während wir beheben, dass zu diesem Zeitpunkt die Rack-Temperatur geändert wurde und die Tür geöffnet wurde. Jemand kam herein, öffnete die Tür, zog heraus oder schlug auf das Kabel. Dies sollte natürlich nicht sein, aber eine Überwachung ist weiterhin erforderlich. Es ist notwendig, die größtmögliche Anzahl von Fällen zu beschreiben, damit wir das mit Sicherheit wissen, wenn plötzlich etwas passiert.



Oben sind Beispiele für die Ausrüstung, mit der all dies funktioniert, und ihre Parameter:

  • Auf der linken Seite befindet sich ein normaler Supermicro-Server. Die Wahl fiel auf Supermicro, da damit alle Möglichkeiten des Eisens sofort verfügbar sind und es möglich ist, Haushaltsgeräte zu verwenden.
  • Auf der rechten Seite befindet sich die Steuerung, die in unserem Werk hergestellt wird. Wir vertrauen ihm voll und ganz und verstehen, was dort passiert. Auf der Folie ist es voll mit Computermodulen geladen.

Unser Controller arbeitet mit passiver Kühlung und ist aus unserer Sicht viel zuverlässiger. Daher versuchen wir, die maximale Anzahl von Aufgaben auf Systeme mit passiver Kühlung zu übertragen. Jeder Lüfter wird irgendwann ausfallen und die Lebensdauer des Kernkraftwerks beträgt 60 Jahre, mit der Möglichkeit einer Verlängerung auf 80. Es ist klar, dass während dieser Zeit geplante vorbeugende Reparaturen durchgeführt und die Ausrüstung ersetzt werden. Wenn Sie jetzt ein Objekt nehmen, das in den 90er oder 80er Jahren gestartet wurde, ist es sogar unmöglich, einen Computer zu finden, auf dem die dort funktionierende Software ausgeführt werden kann. Daher muss alles neu geschrieben und geändert werden, einschließlich der Algorithmusik.

Unsere Dienste arbeiten im Multi-Master-Modus, es gibt keinen einzigen Fehlerpunkt, alles ist plattformübergreifend. Die Knoten sind selbstbestimmt, Sie können Hot Swap durchführen, wodurch Sie Geräte hinzufügen und ändern können, und es besteht keine Abhängigkeit vom Ausfall eines oder mehrerer Elemente.



Es gibt so etwas wie eine Systemverschlechterung . Bis zu einem gewissen Grad sollte der Bediener nicht bemerken, dass etwas mit dem System nicht stimmt: Das Prozessormodul ist durchgebrannt oder die Stromversorgung des Servers ist verschwunden und es wurde ausgeschaltet. Der Kommunikationskanal war überlastet, weil das System nicht zurechtkommt. Diese und ähnliche Probleme können durch Sichern aller Komponenten und des Netzwerks gelöst werden. Jetzt haben wir eine Doppelstern- und Maschentopologie. Wenn ein Knoten ausfällt, können Sie anhand der Topologie des Systems den normalen Betrieb fortsetzen.



Dies sind Vergleiche der Supermicro-Parameter (oben) und unseres Controllers (unten), die wir aus Aktualisierungen erhalten, die auf einer Echtzeitdatenbank basieren. In den Abbildungen 4 und 8 ist die Anzahl der Replikate dargestellt, dh die Datenbank verwaltet den aktuellen Status aller Knoten in Echtzeit - dies sind Multicast und Echtzeit. In der Testkonfiguration gibt es ungefähr 10 Millionen Tags, dh Quellen für Signaländerungen.

Supermicro weist durchschnittlich 7 M / s oder 5 M / s auf, wobei die Anzahl der Repliken zunimmt. Wir kämpfen darum, die Leistung des Systems nicht zu verlieren und die Anzahl der Knoten zu erhöhen. Wenn es notwendig wird, die Einstellungen und andere Parameter zu verarbeiten, verlieren wir leider mit zunehmender Anzahl von Knoten an Geschwindigkeit. Je mehr Knoten vorhanden sind, desto geringer sind die Verluste.

Auf unserem Controller (auf Atom) sind die Parameter um eine Größenordnung kleiner.

Um einen Trend zu erstellen, wird dem Benutzer eine Reihe von Tags angezeigt. Unten finden Sie eine berührungsorientierte Oberfläche für den Bediener, in der er Optionen auswählen kann. Jeder Clientknoten verfügt über eine Kopie der Datenbank. Der Clientanwendungsentwickler arbeitet mit lokalem Speicher und denkt nicht daran, Daten über das Netzwerk zu synchronisieren. Er führt lediglich Get, Set über die API durch.



Die Entwicklung einer Client-Schnittstelle für Prozessleitsysteme ist nicht komplizierter als die Entwicklung eines Standorts. Zuvor haben wir auf dem Client in Echtzeit gekämpft und C ++, Qt verwendet. Jetzt haben wir es abgelehnt und alles auf Angular gemacht. Mit modernen Prozessoren können Sie die Zuverlässigkeit solcher Anwendungen aufrechterhalten. Das Web ist bereits zuverlässig genug, obwohl der Speicher natürlich schwebend ist.

Die Aufgabe, den Betrieb der Anwendung für ein Jahr ohne Neustart sicherzustellen, ist nicht mehr relevant. All dies ist in Electron verpackt und bietet Plattformunabhängigkeit, dh die Möglichkeit, die Schnittstelle auf Tablets und Panels auszuführen.

Angst


Ein Alarm ist das einzige dynamische Objekt , das im System angezeigt wird. Nach dem Systemstart ist der gesamte Objektbaum fixiert, von dort kann nichts gelöscht werden. Das heißt, das CRUD-Modell funktioniert nicht. Sie können nur "Als gelöscht markieren" markieren. Wenn Sie ein Tag löschen müssen, wird es einfach markiert und vor allen Benutzern verborgen. Es wird jedoch nicht gelöscht, da der Löschvorgang komplex ist und den Status des Systems und seine Integrität beeinträchtigen kann.

Ein Alarm ist ein Objekt, das angezeigt wird, wenn ein Signalparameter eines bestimmten Geräts über die Einstellungen hinausgeht. Die Einstellungen sind die unteren und oberen Warngrenzen der Werte: Notfall, kritisch, überkritisch usw. Wenn ein Parameter auf einen bestimmten Skalenwert fällt, wird ein entsprechender Alarm angezeigt.

Die erste Frage, die sich stellt, wenn ein Alarm auftritt, ist, wem eine Nachricht darüber angezeigt werden soll. Zwei Bediener alarmieren? Aber unser System ist universell, es kann mehr Betreiber geben. Im Kernkraftwerk sind die Datenbanken des Turbinenbetreibers und des Reaktorbetreibers „geringfügig unterschiedlich“, da die Ausrüstung unterschiedlich ist. Es ist natürlich klar, wenn der Signalpegel die Grenzen im Reaktorraum überschritten hat, wird dies vom führenden Reaktorsteuerungsingenieur in der Turbine gesehen - von der Turbine.

Angenommen, es gibt viele Operatoren.Dann können Sie den Alarm nicht jedem zeigen. Oder wenn jemand es zur Bestätigung nimmt, muss es sofort für die Bestätigung auf allen anderen Knoten gesperrt werden. Dies ist eine Echtzeitoperation, und wenn zwei Bediener denselben Alarm bestätigen, beginnen sie sofort mit der Verwaltung von Geräten und Algorithmen. All dies hängt mit der Netzwerk-Multithread-Programmierung zusammen und kann zu schwerwiegenden Systemkonflikten führen. Daher muss jedes dynamische Objekt angezeigt werden, wobei die Möglichkeit besteht, es zu steuern und den Alarm nur einem Bediener "zum Schweigen zu bringen".

, . - “” – . , , , , “” . , . : , . , .



, , .



  • – ,
  • – ,
  • — ,
  • c – .

– .

. , .





.



, , , , .



– , . SCADA/HMI , , , – , , . , : «, ! Illustrator, Sketch – , SVG». SVG . , .

, . API, . , , , . , , . , , , , – . , , , , .



, . , . Data Lake. , multitenancy (, ). .

, . , , , .

, : . , 10 100 , – .



, . , .



— . , , . – , : -1200 10 .

, , , , , - , , .… .

. . 5 : , , , . .

:

  • - ( CPU);
  • Computational Fluid Dynamics (CFD) ( GPU).

, . - , , ( ). .

60 , ( , ). KPI , .

Schalttafel


.



– , – .

. – . , , , – . VR- , .



, , , . ( ) — , - . , , . — ( ), – ( ), .

, , — . . . .

ITER . , – . , , . , !

Wir werden uns bei InoThings Conf am 4. April stärker auf die Entwicklung von Software und Hardware für das Internet der Dinge konzentrieren . Letztes Jahr gab es Berichte sowohl über IIoT als auch über Elektrizität . In diesem Jahr wollen wir das Programm noch ereignisreicher gestalten. Schreiben Sie Bewerbungen, wenn Sie bereit sind, uns dabei zu helfen.

Source: https://habr.com/ru/post/de439510/


All Articles