1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

31
1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3

Transcript of 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

Page 1: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

1

IEC - Grundlagen und Variablen

Programmierstrategien der IEC 61131-3

Page 2: 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

Page 3: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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)

Page 4: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

4

IEC 61131-3 Allgemeine Elemente

• Software-Modell- Konfiguration- Resourcen- Tasks

• Programm-Organisations-Einheiten- Programme- Funktions-Blocks- Funktionen

• Datentypen & Variablen

Page 5: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 6: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 7: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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)

Page 8: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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)

Page 9: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

9

Variablen, globale und lokale

• Globale Variablen können überall verwendet werden.• Lokale, interne Variablen, werden nur innerhalb des eigenen Programms

verwendet

Page 10: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 11: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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.

Page 12: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 13: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

13

Lokale Variablen, Beispiel

(In FBs gibt es verschiedene interne Variablentypen: Eingang, Ausgang, Ein/Aus)

In jedem Programm (POE) gibt es eine lokale Symboltabelle

Page 14: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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!

Page 15: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 16: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 17: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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'

Page 18: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 19: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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”

Page 20: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 21: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 22: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 23: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 24: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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.

Page 25: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 26: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 27: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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

Page 28: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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 .

Page 29: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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:.

Page 30: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

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)

Page 31: 1 IEC - Grundlagen und Variablen Programmierstrategien der IEC 61131-3.

31