background image

1

J

ę

zyki programowania PLC

norma IEC 61131-3 

C:= A   AND  NOT B;

A   B                    C

-| |--|/|----------------(  )

LD

A

ANDN

B

ST

C

AND

A                  C

B

Instruction List (IL)

Structured Text (ST)

Function Block Diagram (FBD)

Ladder Diagram (LD)

graficzne

tekstowe

Function Block Diagram (FBD)

przemysł 

chemiczny

J

ę

zyk schematów blokowych jest odpowiednikiem schematów 

przepływu sygnału dla obwodów logicznych przedstawionych w 
formie poł

ą

czonych bramek logicznych oraz bloków 

funkcyjnych.

U

ż

ywany w aplikacjach, które korzystaj

ą

 z przepływów 

informacji mi

ę

dzy elementami sterowania.

background image

2

Tekst Strukturalny (Structured Text)

J

ę

zyk algorytmiczny wysokiego poziomu;

Najbardziej zalecany dla tych, którzy maj

ą

 do

ś

wiadczenie w 

programowaniu j

ę

zykami wysokiego poziomu, przypomina 

Pascala;

Zawiera struktury takie, jak:

iteracj

ę

 (REPEAT-UNTIL; WHILE-DO; FOR-TO-DO)

działania warunkowe (IF-THEN-ELSE; CASE)

Seguential Function Chart (SFC)

Graficzna metoda opisu sterowania procesami sekwencyjnymi

Program składa si

ę

 z kroków i warunków przej

ś

cia 

Znacznie upraszcza pisanie programu steruj

ą

cego

Wygodny do szybkiej diagnostyki

Step 1            

N      FILL

Step 3

Step 2 b         

N     Empty

Transition 1b

Transition 2b

Step 2 a        N     Empty          

Transition 1a

Transition 2a

background image

3

Programowanie sterowników GE

Seria 90-30, VersaMax, VersaMax Micro i Nano: 

Ladder Diagram

Instruction List

Seria 90-30 procesory 32-bitowe:

j

ę

zyk C – biblioteki z kompilatorem trzeba oddzielnie kupi

ć

Seria PACSystems:

L

adder

D

iagram (

LD

)

F

unction

B

lock 

D

iagram (

FBD

)

S

tructured

T

