1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.
-
Upload
gairovald-durrer -
Category
Documents
-
view
175 -
download
6
Transcript of 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.
1
IEC - Grundlagen und Variablen
Programmierstrategien der IEC 61131-3
2
Programmierung nach IEC-Standard
Vorteile:
• Bessere Übersichtlichkeit des Programms
• Wiederverwendbarkeit von Programmteilen durch Funktionen und
Funktionsblöcken (dokumentiert und getestet)
• Erstellen einer eigenen Bibliothek
• Austausch von Bibliotheken zwischen verschiedenen Anwendern
• Der Programmierer kann Programmteile in anderen Programmiersprachen
erstellen, z.B.: Strukturierten Text
• Globaler Standard
• Qualitätsverbesserung der SPS-Programme
3
Programmierung nach IEC-Standard
In Sachen: Software-Qualität:
• Erlernte Programmiertechniken finden in unterschiedlichen
industriellen Umgebungen wieder Verwendung
• Reduzierung von Missverständnissen und Fehlern
• Abgegrenzte Softwaremodule können einzeln ausgetestet werden
(klare Schnittstellen)
4
IEC 61131-3 Allgemeine Elemente
• Software-Modell- Konfiguration- Resourcen- Tasks
• Programm-Organisations-Einheiten- Programme- Funktions-Blocks- Funktionen
• Datentypen & Variablen
5
Programme und Tasks nach IEC
• Tasks in der NJ sind zeitorientiert• Es können mehrere Programme einer Task zugeordnet werden
Programme einer Taskwerden nacheinanderabgearbeitet
POE =Programm-Organisations-Einheiten
ResourceResource
6
Task-Typen im NJ- Controller
Art Beschreibung Anzahl Priorität“Primary Periodic Task”
Wird mit höhster Priorität ausgeführt!Beinhaltet PLC & Motion Engine sowie die EtherCAT Kommunikation
1 4 (fest).
“Periodic Task” …wird in den “Pausen” des “Primary Periodic Task” ausgeführt.
0-3 16,17,18
“Event Task”(Units Ver.1.1)
…wird abhängig von Bedingungen ausgeführt ・ Steuerungsbefehlen・ Grenzwert überschreitungen ・ Interrupt von CJ-series Unit
0-32 8 (fest), 48 (fest)
Execution priority 0
Execution priority 1
Execution priority 2
Hoch
Niedrig
7
Unterschied FB und FUN (Funktion)
• Funktion:
- Hat keinen Instanzspeicher, wie ein Befehl
- Für einfache Berechnungen geeignet
• Funktionsblock:
- Hat einen Instanzspeicher
- benötigt einen Namen dafür
- Kann sich Werte von der letzten Bearbeitung
“merken”
Kein Name benötigt
Kein Name benötigt
Mit Name(Instanz)Mit Name(Instanz)
8
Variablen nach IEC-Standard
Variable = (Name) + (Datentyp) + (Attribute)
• Die komplette NJ-Programmierung ist vollständig Variablen-orientiert
• Es gibt keine Adressen mehr
• Im Programm kommen nur noch (symbolische) Variablennamen vor.
• Es stehen alle IEC-Datentypen zur Verfügung
• Befehle funktionieren nur bei Variablen mit bestimmten Datentypen! (wie bei
einer Hochsprache)
9
Variablen, globale und lokale
• Globale Variablen können überall verwendet werden.• Lokale, interne Variablen, werden nur innerhalb des eigenen Programms
verwendet
10
Tabelle der globalen Variablen
• Die Ein- und Ausgänge aus der E/A-Zuordnung und auch Achs-Variablen
werden automatisch in die globale Symboltabelle eingetragen
11
Globale Variablen in Programmen
• Wird eine globale Variable in einem Programm benutzt, so wird sie dort
automatisch als externe Variable deklariert, dies ist eine Besonderheit bei
Sysmac Studio, da das sonst nur bei FBs üblich ist.
12
Lokale Variablen
• Die Werte von lokalen Variablen können außerhalb weder geschrieben noch gelesen werden
• Man kann in anderen Programmen den gleichen Namen noch einmal verwenden, es ist aber dann eine andere Variable und es stehen darauf andere Werte
Project
POE
Algorithm
Local variables table
Internal variablesVariable AVariable B
Internal variablesVariable AVariable B
External VariableExternal Variable
POE
Algorithm
Local variables table
Internal variablesVariable AVariable C
Internal variablesVariable AVariable C
External VariableExternal Variable
Man kann in anderen Programmen den gleichen Namen noch einmal verwenden, es ist aber dann eine andere Variable und es stehen darauf andere Werte
Man kann in anderen Programmen den gleichen Namen noch einmal verwenden, es ist aber dann eine andere Variable und es stehen darauf andere Werte
Lokale, interne Variablen, werden nur innerhalb des eigenen Programms verwendet.
Lokale, interne Variablen, werden nur innerhalb des eigenen Programms verwendet.
OK
NG
Lokale, interne Variablen, werden nur innerhalb des eigenen Programms verwendet .
Lokale, interne Variablen, werden nur innerhalb des eigenen Programms verwendet .
OK
13
Lokale Variablen, Beispiel
(In FBs gibt es verschiedene interne Variablentypen: Eingang, Ausgang, Ein/Aus)
In jedem Programm (POE) gibt es eine lokale Symboltabelle
14
FB-Ausgangsvariablen im Programm
• FB-Ausgangsvariablen müssen nicht zusäztlich als Variablen definiert
werden, sie können mit vorgesetztem Instanznamen und Punkt im Programm
verwendet werden,
- Jedoch nur lesend
• V1.0 Beschränkung:
- Keine gleichen Symbolnamen in globalen und lokalen Symboltabellen!
15
Symbol-Attribute
Attribute Beschreibung
Variablenname Name, um die Variable zu identifizieren.
Datentyp Datentyp und einen Wertebereich der Variable.
AT - Adresse Wenn eine feste E/A-Adresse einer CJ-Baugruppe als Variable verwendet wird.
Remanent Behält Werte bei, wenn die Stromversorgung abgeschaltet wird.
Anfangswert Wird der Variable zugewiesen, in einer der nachfolgenden Situationen:• Beim Einschalten• Bei Übergang in den RUN Modus • Bei Übertragung des Programms.
Konstante Schreibschutz, Werte können vom Programm nicht geändert werden.
Veröffentlichung im Netzwerk
Variablen können gelesen / geschrieben werden von außerhalb des Controllers durch die CIP-Kommunikation und der Daten-Link-Funktion.
Kommunikations Schreibschutz
Schreibschutz des Wertes durch die CIP-Message Kommunikation.( zukünftig unterstützt)
Flanke Steigende/fallende Flanke der Eingänge von Funktionsblöcken
16
Datentypen nach IEC-Standard
Klassifikation Datentyp Größe (Byte) Wertebereich Beispiele für Zahlenwerte bzw. Konstanten (literal)
Bit BOOL 2 0/1 oder FALSE/TRUE TRUE/FALSE BOOL#1
Bit-kombination
BYTE 1 16#00 bis FF BYTE#16#A5BYTE#2#10100101BYTE#2#1010_0101
(*) Dezimalzahlen sind nicht erlaubt
WORD 2 16#0000 bis FFFF
DWORD 4 16#00000000 bis FFFFFFFF
LWORD 8 16#0000000000000000 bis FFFFFFFFFFFFFFFF
Ganzzahl/Integer
SINT 1 -128 bis +127 SINT#10#100SINT#100SINT#16#64
Konstanten ohne vorangestellten Datentyp wird DINT zugeordnet.
(*)Einschränkung für U*** (U= unsigned) negative Zahlen sind nicht erlaubt.
INT 2 -32768 bis +32767
DINT 4 -2147483648 bis +2147483647
LINT 8 -9223372036854775808 bis+9223372036854775807
USINT 1 0 bis +255
UINT 2 0 bis +65535
UDINT 4 0 bis +4294967295
ULINT 8 0 bis +18446744073709551615
17
Datentypen nach IEC-Standard
Klassifikation Datentyp Größe (Byte) Wertebereich Beispiele für Zahlenwerte bzw. Konstanten (literal)
FließkommaREAL
REAL 4 Signifikante Ziffernzahl: 7 Digits-3.402823e+38 bis -1.175494e-380-1.175494e-38 bis 3.402823e+38+∞/-∞
REAL#10#-12.0
Konstanten ohne vorangestellten Datentyp wird LREAL zugeordnet
LREAL 8 Signifikante Ziffernzahl: 15 Digits-1.79769313486231e+308 bis -2.22507385850720e-30802.22507385850720e-308 bis 1.79769313486231e+308+∞/-∞
Zeitdauer TIME 8 T#-9223372036854.775808ms bis T#+9223372036854.775807ms
TIME#60s500ms , T#60s500msT#16d5h3m4s
Datum DATE 8 D#1970-01-01 bis D#2554-07-21 DATE#2010-12-3 ,D#1994-09-23
Zeit TIME_OF_DAY 8 TOD#00:00:00.000000000 bis TOD#23:59:59.999999999
TOD#12:16:28.12
Datum und Zeit
DATE_AND_TIME 8 DT#1970-01-01-00:00:00.000000000 bis DT#2554-07-21-23:34:33.709551615
DT#1994-09-23-12:16:28.12
Zeichenkette STRING 0 - 1985 The character code is UTF-8. ‘OMRON' ‘PLC'
18
Array nach IEC-Standard
In einem Array (deu:Feld) können die Daten so abgelegt werden, dass über ein Index darauf zugegriffen werden kann. Alle Daten haben den gleichen Datentyp.
Spezifikation
Elementnummer 0 bis 65535 (Der Startindex eines Arrays muss nicht Null sein. )
Verfügbare Datentypen
Index Konstanten: Integer zwischen 0 bis 65535. und Variablen:Es gibt ein-, zwei- oder drei-dimensionale Arrays
Der Index steht in eckigen Klammern, Beispiele: a[1] oder Temperatur[2,3] oder vektor [x,y,z]Im Strukturierten Text kann der Index auch Berechnungsausdrücke enthalten: Beispiel Y := x [a+b];
Klassifikation Datentyp
Basic data type BOOL data type, Bit string type, Integer type, REAL numbers, Duration type, Date data type, Time data type, Date und time data type, und String type
unterstützt
Derivative data type Structure, Union, und Enumeration unterstützt
POU Instance type unterstützt
Klassifikation Datentyp
Basic data type Integer type SINT, INT, DINT, USINT, UINT, und UDINTNote: Array variables are available.
unterstützt
LINT, ULINT nicht unterstützt
BOOL data type, Bit string type, REAL numbers, Duration type, Date data type, Time data type, Date und time data type, und String type
nicht unterstützt
Derivative data type Structure, Union, und Enumeration nicht unterstützt
POU Instance type nicht unterstützt
19
Strukturen nach IEC-StandardBenutzerdefinierte Datentypen
• Die Struktur kann Elemente mit unterschiedlichen Datentypen beinhalten
• Die Elemente werden nicht mit einer Zahl (Index) angesprochen, wie beim
Array, sondern mit dem Namen des Elements.
• Strukturen und Arrays können gemischt werden.
• Strukturen eignen sich hervorragend für Rezepte und “Datenbausteine”
20
Array von Struktur nach IEC-Standard
• Nachdem die Struktur vom benutzerdefinierten Datentyp „Rezept“ angelegt
wurde, muss auch noch eine Variable angelegt werden.
• Dies kann ein Array sein für
z.B. 100 Rezepte
• Einzelne Elemente ruft man denn mit
Variablennamen und
Index und Strukturelementnamen
auf
21
Struktur der Programme nach IEC
• Eine Programm-Organisationseinheit (POE) besteht aus einem Algorithmus
und einer lokalen Variablentabelle.
• Funktionen oder Funktionsblöcke können im Algorithmus beschrieben werden
Eine Programm-POE kann nicht von anderen POEs aufgerufen werden.
Programm POE
Lokale Variablentabelle
FUN
FB
Task
Programm
ProgrammZuordnung
Algorithmus
22
Programme nach IEC-Standard Programmabarbeitung und Ausführungsreihenfolge
•In einer Task kann man die Reihenfolge der zugeordneten Programme bestimmen.
•Aufruf in Sysmac Studio unter Task-Einstellungen – Programmzuweisungseinstellungen
• Task und Programm haben keine eins-zu-eins - Zuordnung• Bis zu 128 Programme können einer Task zugeordnet werden.
Ausführungs-ReihenfolgeProgramm1->Programm0
23
Funktionen (FUN) nach IEC-Standard• Eine Funktion besteht aus einer lokalen Variablentabelle und einem
Algorithmus (Kontaktplan oder Strukturierter Text). • Eine Funktion wird durch ihren Namen aufgerufen, genau wie ein Befehl.
(Eine Instanz ist nicht notwendig. )
Aufbau einer Funktion
Lokale Variablen einer Funktion kann man nicht überwachen.
Local variable table
Algorithmus
Input variables
Funktion
Eingänge Ausgänge
Befehle (außer FBs)
FUN
In-out variables
Output variables
(return value)Local variables
EN
Result := MAX(In1:=Value1, In2:=Value2);
(* Aufruf ohne Formalparameter. *)
Result := MAX ( Value1, Value2 ) ;
(* EN/ENO können als Formalparameter übergeben werden *)
Result := MAX( EN:=Trig, In1:=Value1, In2:=Value2, ENO=>Done);
Verwendung im Kontaktplan
Verwendung in ST
Trig
Value1 Result
戻り値
MAX
EN In1 In2
ENO
Value2
Done
Ergebniswert
Rot: Eingänge. Blau: Ausgänge.
OMRON-spezifisch
24
Funktionsblöcke (FB) nach IEC-Standard
• Eine Funktion besteht aus einer lokalen Variablentabelle und einem Algorithmus (Kontaktplan oder Strukturierter Text).
• Einem Funktionsblock muss ein Instanzspeicher zugewiesen werden.
Aufbau einersFunktionsblocks
Lokale Variablentabelle
・ Kontaktplan oder Strukturierter Text.
・ Alle Befehle, benutzerdefinierte FUN, und benutzerdefinierte FBs.
Algorithmus
Eingänge,Ausgänge,Lokale Variablen
Instanzname
Eingänge Ausgänge
FB definition is set as an instance in the program
Verwendung im Kontaktplan
Use Image (ST)
TONinstance
TON
In PT
Q
ET
Trig
SetValue ElapValue
TimeUp
入力パラメータ 出力パラメータ
入力 出力
インスタンス名
TON_instance(In:=Trig, PT:=SetValue, Q=>TimeUp, ET =>ElapValue);TRIG is substituted for In (Input).
(* When the Input variables and the Output variables are omitted. *)TON_instance(Trig, SetValue, TimeUp, ElapTime);
Eingangsparameter Ausgangsparameter
Eingangs Variablen
AusgangsVariablen
Instanzname
Rot: Eingang. Blau: Ausgang.
25
EreignisTask 0-32
8(fest) NJ501 Ver 1 unterstützt keine
Ereignis-Tasks
Ausführungsmethode/Task nach IEC
• Eine Task enthält Ausführungsvorschriften für Programme zur Laufzeit
• Ausführungs-Intervallzeit, Priorität, (Trigger)
• Multitasking mit 4 verschiedenen Prioritäten
PeriodischeTask
PrimaryPeriodic task
PeriodischeTask
EreignisTask
AusführungsPriorität(0 bis 63)
Hoch
Low
1
0-1
0-1
0-32
Anzahl Tasks4(fest)
16
17
48(fest)
PeriodischeTask
NJ501 Ver 1 unterstützt keine Ereignis-Tasks
18
0-1
26
Primäre Periodische Task
• Hat die allerhöchste Ausführungspriorität.• Besteht aus E/A-Refresh, inkl. EtherCAT, Logik-Programm-Abarbeitung, Systemprozesse und
der Motion-Kern • In der „Lücke“ finden untergeordnete Tasks und untergeordnete Systemprozesse statt. (z.B.
Kommunikation zum Programmiergerät)
Eingestellte Periode
Das Ergebnis der Ausführung vom "Motion-Kern" wird erst am Anfang des nächsten Zyklus über das EtherCAT-Netzwerk an den Servoverstärker übertragen.
Ausgangsdaten
Eingangsdaten
SteuerungsprozessE/A-Refresh
Motion
Control-Kern
System
Prozess 1
Abarbeitung des Programms
System
Prozess 2
Refresh Ausführung
MC
Ausgangsdaten
Eingangsdaten
E/A-Refresh
Refresh Ausführung
Wenn die Motion-Befehl aufgerufen wird, wird er erst nach Abarbeitung des gesamten restlichen Programms durch den "Motion-Kern" abgearbeitet.
Servoantriebe
Ausführung des Kommandos
27
Periodische Task (niederer Priorität)
• Eine periodische Task führt das Anwenderprogramm mit einer festen Periode aus, die ein ganzzahliges Vielfaches der Primary Periodic Task ist.
• Die periodischen Tasks sind für Prozesse, die eine langsamere Abarbeitung zulassen.- Temperatur-Prozesse, Füllstände, Befüllung, Lüftung - Bedienung, Alarm, Alarmquitierung, Auftragsannahme, Rezeptverwaltung,
Anlagenstatus- Statistik, Zugriffe zur Datenbank für Qualitätsicherung.
• Wählt man Priorität 17 oder 18, ist man sicher, dass immer alle Betriebssystemfunktionen vollständig ausgeführt werden.
Task Periode
Task Periode
PrimaryPeriodic Task
Periodisch TaskPriorität 17
Task Periode Task Periode
Standby
28
System Service• Normales Zeitverhalten des untergeordneten Systemprozesses
Normalerweise sollte es Lücken in der Programmabarbeitung geben, in diesen Zeiten wird der System Service ausgeführt.
Priorität Task Periode
Task Periode
Task Periode
Hoch
Niedrig
OIUP MC
UPOI
Innerhalb der eingestellten Zeit (10ms) konnte der System Service keine Lücke finden.
Pause
Dann unterbricht der System Service, die Tasks der Priorität -17 (und 18) und wird statt dessen in den Lücken ausgeführt. (max 10%)
Die Primary Periodic Task und auch die Task mit der Priorität-16 wird nicht unterbrochen.
OIUP MC OIUP MC OIUP MC OIUP MC
SystemService
PrimaryPeriodische Task
Periodische Task Priorität 16
Periodische Task Priorität 17
Task Periode
OIUP MC
SystemService
OIUP MC OIUP MC OIUP MC OIUP MCPrimaryPeriodic task
• Zeitverhalten des Systemprozesses, wenn es keine Lücken gibt. Wenn innerhalb der eingestellten Zeit (10 ms) keine Lücke vom Systemprozess gefunden wurde, so unterbricht er die Ausführung der Tasks mit der Priorität 17 und 18 und wird dann statt dessen in den Lücken von der Primary Periodic Task und Task -16 ausgeführt. Maximal 10% (oder wie eingestellt) der Gesamtzykluszeit .
29
System Service
Systemprozesse Beschreibung
USB Port Service Bearbeitung der Anfragen von Programmier- und Bediengeräten (CIP,FINS,HTTP)
EtherNet/IP Port Service - Bearbeitung der Anfragen von Programmier- und Bediengeräten (CIP,FINS,HTTP), (oder Hostcomputer oder anderen Controller).- Ausführung der Kommunikationsbefehle (CIP, FINS, Socket)
EtherCAT Port Service Ausführung der EtherCAT Message-Kommunikation
Service für CJ- Spezialbaugruppen
- Event Service für CJ-Spezial-Baugruppen- Ausführung von Kommunikationsbefehlen (CIP und FINS)
SD Speicherkarten Service - FTP Zugriff- SD-Speicherkarten-Zugriffe vom Programmiergerät- Ausführung von SD-Speicherkarten-Befehle
Service für nicht-synchronisierte Befehle
- Ausführung von nicht synchronisierten Befehlen
Selbst-Diagnose (Prozess) Erkennung von Fehlern wie z.B. Hardware-Fehler, Firmware-Fehler, Ungültige Anwender-Einstellungen und Programmfehler.
• Der System Service muss zusätzlich zur Ausführung des Anwenderprogramms ausgeführt werden. • Folgendes ist mit “untergeordneten” Systemprozessen gemeint:.
30
Zykluszeit anzeigen
• Wenn man online ist kann man die aktuelle, minimale und maximale
Zykluszeit der einzelnen Tasks anzeigen, unter:
• Konfiguration und Einstellungen / Task-Einstellungen / Überwachung Task-
Ausführungszeit (das letzte Icon , ganz unten)
31