Zielsystem-spezifische Eigenschaften und Einschränkungen
Beachten Sie, dass Ihr eingesetztes →Zielsystem die Verwendung von Neuron Power Engineer in folgenden Aspekten beeinflussen kann:
In diesem Artikel: |
---|
Dieser Artikel behandelt Zielsysteme, auf die Sie Anwendungen in allen Varianten von Neuron Power Engineer laden können. Daher ist es möglich, dass hier angeführte Zielsysteme nicht notwendigerweise für Ihre Ausbaustufe von Neuron Power Engineer unterstützt werden. |
Aufrufpriorität von POE
Laut der →IEC-Norm kann die Priorität eines Tasks zur Steuerung von unterbrechenden Aufrufen von →POE ("preemptive scheduling") oder nicht-unterbrechenden Aufrufen von POE ("non-preemptive scheduling") verwendet werden. Die von Neuron Power Engineer unterstützten Zielsystem ermöglichen nur den unterbrechenden Aufruf. Dabei kann eine auszuführende POE eine POE mit niederer Priorität in der gleichen Ressource unterbrechen, d.h. die Ausführung der Einheit mit der niedrigeren Priorität kann aufgeschoben werden, bis die Ausführung der Einheit mit der höheren Priorität vollendet ist. Eine POE darf die Ausführung einer anderen Einheit nicht unterbrechen, die eine gleiche oder höhere Priorität besitzt.
Informieren Sie sich unter Mehrere Tasks im SPS-Objekt deklarieren, wie die Priorität für unterschiedliche Tasks vergeben werden.
Controllino und Arduino Nano ermöglichen nur den nicht-unterbrechenden Aufruf. Dieser Fakt ist jedoch nicht weiter relevant, da nur ein Task für Controllino und Arduino Nano unterstützt wird (siehe unten).
Einfluss der Aufrufpriorität auf Linux-basierten Zielsystemen
Linux-basierte Zielsysteme sind: →phyBOARD-Regor, →phyBOARD-Wega, →Raspberry Pi, →Revolution Pi und bei Verwendung der Plattform LinuxX86
Diese Zielsysteme unterstützen unterschiedliche Arten von →Tasks:
-
Echtzeitfähige Tasks (Tasks = Threads; siehe nachfolgender Hinweis) – Solche Tasks dürfen nur nur eine kurze Laufzeit haben. Diese Laufzeit ist natürlich abhängig vom Inhalt des zugehörigen Programms.
Falls diese Laufzeit den vom Betriebssystem vorgegebenen Wert überschreitet, unterbricht das Betriebssystem die Ausführung aller echtzeitfähigen Tasks automatisch. Dieser Mechanismus ist auch als "Real-Time Throttling" bekannt. Aufgrund der Unterbrechung ist die Echtzeitfähigkeit der Tasks nicht mehr gewährleistet.
Eine übliche Einstellung für das "Real-Time Throttling" ist eine Unterbrechung von 50 ms in einer Sekunde. -
Nicht echtzeitfähige Tasks
Hinweis: Die in Neuron Power Engineer erstellten Tasks werden üblicherweise als echtzeitfähige Betriebssystem-Threads angelegt. Ausnahme sind Tasks, die mit der niedrigsten Priorität 65535
erstellt werden. Diese Tasks werden als nicht-echtzeitfähige Betriebssystem-Threads angelegt.
Endian-Format der Daten
Alle von Neuron Power Engineer unterstützten Zielsysteme speichern die Daten im Little-→Endian-Format. Falls Sie Daten im Big-Endian-Format benötigen, verwenden Sie die entsprechenden Convert-Funktionen.
Zugriff auf IOs
Wenn globale Variablen basierend auf einem direkt abgeleiteten Datentyp (siehe Neuron Power Engineer Benutzerdokumentation, "Deklaration von globalen Variablen in ST" und "Deklaration eines direkt abgeleiteten Datentyps in ST") deklariert werden, darf der Pragma |
Die im Plattform-Toolkit definierten Datentypen müssen die folgende Größe haben: (Das Plattform-Toolkit wird vom Systemintegrator zur Verfügung gestellt.)
Für Informationen, ob diese Definitionen erfolgt sind, kontaktieren Sie den Systemintegrator. |
Genauigkeit der mathematischen Funktionen
Genauigkeit und Verhalten von mathematischen Funktionen Mathematische Funktionen, die Gleitkommazahlen (
|
Bausteine/Variablen mit LREAL nicht für Controllino oder Arduino Nano verwenden Falls Sie eine Anwendung für einen →Controllino oder →Arduino Nano erstellen, vermeiden Sie die Verwendung von Bausteinen/Variablen, die Beachten Sie, dass der DIV_TIME-Baustein intern immer mit |
Verhalten von Konvertierungsbausteinen bei nicht-übereinstimmendem Wertbereich
|
Bekannte Beispiele:
Zielsystem |
Ergebnis der mathematischen Funktion |
---|---|
→Laufzeitsystem für Windows |
|
|
|
RTOS32-Compiler |
|
Der RTOS32-Compiler meldet einen Fehler, wenn die Anwendung eine bestimmte Division enthält. Falls Sie den RTOS32-Compiler verwenden, vermeiden Sie eine bestimmte Division (siehe das folgende Beispiel) in der Anwendung.
Beim Erstellen der Anwendung melden die Compiler die erwartete Warnung |
Ressourcen, Tasks, Programminstanzen: Maximale Anzahl
Zielsystem
|
Elemente in einem SPS-Objekt |
||
---|---|---|---|
Programminstanzen |
|||
1 |
max. 32 |
beliebig (1) |
|
Windows NT/X86 |
1 |
max. 32 |
beliebig (1) |
Linux-basierte Zielsysteme: |
1 |
max. 32 |
beliebig (1) |
1 |
1 |
1 |
Hinweis:
(1) = durch die Speicherkapazität der SPS beschränkt
Speicher für STRING-Werte
Der Speicher, der für STRING
-Werte zur Verfügung steht, ist auf 1.024 Bytes beschränkt. Ausnahme: Bei Controllino oder Arduino Nano ist er auf 64 Bytes beschränkt.
Diese Einschränkung wirkt sich auf Bausteine mit STRING
-Werten (z.B. String-Bausteine) aus, falls diese verschachtelt in der Anwendung verwendet werden. Beachten Sie, dass 1 Byte vom Speicher für interne Zwecke verwendet wird. Unter "Wie kann der Ergebniswert bei verschachtelten String-Bausteinen vollständig abgebildet werden?" finden Sie mehr Informationen und Beispiele dazu.
Konsequenz: Bei einem Controllino und Arduino Nano ist es möglich, dass der Ausgang ENO
dieser Bausteine "früher" auf den Wert FALSE
(oder eine Entsprechung) gesetzt wird – im Vergleich zu den anderen Zielsystemen.
Zeitdauer-Literal
→Zeitdauer-Literale (z.B. TIME#14ms
) werden korrekt auf der →SPS abgebildet, sofern diese innerhalb der entsprechenden Timer-Frequenz liegen, die für die SPS gilt.
Zielsystem |
Timer-Frequenz |
kleinstmögliches Inkrement in Zeitdauer-Literal (1) |
---|---|---|
→Laufzeitsystem für Windows |
10 kHz |
100 us |
Linux-basierte Zielsysteme: |
1 MHz |
1 us |
Controllino |
1 kHz |
1 ms |
Arduino Nano |
1 kHz |
1 ms |
Andere Angaben für Zeitdauer-Literalen und Variablenwerte (z.B. im ST-Editor) sind in Neuron Power Engineer möglich, sie werden aber das nächste Vielfache der kleinstmöglichen Angabe abgerundet. Die Angaben werden dementsprechend in der Sicht Variablenwerte dargestellt.
Beispiel: Das Zeitdauer-Literal t#12h4m34ms230us400ns
wird bei Neuron RTS max für Windows auf t#12h4m34ms200us
abgerundet und so verarbeitet.
Zeitliterale
Neuron RTS max speichert die Datentypen TIME
, DATE
, TIME_OF_DAY
und DATE_AND_TIME
in einem vorzeichenbehafteten 64-Bit-langen Ganzzahl-Datentyp in Form von "Ticks". Die Zahl der Ticks pro Zeiteinheit (1 Sekunde) ist von der Timer-Frequenz der Zielsystemplattform abhängig (siehe die vorhergehende Tabelle). Dadurch liegen die Wertebereiche für die Datentypen TIME
, DATE
, TIME_OF_DAY
und DATE_AND_TIME
auf der SPS außerhalb der durch Neuron Power Engineer verarbeitbaren Grenzen. Wenn Sie →Zeitliterale in Neuron Power Engineer verwenden, gelten somit die Unter- und Obergrenzen für Neuron Power Engineer (siehe Unterstützte Datentypen).
Zeitverhalten der Zielsysteme
Eine Anwendung wird periodisch aufgrund des definierten Zeitdauer-Literals für den Task (= Zykluszeit) ausgeführt. Das eingesetzte Zielsystem beeinflusst die Ausführung so:
-
Für die Ausführung wird die Zykluszeit auf ein Vielfaches der Standard-Timer-Auflösung abgerundet. Dieser gerundete Wert wird als Intervall für die Ausführung verwendet. Beachten Sie, dass die Zyklen der Anwendung bei einem Vielfachen der Standard-Timer-Auflösung beginnen.
Die Standard-Timer-Auflösung entspricht der minimalen Zykluszeit.
Die Standard-Timer-Auflösung ist abhängig vom Zielsystem:Zielsystem
Standard-Timer-Auflösung
Neuron RTS max für Windows
1 ms
Arduino Nano
1 ms
Controllino
1 ms
Linux-basierte Zielsysteme:
→phyBOARD-Regor, →phyBOARD-Wega, →Raspberry Pi, →Revolution Pi und bei Verwendung der PlattformLinuxX86
500 us
Beispiel: Bei einer definierten Zykluszeit
TIME#3.3ms
beträgt das Intervall für die Ausführung:-
TIME#3ms
für einen Windows-Rechner – Die Zyklen der Anwendung beginnen also bei einem Vielfachen vonTIME#3ms
-
TIME#3.25ms
für einen Raspberry Pi – Die Zyklen der Anwendung beginnen also bei einem Vielfachen vonTIME#3.25ms
.
-
-
Falls eine Anwendung so lange ausgeführt wird (siehe "3. Ausführung" in den folgenden Abbildungen), dass das nächste Intervall bereits begonnen hat, beeinflusst das Zielsystem den Startzeitpunkt der nächsten Ausführung.
Bei den folgenden Zielsystemen startet die nächste Ausführung erst, wenn das Intervall danach beginnt (siehe "4. Ausführung"). Ein Intervall wird also übersprungen. Nachfolgende Intervalle und Ausführungen (siehe "5. Ausführung") verschieben sich nicht.
-
Neuron RTS max für Windows
-
Neuron RTS max für Linux x86
-
Arduino Nano
-
Controllino
-
Revolution Pi
-
Raspberry Pi
-