ext (

ST

j

ę

zyk 

C

– biblioteki z kompilatorem za darmo dostarczane 

razem z Proficy ME

nie ma j

ę

zyka 

I

nstruction

L

ist (

IL

)

Instruction List w sterownikach GE

Programowanie w IL – wymaga zarezerwowania pami

ę

ci na 

akumulator i stos. 

background image

4

Edycja programu

h

Edytor kolorami odró

ż

nia słowa kluczowe, zmienne, stałe i 

komentarze.

h

Komentarzem jest wszystko, co znajduje si

ę

 za znakiem apostrofu.

Zestawienie funkcji binarnych

operator

argument

opis

LD_BOOL

zmienna

akumulator := argument

LDN_BOOL

zmienna

akumulator := NOT argument

ST_BOOL

zmienna

argument  := akumulator, wartość akumulatora nie ulega zmianie

STN_BOOL

zmienna

argument  := NOT akumulator, wartość akumulatora  nie ulega zmianie

S

zmienna

argument  SET := akumulator, wartość akumulatora nie ulega zmianie

R

zmienna

argument  RESET := akumulator, wartość akumulatora  nie ulega zmianie

PT

zmienna

argument  uaktywniany  zboczem narastającym := akumulator, wartość 
akumulatora nie ulega zmianie

NT

zmienna

argument  uaktywniany  zboczem opadającym := akumulator, wartość 
akumulatora nie ulega zmianie

NOT

akumulator := NOT akumulator

AND

zmienna

akumulator := akumulator AND argument

ANDN

zmienna

akumulator := akumulator AND NOT argument

AND(

zagnieżdżone 

wyrażenie 

logiczne

akumulator := akumulator AND zagnieżdżone  wyrażenie logiczne, 
otwarcie nawiasu powoduje złożenie bieżącej funkcji  na stosie, 
zamknięcie  nawiasu powoduje pobranie ze stosu i wykonanie  funkcji z 
aktualnym  stanem akumulatora

ANDN(

zagnieżdżone 

wyrażenie 

logiczne

akumulator := akumulator AND NOT zagnieżdżone  wyrażenie logiczne, 
otwarcie nawiasu powoduje złożenie bieżącej funkcji  na stosie, 
zamknięcie  nawiasu powoduje pobranie ze stosu i wykonanie  funkcji z 
aktualnym  stanem akumulatora

background image

5

Zestawienie funkcji binarnych

OR

zmienna

akumulator := akumulator  OR argument

ORN

zmienna

akumulator := akumulator  OR NOT argument

OR(

zagnieżdżone 

wyrażenie 

logiczne

akumulator := akumulator  OR zagnieżdżone  wyrażenie logiczne, otwarcie 
nawiasu powoduje złożenie bieżącej funkcji na stosie, zamknięcie nawiasu 
powoduje pobranie ze stosu i wykonanie  funkcji z aktualnym  stanem akumulatora

ORN(

zagnieżdżone 

wyrażenie 

logiczne

akumulator := akumulator  OR NOT zagnieżdżone  wyrażenie logiczne, otwarcie 
nawiasu powoduje złożenie bieżącej funkcji na stosie, zamknięcie nawiasu 
powoduje pobranie ze stosu i wykonanie  funkcji z aktualnym  stanem akumulatora

XOR

zmienna

akumulator := akumulator  XOR argument

XORN

zmienna

akumulator := akumulator  XOR NOT argument

XOR(

zagnieżdżone 

wyrażenie 

logiczne

akumulator := akumulator  XOR zagnieżdżone  wyrażenie logiczne,  otwarcie 
nawiasu powoduje złożenie bieżącej funkcji na stosie, zamknięcie nawiasu 
powoduje pobranie ze stosu i wykonanie  funkcji z aktualnym  stanem akumulatora

XORN(

zagnieżdżone 

wyrażenie 

logiczne

akumulator := akumulator  XOR NOT zagnieżdżone wyrażenie logiczne, otwarcie 
nawiasu powoduje złożenie bieżącej funkcji na stosie, zamknięcie nawiasu 
powoduje pobranie ze stosu i wykonanie  funkcji z aktualnym  stanem akumulatora

Układy sekwencyjne – przykład 1.

background image

6

Układy sekwencyjne - przykład 1.

Słowa kluczowe:

S

R

odpowiadaj

ą

 cewkom SETCOIL i RESETCOIL.

S

ą

 wykonywane, gdy akumulator == true.

Układy sekwencyjne - przykład 2.

background image

7

Układy sekwencyjne - przykład 3.

h

Słowa kluczowe:

PT

NT

odpowiadaj

ą

 cewkom 

POSCOIL i NEGCOIL.

h

Nie zmieniaj

ą

 stanu 

akumulatora.

Działania na liczbach

operator

argument

opis

LD_INT

zmienna  lub stała

akumulator := argument

LD_ENO

brak

akumulator := Enable Output

ST_INT

zmienna

argument := akumulator

ST_DINT

zmienna

argument := akumulator

ST_REAL

zmienna

argument := akumulator

ADD

zmienna  lub stała

akumulator := akumulator argument

SUB

zmienna  lub stała

akumulator := akumulator – argument

MUL

zmienna  lub stała

akumulator := akumulator argument

DIV

zmienna  lub stała

akumulator := akumulator argument

MOD

zmienna  lub stała

akumulator := akumulator modulo argument

h

LD (Load) i ST (Store) – obsługuj

ą

 nast

ę

puj

ą

ce typy danych:

LD_BOOL, LDN_BOOL, LD_INT, 
ST_BOOL, STN_BOOL, ST_INT, ST_WORD, ST_REAL, ST_DINT

background image

8

Odpowiedniki bloków funkcyjnych

blok funkcyjny

typ argumentów

ENO

opis

ADD_INT(in1in2)
ADD_DINT(in1in2
ADD_REAL(in1in2)

in1: INT, DINT lub REAL
in2: INT, DINT lub REAL
akumulator: INT, DINT lub REAL

tak

akumulator:= in1 in2

SUB_INT(in1in2)

SUB_DINT(in1in2
SUB_REAL(in1in2)

in1: INT, DINT lub REAL
in2: INT, DINT lub REAL
akumulator: INT, DINT lub REAL

tak

akumulator:= in1 in2

MUL_INT(in1in2)

MUL_DINT(in1in2
MUL_REAL(in1in2)

in1: INT, DINT lub REAL
in2: INT, DINT lub REAL
akumulator: INT, DINT lub REAL

tak

akumulator:= in1 in2

DIV_INT(in1in2)
DIV_DINT(in1in2)

DIV_REAL(in1in2)

in1: INT, DINT lub REAL
in2: INT, DINT lub REAL
akumulator: INT, DINT lub REAL

tak

akumulator:= in1 in2

MOD_INT(in1in2)
MOD_DINT(in1in2)

in1: INT, DINT
in2: INT, DINT
akumulator: INT, DINT

tak

akumulator:= in1 modulo  in2 
(funkcja modulo  czyli reszta 
z dzielenia całkowitoliczbowego)

SCALE_INT(ihi, ilo, ohi, olo, in)
SCALE_WORD(ihi, ilo, ohi, olo, in)

ihi: INT lub WORD

ilo: INT lub WORD

ohi: INT lub WORD

olo: INT lub WORD

in: INT lub WORD

akumulator: INT lub WORD

tak

akumulator:= wartość po 
przeskalowaniu

Ś

rednia arytmetyczna - przykład

background image

9

Porównania – bloki funkcyjne

Operator

Typ argumentów

Opis

EQ_INT (in1, in2)

EQ_DINT (in1, in2)

EQ_REAL (in1, in2)

in1: INT, DINT, REAL

in2: INT, DINT, REAL

akumulator: BOOL

akumulator := (in1 = in2)

NE_INT (in1, in2)

NE_DINT (in1, in2)

NE_REAL (in1, in2)

in1: INT, DINT, REAL

in2: INT, DINT, REAL

akumulator: BOOL

akumulator := (in1 

in2)

GT_INT (in1, in2)

GT_DINT (in1, in2)

GT_REAL (in1, in2)

in1: INT, DINT, REAL

in2: INT, DINT, REAL

akumulator: BOOL

akumulator := (in1 > in2)

GE_INT (in1, in2)

GE_DINT (in1, in2)

GE_REAL (in1, in2)

in1: INT, DINT, REAL

in2: INT, DINT, REAL

akumulator: BOOL

akumulator := (in1 

in2)

LT_INT (in1, in2)

LT_DINT (in1, in2)

LT_REAL (in1, in2)

in1: INT, DINT, REAL

in2: INT, DINT, REAL

akumulator: BOOL

akumulator := (in1 < in2)

LE_INT (in1, in2)

LE_DINT (in1, in2)

LE_REAL (in1, in2)

in1: INT, DINT, REAL

in2: INT, DINT, REAL

akumulator: BOOL

akumulator := (in1 

in2)

Porównania - funkcje asemblerowe

Operator

Argument

Opis

EQ

Zmienna lub stała

akumulator := (akumulator = argument)
akumulator typu BOOL

NE

Zmienna lub stała

akumulator := (akumulator 

argument)

akumulator typu BOOL

GT

Zmienna lub stała

akumulator := (akumulator > argument)
akumulator typu BOOL

GE

Zmienna lub stała

akumulator := (akumulator 

 argument)

akumulator typu BOOL

LT

Zmienna lub stała

akumulator := (akumulator < argument)
akumulator typu BOOL

LE

Zmienna lub stała

akumulator := (akumulator 

argument)

akumulator typu BOOL

background image

10

Sygnalizacja przekrocze

ń

Instrukcja skoku w LD

JUMPN - skok, LABELN - etykieta,

h

Skok w dół

h

Skok w gór

ę

 (nie zalecany)

background image

11

Power Up Mode

Funkcje steruj

ą

ce

Operator

Argument

Opis

JMP 

etykieta

bezwarunkowy skok do etykiety

JMPC

etykieta

skok do etykiety,  je

ż

eli akumulator = 1

JMPCN

etykieta

skok do etykiety,   je

ż

eli akumulator = 0

CAL

Nazwa podprogramu

Bezwarunkowe wywołanie podprogramu

CALC

Nazwa podprogramu

Wywołanie podprogramu, je

ż

eli akumulator = 1

CALCN

Nazwa podprogramu

Wywołanie podprogramu, je

ż

eli akumulator = 0

RET

brak

bezwarunkowy powrót z podprogramu

RETC

brak

powrót podprogramu, je

ż

eli akumulator = 1

RETCN

brak

powrót podprogramu, je

ż

eli akumulator = 0

background image

12

Skok w IL

h

Skoki mo

ż

na wykorzysta

ć

 jako metod

ę

 rozgał

ę

zie

ń

 i decyzji 

(odpowiednik IF THEN ELSE)

JMP etykieta:

skok bezwarunkowy

JMPC etykieta:

skok do etykiety, je

ś

li akumulator==true

JMPCN etykieta: skok do etykiety, je

ś

li akumulator==false

h

Je

ś

li warunek nie jest spełniony, to program jest kontynuowany 

od nast

ę

pnej po skoku instrukcji.

Enable, Enable Output (ENO)

i

Odpowiednikiem parametru wyj

ś

ciowego 

OK jest ENO (Enable Output)

i

Nie ma w j

ę

zyku IL odpowiednika parametru wej

ś

ciowego Enable, 

mo

ż

na go zast

ą

pi

ć

 przez RETCN lub JMPCN.

i

Rozwi

ą

zanie oparte na funkcjach asemblerowych:

bez sprawdzania, czy wyst

ą

pi dzielenie przez 

zero,

nie wymaga rejestru pomocniczego ILORAZ.

background image

13

Enable, Enable Output (ENO)

i

Je

ś

li b

ę

d

ą

 nast

ę

pne szczeble, to zamiast RETCN trzeba u

ż

y

ć

 

JMPCN etykieta:

Przeka

ź

niki czasowe 

Blok funkcyjny

Typ argumentów

ENO

Opis

TMR_TENTHS(address, PV)

TMR_HUNDS(address, PV)

TMR_THOUS(address, PV)

address: array 3 
WORD
PV
: INT
akumulator
: BOOL

tak

akumulator true, to zwi

ę

ksza CV

akumulator false, to zeruje CV

ustawia akumulator:= true, gdy 
CV

PV

ONDTR_TENTHS(address, R, PV)

ONDTR_HUNDS(address, R, PV)

ONDTR_THOUS(address, R, PV)

address: array 3 
WORD
R
: BOOL
PV
: INT
akumulator
: BOOL

tak

akumulator true, to zwi

ę

ksza CV

akumulator false, to pami

ę

ta 

ostatnie CV

ustawia akumulator:= true, gdy 
CV

PV

OFDT_TENTHS(address, PV)

OFDT_HUNDS(address, PV)

OFDT_THOUS(address, PV)

address: array 3 
WORD
PV
: INT
akumulator
: BOOL

tak

akumulator true, to zeruje CV

akumulator false, to zwi

ę

ksza CV

a

ż

 CV=PV

ustawia akumulator:= true, gdy 
CV
<PV

background image

14

Przeka

ź

niki czasowe - przykład

 

PLUCZ 

POMPA 

10 s 

Timery nie wymagaj

ą

 

instrukcji skoku w celu 
realizacji warunku Enable

J

ę

zyki LD i IL - kompatybilno

ść

i

Niepełna kompatybilno

ść

 j

ę

zyków programowania – wynika z 

ż

nego sposobu przetwarzania

i

LD nie dopuszcza si

ę

 do wprowadzania operacji logicznych w 

obwodzie po operacjach przypisania

ź

le

dobrze

Programy w IL s

ą

 wykonywane szybciej ni

ż

 w j

ę

zyku drabinkowym

Ka

ż

dy program drabinkowy da si

ę

 zapisa

ć

 w j

ę

zyku IL, nie ka

ż

dy 

program w j

ę

zyku IL ma swój dokładny odpowiednik w LD.

W Proficy ME nie ma mo

ż

liwo

ś

ci konwersji do LD.

background image

15

J

ę

zyki LD i IL - kompatybilno

ść

h

Wykorzystanie własno

ś

ci równoległego przetwarzania w j

ę

zykach 

graficznych poprzez ł

ą

czenie jednego wej

ś

cia z wi

ę

ksz

ą

 liczb

ą

 

wyj

ść

 mo

ż

e wymaga

ć

 przy tłumaczeniu na j

ę

zyki tekstowe 

wprowadzenia dodatkowych zmiennych w celu uzyskania 
kompatybilno

ś

ci programów.

Porównanie - j

ę

zyk IL

h

Zalety:

q

j

ę

zyk proceduralny, tzn. instrukcje s

ą

 wykonywane jedna po 

drugiej,

q

wygodniejszy w procedurach zarz

ą

dzania pami

ę

ci

ą

 lub przy 

programowaniu oblicze

ń

 iteracyjnych, bardziej elastyczny,

q

znajoma forma programu dla programuj

ą

cych w asemblerze,

q

zwarto

ść

 programu pozwalaj

ą

ca zmie

ś

ci

ć

 na jednej stronie ekranu 

zło

ż

one funkcje

h

Wady:

q

trudny do analizy – znacznie mniejsza czytelno

ść

 programu

q

brak instrukcji iteracyjnych, trzeba je organizowa

ć

 przez 

wprowadzenie wska

ź

nika dla iteracji i wykorzystanie instrukcji 

porównania lub skoków

q

korzystanie z po

ś

rednictwa akumulatora i stosu nie jest intuicyjne

q

dostosowanie u

ż

ytkownika do maszyny, a nie maszyny do 

u

ż

ytkownika

background image

16

Porównanie - j

ę

zyk LD

h

Zalety:

q

przetwarzanie przez przepływ sygnału („pr

ą

du”), który mo

ż

by

ć

 realizowany równolegle

q

najodpowiedniejszy do programowania operacji logicznych 
(algebra Boole’a)

q

łatwy do analizy

h

Wady:

q

stosowanie instrukcji skoku w j

ę

zykach graficznych stoi w 

pewnej sprzeczno

ś

ci z zasad

ą

 równoległego przetwarzania 

sygnału w obwodzie

q

brak instrukcji dla oblicze

ń

 iteracyjnych (typu REPEAT, 

WHILE, FOR)