You are on page 1of 119

Tm hiu ngn ng SCL-S7-300

BO CO CHUYN 2:
ti: Tm hiu ngn ng SCL trong S7-300. ng dng vit chng trnh iu khin n giao thng. Phn 1: Gii Thiu: Ngn ng SCL trong STEP7 ng dng cho dng PLC S7-300 ca Siemens l mt ngn ng lp trnh s dng cu lnh vit. N c cu trc gn ging vi ngn ng dng STL nhng c pht trin nhiu hn, gn ging vi cc ngn ng bc cao nh Pascal lm cho ngi lp trnh d thao tc hn v thn thin nh ngn ng lp trnh c cu trc. Ngn ng SCL da trn nn ca Pascal chnh v vy cch khai bo hay nhng cu lnh gn ging nh trong Pascal. Bi bo co nhm em gm 3 phn. Phn I chng em xin gii thiu v phn cng h S7-300 v cch ci t cc thnh phn v thng s cho 1 trm Phn II l phn tm hiu v ngn ng SCL. Phn ny l phn tm hiu cc thnh phn, cu trc chng trnh, cc cu lnh trong ngn ng SCL Phn III chng em xin trnh by chng trnh lp trnh ng dng n giao thng s dng ngn ng SCL.

Nhm I T04

Trang 1

Tm hiu ngn ng SCL-S7-300

I) Gii Thiu Phn Cng H S7-300


Khc vi S7-200 to mt chng trnh trong STEP 7 th chng ta phi ci t y cc thng s phn cng trong 1 trm, to 1 soure file sau mi c th thao tc lp trnh. Phn ny chng em xin gii thiu cc Components trong SIMATIC S7-300 v chc nng ca chng trong trm sau s trnh by qu trnh to 1 trm trong STEP7 1) Gii Thiu Cc Thnh Phn Trong 1 Trm ( Components) + Racks: Ni t cc modules v kt ni chng vi mi thit b khc + Power Supply: (PS) Ngun in cung cp cho PLC + CPU : n v x l trung tm, x l v chy chng trnh + Interface modules: (IMs): kt ni t racks ti 1 ci khc + Signal modules : (SMs) Cc modules iu khin hoc cp nht tn hiu Analog hoc Digital + Function Modules: (FMs) cc modules hm chc nng x l, thi hnh cc hm phc tp hoc x l thi gian ti hn c lp ca CPU + Communications Processes: (CPs) truyn thng ,kt ni thnh 1 mng nhiu PLC + Subnets : kt ni PLC vi 1 PLC hoc 1 thit b khc. 2) Cch Thit Lp V Ci t 1 Trm ( Station) T mn hnh giao din khi ng Simatic Manager

Nhm I T04

Trang 2

Tm hiu ngn ng SCL-S7-300

Mn hnh dao din ca SIMATIC Manager.

To 1 Project mi c tn dengiaothong:

Nhm I T04

Trang 3

Tm hiu ngn ng SCL-S7-300

Trn 1 trm S7-300

Chn Rack v Ngun l gi cc mdule trong S7 300 chn ngun PS-307-5A

Nhm I T04

Trang 4

Tm hiu ngn ng SCL-S7-300

Chn CPU vo trm: Ta chn CPU 315 2DP

Nhm I T04

Trang 5

Tm hiu ngn ng SCL-S7-300

Chn Cc module ng vo ra:

To 1 source file SCL: Vic to 1 file c nhim v ta s son tho chng trnh trn Source ny ri dch n

Nhm I T04

Trang 6

Tm hiu ngn ng SCL-S7-300

Bng nh Ngha Cc ng Vo Ra Bng nh ngha cc bin gip chng ta lp trnh nhanh hn v khng phi nh tn bin ng vo ra, ta ch cn gn cc ng vo ra thnh tn cc bin thc t.

Nhm I T04

Trang 7

Tm hiu ngn ng SCL-S7-300

To mt OB lp trnh:
ORGANIZATION_BLOCK (OB)

l nhng thao tc c bn nht thit lp cc thnh phn phn cng cho 1 trm S7-300 Ngoi ta khi thc hin xong bi ta c th dng chng trnh S7-PLSim m phng kt qu.

Nhm I T04

Trang 8

Tm hiu ngn ng SCL-S7-300

Phn 2: Tm Hiu Ngn Ng SCL.


1) Khi Qut Chung:
Nh ta ni phn trn, ngn ng SCL da trn nn ca ngn ng Pascal. Nh vy c mt cu hi t ra vi chng ta l: Chng ta thng lp trnh dng LAD, STL hay FBD quen thuc nay chng ta c nn chuyn qua SCL vit hay khng? tr li cu hi trn trc ht chng ta phi tm hiu ngn ng SCL sau rt ra nhng kt lun sau mi tr li cu hi trn c. Nhng mt thun li khi lp trnh vi SCL: SCL a ra cho bn tt c nhng thun li ca ngn ng lp trnh cp cao. SCL cng cho thit k mt s t tnh k thut cung cp cho cu trc chng trnh nh: SCL cung cp khi khi nim ca STEP 7 v v th cho php lp trnh chun ha ca nhng khi vi Danh sch lnh (STL), Thang Logic (LAD), v S khi chc nng (FBD).
OB FC FB DB UDT SFC SFB


Nhm I T04

Bn c th s dng nhng khi c sn nh: nhng hm h thng hoc nhng khi hm h thng m c ci t trong h iu hnh ca CPU. Bn c th s dng nhng khi chng trnh SCL trong vic kt hp vi nhng khi chng trnh trong danh sch lnh (STL), Thang Logic(LAD), v s khi chc nng (FBD). iu ny c ngha l mt khi c vit trong SCL c th gi mt khi c vit trong STL, LAD, hoc FBD. Tng t, nhng khi SCL c th c gi trong STL, LAD, hoc chng trnh FDB. Ngn ng lp trnh ca STEP 7 v SCL (gi chn) v vy b sung ln nhau hon ho. Nhng i tng gc bn c th to ra vi SCL cho STEP 5 l tng thch tin vi 1 hoc 2 nhng ngoi l nh, ni cch khc cc chng trnh bn c th chnh sa, bin dch v g ri vi S7 SCL. Nhng khi SCL c th c bin dch li ngn ng lp trnh vo Danh sch lnh(STL) ca STEP 7. S bin dch li t STL sang SCL l khng th. Vi mt vi kinh nghim ca ngn ng lp trnh cp cao, SCL c th hc mt cch d dng. Khi to chng trnh, ngi vit chng trnh c cung cp y cc hm x l vn bn gc. Khi bn bin dch chng trnh ca bn, cc khi c to ra v c th chy trn tt c CPUs ca S7-300/400 b iu khin chng trnh vi CPU 314 hoc cao hn.
Trang 9

Tm hiu ngn ng SCL-S7-300

Nh vy: Tm li nhng ai c kinh nghim trong lp trnh cp cao, c cu trc nh nhng ngn ng nh Pascal, C th hc SCL rt nhanh. SCL c th lin kt v gi cc hm cc th vin c sn c lp trong STL, LAD, FDB vit hoc ngc li. Nh vy n rt linh hot. SCL l ngn ng da trn nn ca PASCAL nn vic vit cc hm tnh ton s hc phc tp nh Sin, COS, cn s hc thng kh phc tp trong LAD th vi SCL bn c th thc hin kh n gin.

2) Thit K 1 Chng Trnh SCL


Phn ny xin gii thiu cc khi, mt s nh ngha v cui cng l trnh by mt vi v d c th.
2.1 Thit k 1 chng trnh SCl c cu trc.

Nhng loi khi Mt chng trnh SCl c cu trc n c thit k theo dng gm nhng module khc nhau. Mt chng trnh ln thng lm cho ngi lp trnh cm thy phc tp v c qu nhiu bin, qu nhiu s kin hay trng thi khc nhau. Chnh v vy SCl h tr vic phn nh chng trnh thnh cc module nh, bao gm nhng khi hm, th vin khc nhau, mi module nh ph trch 1 vic c th, ta ch vic thc hin tng khi nh ny. Ti chng trnh chnh ch vic tng hp li cc module nh vy vic lp trnh ht sc n gin. Cc module ny l:
OB

S t chc nhng khi hnh thnh giao tip gia h iu hnh S7 CPU v chng trnh ngi dng. Nhng t chc nhng khi ch r chui trong nhng khi ca chng trnh ngi dng c thc hin. Nhng khi chc nng l nhng khi logic vi d liu tnh. T mt FB c mt b nh, N c th c truy cp n l tham s (v d nh, outputs) ti bt k im trn chng trnh ngi dng. Hm l nhng khi logic m khng c b nh. T chng khng c b nh, nhng gi tr c tnh ton phi c x l ngay lp tc sau trc khi hm c gi.
Trang 10

FB

FC

Nhm I T04

Tm hiu ngn ng SCL-S7-300

DB

Nhng khi d liu l nhng vng d liu trong d liu ngi dng c lu. l nhng khi d liu chia s m c th truy cp bng tt c cc khi logic v l nhng khi d liu mu m c gn cho mt s gi FB ring. Kiu d liu ngi dng nh ngha c cu trc kiu d liu bn c th to ra cho nh yu cu ca chnh bn v s dng nhiu ln bn mun. Mt kiu d liu ngi dng nh ngha l hu ch pht sinh mt s khi d liu vi cng mt cu trc. UDTs c s dng khi nu chng l nhng khi.

UDT

i vi nhng ai lm quen vi PASCAL th cc modula ny tng t nh cc chng trnh con, Th tc (Proceduce ) hay Hm (Function)

B cc ca cc khi trong tp tin ngun SCL


Mt chng trnh SCL bao gm mt hoc nhiu hn tp tin ngun SCL. Mt tp tin ngun c th bao hm mt khi tn hiu hoc mt chng trnh y bao gm nhng khi khc.
Mt tp tin ngun i vi chng trnh Mt vi tp tin ngun i vi 1 chng trnh

Tp tin ngun SCL

Khi th mc ngoi tuyn

Nhm I T04

Trang 11

Tm hiu ngn ng SCL-S7-300

2.2 Cc nh Ngha: 2.2.1 nh Ngha Nhng Tc V Ph


Nhng tc v ph Tc v ph c trnh by trong hnh di. Nhng vng hnh ch nht bng m biu din nhng khi. B tr ca nhng khi logic t tri sang phi cng l mt th t trong chng c gi.
Chu trnh khi t chc D liu vo Chu trnh gi chng
trnh

Khi chc nng Thu nhn D liu o thu c

Khi chc nng nh gi Phn loi d liu o

Khi Cn bc hai v Bnh phng

D liu ra

Truy cp v chn d liu u ra

Kt qu tnh ton

Cn bc 2, Bnh phng

Khi d liu ACQUIRE_DATA

Kho d liu

Dng chng trnh

Dng d liu

Chn v gn nhng kiu khi sn c Nhng khi ring l c la chn theo cc ch tiu sau y: Chc nng Tn khi Chng trnh ngi s dng ch c th bt u mt Chu k OB OB. T nhng gi tr o s thu nhn mt cch tun hon, mt OB i vi mt chu trnh gi (OB1) c => yu cu. Phn ca chng trnh d liu ng vo v d liu ng ra c lp trnh trong OB. Tc v ph Gi tr o thu c yu cu mt khi Thu c FB vi mt b nh; ni cch khc, mt khi hm (FB), t => khi d liu a phng nht nh (v d nh, b m
Nhm I T04 Trang 12

Tm hiu ngn ng SCL-S7-300

vng) phi c gi t mt chu k chng trnh cho bc tip theo. V tr ct gi d liu (b nh) l khi d liu mu ACQUIRE_DATA. Nh FB cng c th iu khin a ch v la chn tc v ph ng ra, t d liu c c sm. Khi chn kiu ca khi cho tc v ph phn loi gi nh gi FB tr o v kt qu tnh ton, nh rng bn cn mt b m ng ra cha kt qu tnh ton cn bc hai v bnh phng cho mi gi tr o c. Ch thch hp => kiu khi bi vy l mt FB. T FB ny c gi bi mt FB khc cao hn trong s phn cp gi, n khng yu cu DB ca n. D liu mu ca n c gi trong khi d liu mu hng goi FB. Mt hm (FC) l ph hp nht cho nhng tc v ph SQRT FC tnh ton cn bc hai v bnh phng t kt qu c th (cn bc hai) tr li nh mt hm gi tr. Hn th na, khng dng Bnh phng cn d liu trong tnh ton gi nhiu chu k => FC chng trnh. Tiu chun SCL hm SQRT c th s dng tnh ton cn bc hai. Mt c bit hm => BNH PHNG s to ra tnh ton bnh phng v cng s kim tra rng gi tr nm trong vng gii hn.

2.2.2 nh Ngha Giao Tip Gia Nhng Khi


Tng quan Giao tip ca mt khi c nh dng bi nhng tham s m c th truy cp bng mt khi khc. Nhng tham s c khai bo trong nhng khi l nhng ch thay th ch c mt gi tr khi khi c s dng thc s (c gi). Nhng ch thay th ny c bit nh nh dng nhng tham s v nhng gi tr c gn cho chng khi khi c gi s c tham chiu ti nhng tham s thc. Khi mt khi c gi, d liu ng vo c b qua n nh mt tham s thc. Sau chng trnh tr li gi khi, d liu ng ra sn sng cho vic x l cao hn. Mt hm (FC) c th b qua kt qu ca n nh mt gi tr hm. Nhng tham s khi c th c chia ra trong mc trnh by di y: Tham s khi S gii thch S khai bo Nhng tham s ng vo Nhng tham s ng vo tha VAR_INPUT nhn nhng gi tr ng vo
Nhm I T04 Trang 13

Tm hiu ngn ng SCL-S7-300

Nhng tham s ng ra

Nhng tham s vo/ra

thc s khi khi c gi. Chng l ch c. Nhng tham s ng ra chuyn i nhng gi tr ng ra hin VAR_OUTPUT ti gi khi. D liu c th ghi v c. Nhng tham s vo/ra chp nhn gi tr thc ca mt bin khi khi c gi, x ly gi tr, VAR_IN_OUT v ghi kt qu ngc li bin ban u.

Chu k OB Chu k OB khng c nh dng tham s cho chnh n. N gi ACQUIRE FB v b qua gi tr o v in khin d liu cho n c nh dng tham s. Thu nhn FB Tn tham s Measval_in newval resort funct_sel selection newsel result_out measval_out Kiu d liu Kiu khai bo VAR_INPUT INT VAR_INPUT BOOL BOOL BOOL WORD BOOL DWORD DWORD M t Gi tr o Chuyn i vo gi tr tr o trong b m vng. VAR_INPUT Chuyn i phn loi v nh gi d liu o VAR_INPUT B chn cn bc hai hay bnh phng. VAR_INPUT M chn gi tr ng ra VAR_INPUT Chuyn i c trong m VAR_OUTPUT Ng ra ca kt qu tnh ton VAR_OUTPUT Ng ra ca gia tr o c

nh gi Thu nhn FB gi nh gi FB. Chia s d liu ca chng l mng gi trj i m yu cu ct gi. Mng ny c khai bo nh mt tham s vo/ra. Mt mng cu trc c to ra nh mt tham s ng vo cho vic tnh ton kt qu cn bc hai v bnh phng. Theo bng bn di l nh dng nhng tham s: Tn Kiu d liu Kiu khai bo M t sortbuffer ARRAY[..] VAR_IN_OUT Mng gi tr o, tng ng OF REAL b m vng
Nhm I T04 Trang 14

Tm hiu ngn ng SCL-S7-300

calcbuffer ARRAY[..]OF VAR_OUTPUT Mng cho nhng kt qu: STRUCT Cu trc vi Cn bc hai v Bnh phng thnh phn ca kiu INT

Cn Bc Hai v Bnh phng Nhng hm c gi bi EVALUATE. Chng yu cu mt gi tr ng vo (i s) v tr v kt qu nh mt hm gi tr.

Tn value SQRT Value Bnh phng

Kiu d liu REAL REAL INT INT

Kiu khai bo M t VAR_INPUT Gi tr hm VAR_INPUT Gi tr hm Ng vo i vi SQRT Cn bc hai ca gi tr ng vo Ng vo i vi Bnh phng Bnh phng ca gi tr ng vo

2.2.3 nh ngha giao tip ng vo/ng ra


Hnh c trnh bay nh bn di l giao tip ng vo/ng ra. Ch rng khi ng vo/ng ra trong nhin byte, byte bc thp hn th nm trn nh v byte cao hn th nm cui. Nu ng vo/ng ra trong nhiu word, mt khc, ngc li l ng.

B iu khin chng trnh

Nhm I T04

Trang 15

Tm hiu ngn ng SCL-S7-300

0 c gi tr o 1 Bt u phn loi v tnh ton 2 Chon kt qu: SQRT v Square 3 Chn ng ra: gi tri o hay kt qu 4 M ha bit 0 5 M ha bit 1 6 M ha bit 2 7 c m ha 0 n 7 byte ng vo: gi tr o

0 n 7 Byte bc cao hn ca ng ra word (bit 8 n 15) ch yu cu cho tnh ton ca bnh phng, khc 0

0 n 7 Byte bc thp hn ca ng ra word (bit 0 n 7) gi tr o hoc kt qu: SQRT hoc bnh phng

2.2.4

nh ngha bc ca nhng khi trong tp tin ngun


Khi b tr bc ca nhng khi trong tp tin ngun SCL, nn nh rng mt khi phi hin c trc khi s dng n; ni cch khc, trc khi n c gi bi khi khc. iu ny ngha l nhng khi phi c b tr trong tp tin ngun nh trnh by di:

Nhm I T04

Trang 16

Tm hiu ngn ng SCL-S7-300

2.2.5 nh ngha cc k hiu S dng nhng k hiu tn cho module a ch v nhng khi to cho chng trnh d nhn hn. Ta c th nhp k hiu cc ng vo, ng ra vo 1 bng.

2.3 Mt s Hm v chng trnh mu:


2.3.1 Hm Bnh Phng: Chng trnh nh sau: FUNCTION BINHPHUONG INT TITLE = ' tao ham binh phuong 1 so nguyen ' NAME : binh phuong AUTHOR : Van Ha

Nhm I T04

Trang 17

Tm hiu ngn ng SCL-S7-300

VAR_INPUT a : INT; END_VAR BEGIN IF a<= 181 THEN BINHPHUONG := a*a; // gia tri cua bien maximum = 181 ELSE BINHPHUONG := 32_767 ; // Nu Trn th set gia tri la maximum END_IF; END_FUNCTION

2.3.2 Hm Tnh Max , Min


FUNCTION Delimiter : INT TITLE = 'Delimiting of an INT value' NAME : LIMIT AUTHOR : Van Ha VAR_INPUT MAXI : INT; IN : INT; MINI : INT; END_VAR

//Upper limit //Input value //Lower limit

BEGIN //If IN > MAXI, the function value is to assume the value MAX. //If IN < MINI, the function value is to assume the value MIN. //In all other cases, the function value contains the input value. IF IN > MAXI THEN Delimiter := MAXI; ELSIF IN < MINI THEN Delimiter := MINI; ELSE Delimiter := IN; END_IF; END_FUNCTION

ORGANIZATION_BLOCK Main_program
Nhm I T04 Trang 18

Tm hiu ngn ng SCL-S7-300

TITLE = ' chuong trinh chinh xu ly ' VAR_TEMP SINFO : ARRAY [1..20] OF BYTE; END_VAR BEGIN //Calling the "Delimiter" function. //The function value of the "Delimiter" block is //assigned the variable "Result". Result := Delimiter( MAXI := Maximum, IN := Input_value, MINI := Minimum); END_ORGANIZATION_BLOCK

3) CC KIU D LIU TRONG SCL:


Loi d liu quyt nh Th loi v gi thit phn d liu. Dy cho php ca phn d liu. Hot dng cho php c th thc hin cho mt a ch ca loi d liu. K hiu ca hng s ca loi d liu.

3.1 Loi D Liu C Bn Mt loi d liu c bn miu t mt vng nh vi di cn i v i din cho kiu bit, integer, real, chu k thi gian, gi tr thi gian thc, v kiu k t. Loi d liu k tip c gn lin trong SCL. Nhm Kiu bit d liu Kiu D Liu BOOL BYTE WORD DWORD Kiu k t
Nhm I T04

Gii thch (Explanation) Phn d liu ca loi ny chim 1 bit, 8 bit, 16 bit hoc 32 bit

CHAR

Phn d liu ca loi ny chim chnh xc 1 k t


Trang 19

Tm hiu ngn ng SCL-S7-300

trong m ASCII. Kiu s INT DINT REAL Kiu thi gian TIME DATE TIME_OF_DAY S5TIME 3.1.1 Loi D Liu Bit D liu ca loi ny l cc bit gm: 1 bit (kiu i s BOOL), 8 bit 16 bit, 32 bit. Mt dy s ca gi tr c th thit lp cho loi d liu byte, word, double word. Loi bit hn hp c th c dng ra cc biu thc Bool. Type Keyword Bit Width BOOL 1 bit Alignment (cn chnh) Value Range Phn d liu ca loi ny biu din cc thi khc nhau v gi tr ngy trong STEP 7. Phn d liu ca loi ny lun sn c cho x l con s.

Bit

Bt u t bit thp nht trong 0, 1 or FALSE byte. Bt u t byte thp nht trong word. Bt u t bin ca WORD. Bt u t mt bin ca WORD.

Byte

BYTE

8 bits

Word

WORD

16 bits 32 bits

Double DWORD word

Nhm I T04

Trang 20

Tm hiu ngn ng SCL-S7-300

3.1.2. Loi K T Phn d liu ca loi ny gi chnh xc mt k t ca m ASCII. Type Keyword Bit Width 8 Value Range (dy gi tr) c m rng m ASCII.

Single CHAR character 3.1.3. Loi D Liu S:

Loi ny c gi tr cho x l gi tr bng s (v d tnh ton cc biu thc s hc). Type Integer Keyword Bit Width Alignment INT 16 Bt u t mt bin ca WORD. Bt u t mt bin ca WORD. Bt u t mt bin ca WORD. Value Range -32_768 to 32_767

Double integer

DINT

32

-2_147_483_648 to 2_147_483_647

Floating- REAL point number 3.1.4 Loi Thi Gian

32

-3.402822E+38to -1.175495E-38+/0 1.175495E-38 to 3.402822E+38

D liu ca loi d liu ny biu din thi gian khc nhau v gi trnh ngy thng bn trong STEP 7 (v d cho vic t ngy hoc i vo gi tr thi gian).

Nhm I T04

Trang 21

Tm hiu ngn ng SCL-S7-300

Nu gi tr ci cao hn gii hn trn ca dy, gi tr gii hn trn c s dng. Vi bin ca loi d liu S5TIME, kt qu c gii hn, word no , ch c thi gian c bn 0.01s, 0.1s, 1s, 10s l c sn. Trnh bin dch lm trn gi tr chnh xc.

3.2 Loi D Liu Phc Tp


SCL cung cp loi d liu phc tp Data Type Explanation

DATE_AND_TIME Xc nh mt vng 64 bit (8 byte). Loi d liu ny lu tr ngy thng v l loi d liu c nh ngha trc DT trong SCL. STRING Xc nh mt vng cho xu k t c th di n 254 k t (kiu CHAR) Xc nh mt mng nht qun ca mt loi d liu (n gin hoc phc tp) Xc nh mt nhm ca loi d liu trong bt k c 1i phi hp ca d liu. N c th l cu trc mt mng hoc mt cu trc nht qun v mng.

ARRAY

STRUCT

Nhm I T04

Trang 22

Tm hiu ngn ng SCL-S7-300

Loi d liu ngi s dng xc nh: Bn c th to loi d liu ny ca ring bn trong phn khai bo d liu. Mi loi c gn mt tn duy nht v c th c dng bt k tn s no (number of time). N c nh ngha mt ln, mt loi d liu d liu ngi s dng xc nh c th dng a s khi d liu vi cng cu trc. Loi tham s Loi tham s l loi d liu c bit ca b m, timer v khi c th c s dng nh tham s hnh thc. Data Type TIMER COUNTER Explanation Dng khai bo timer nh tham s. Dng khai bo b m nh tham s.

BLOCK_xx. Dng khai bo FCs, FBs, DBs v SDBs nh tham s. ANY POINTER Dng pht mt a ch ca bt k loi d liu no nh tham s. Dng pht mt vng nh nh tham s.

Loi d liu ANY Trong SCL, bn c th dng bin ca loi d liu ANY nh tham s hnh thc ca khi. Ban cng c th to bin tm v dng n trong gi tr gn. 3.2.1 Loi D Liu DATE_AND_TIME nh ngha La d liu ny xc nh mt vng vi 64 bit (8 byte) cho nh r ngy thng v thi gian. Vng d liu lu tr thng tin theo n (trong m nh phn m ha nh dng thp phn): year, month, day, hours, minutes, seconds, milliseconds. C php

Nhm I T04

Trang 23

Tm hiu ngn ng SCL-S7-300

Tm gi tr

Loi d liu Date_and_time c lu trong nh dng BCD:

V d Mt nh ngha hp l cho ngy thng nh 20/Oct./1995 12:20:30 v 10 ms l:


DATE_AND_TIME#1995-10-20-12:20:30.10 DT#1995-10-20-12:20:30.10

3.2.2 Lai D Liu STRING nh ngha Loi String xc nh mt chui k t di nht l 254 k t. Vng tiu chun gm 256 byte. Vng nh ny i hi cha 254 k t v phn u 2 byte. Bn c th thu hp b nh bng mt chui k t. Chui Null, mt t khng c d liu, l gi tr nh nht c th. C php

Nhm I T04

Trang 24

Tm hiu ngn ng SCL-S7-300

Mt biu thc n gin a din cho k t s ln nht trong String. Tt c k t trong m ASCII c php s dng trong chui k t. Mt chui c th gm cc k t c bit, v d, k t diu khin v k t khng c in. Bn c th i vo s dng c php $hh, ni m hh i din cho gi tr ca k t ASCII biu din cho h Hexa (v d: $0D$0Atext) Khi bn khai bo khong khng gian b nh cho chui k t, bn c th xc nh chui s ln nht m c th cha trong chui. nu khng xc nh c chiu di ln nht, n s mc nh vi d di ln nht 254 k t. V d
VAR Text1 : String [123]; Text2 : String; END_VAR

Hng s 123 trong phn khai bo Text1 l s k t ln nht ca chui. Cn Text2 th cha 254 k t. Ch : ng ra v tham s vo ra v gi tr phn hi ca hm, bn c th thu hp d di mc nh (254 k t) s dng tt hn trong ngun cha ca CPU. thu hp, ta vo Options > Customize v xc nh. Khi tr cho Chui k t Bin String, nh l cc bin khc, c th khi tr trong khai bo bin ca khi hm (FBs). N khng c kh nng khi to cho bin ca hm (FCs). Nu chui khi to ngn hn chui khai bo ln nht, phn k t cn li khng c khi to. Khi bin c x l trong tin trnh, ch c vng k t chim gi c a vo tnh ton. V d
x : STRING[7]:=Address

Nhm I T04

Trang 25

Tm hiu ngn ng SCL-S7-300

Nu bin tm ca chui c yu cu, v d, kt qu nhi, n phi lun c khi to vi mt chi hng s trong khai bo hoc gn gi tr trc khi n c s dng ln u tin. V d
FUNCTION Test : STRING[45] VAR_TEMP x : STRING[45]; END_VAR x := a; x := concat (in1 := x, in2 := x); Test := x; END_FUNCTION

Nu khng c khi to x:=a;,th hm khng phn hi mt cch chnh xc. nh tuyn Bin ca loi STRING bt u v kt thc ti bin WORD. 3.2.3 Loi ARRAY nh ngha ARRAY c mt s xc nh ca thnh phn loi d liu. trong SCL: C php Loi ARRAY mt chiu. y l mt dy d liu c sp xp. Loi ARRAY hai chiu. y l mt bng d liu gm hng v ct. Loi ARRAY nhiu chiu. Loi ny gm kch thc hai chiu v thm vo chiu khc. S chiu ln nht l 6.

Lit k bng k thut


Nhm I T04 Trang 26

Tm hiu ngn ng SCL-S7-300

Miu t chiu ca ARRAY: V d


VAR CONTROLLER1 : ARRAY[1..3,1..4] OF INT:= -54, 736, -83, 77, -1289,10362, 385, 2, 60, -37, -7, 103 ; CONTROLLER2 : ARRAY[1..10] OF REAL ; END_VAR

Gm tm gi tr nh nht v ln nht kiu integer (-32768 n 32767). Gii hn phi c tch bi hai chu trnh. Dy lit k ring l phi tch bi du phy. Cc h s trong ngoc n.

nh tuyn Bin ARRAY c to tng hng. Mi chiu ca bin loi BOOL, BYTE, CHAR kt thc bin BYTE, tt c cn li bin WORD. 3.2.4. Loi STRUCT nh ngha Loi STRUCT m t mt vng bao gm cc s thnh phn c th khc loi d liu. phn d liu c xc nh tc thi theo t kha STRUCT trong phn khai bo. c im chnh ca loi STRUCT l phn d liu c th c lin hp. c th an xen cc kiu d liu STRUCT cho php. C php

Khai bo
Nhm I T04 Trang 27

Tm hiu ngn ng SCL-S7-300

Khai bo phn ny l mt danh sch cc bin ca STRUCT. Bao gm: 1 n n t nhn dng vi cc loi bin gn. Mt bng lit k ngu nhin ca bin khi tr.

T nhn dng l tn ca cu trc c ng dng sn. Tt c cc loi d liu vi tham s ngoi l c php cho cc bng k thut loi d liu. Bn c la chn gi tr khi to cho cc phn cu trc sau khi bng k thut dng gn gi tr. V d
VAR MOTOR : STRUCT DATA : STRUCT LOADCURR : REAL ; VOLTAGE : INT := 5 ; END_STRUCT ; END_STRUCT ; END_VAR

nh tuyn Bin ca STRUCT bt u v kt thc ti bin WORD. 3.3. Loi D Liu Ngi S Dng Xc nh 3.3.1. Loi d liu ngi s dng xc nh (User-Defined Data Types UDTs) nh ngha Bn xc nh UDTs nh mt khi. Mt ln c xc nh, n s c dng sut trong chng trnh. Bn c th s dng n vi t nhn dng UDT, UDTx (x l con
Nhm I T04 Trang 28

Tm hiu ngn ng SCL-S7-300

s), hoc vi mt t khai bo c nh ngha trong phn khai bo ca khi logic hay khi d li. UDTs c th dng khai bo cc bin, tham s, khi d liu, hoc loi d liu khc. Phn mng hoc cu trc cng c th khai bo vi UDTs. C php

T nhn dng UDT Khai bo UDT bt u vi t kha TYPE theo tn ca t nhn dng UDT. Tn ca UDT cng c th c xc nh dng tuyt i; mt dng khc, tn tiu chun trong dng UDTx (x l con s). V d: TYPE UDT10
TYPE MEASVALUES

Bng c im k thut T nhn dng UDT theo bi bng c im. Hm STRUCT


STRUCT : END_STRUCT

V d
// UDT definition with a symbolic name TYPE MEASVALUES: STRUCT BIPOL_1 : INT := 5; BIPOL_2 : WORD := W#16#FFAA ; BIPOL_3 : BYTE := B#16#F1 ; BIPOL_4 : WORD := W#16#1919 ; MEASURE : STRUCT BIPOLAR_10V : REAL ; UNIPOLAR_4_20MA : REAL ; END_STRUCT; END_STRUCT; END_TYPE //Use of the UDT in an FB Nhm I T04 Trang 29

Tm hiu ngn ng SCL-S7-300

FUNCTION_BLOCK FB10 VAR MEAS_RANGE : MEASVALUES; END_VAR BEGIN // . . . MEAS_RANGE.BIPOL_1 := -4 ; MEAS_RANGE.MEASURE.UNIPOLAR_4_20MA := 2.7 ; // . . . END_FUNCTION_BLOCK

3.4. Loi Tham S 3.4.1. Loi tham s xc nh loi tham s khi ca FBs v FCs, bn c th s dng loi tham s trong trng hp loi ny uuc gii thiu.

3.4.2. Loi TIMER v COUNTER Bn xc nh tng loi timer v counter s dng khi mt khi hot ng. Loi ny cho php bin vo. 3.4..3. Loi BLOCK Bn xc nh mt khi d9uo5c dng nh tham s ng vo. Khai bo ca ng vo xc nh loi khi (FB, FC, DB). Cung ng tham s, bn xc nh t nhn dng
Nhm I T04 Trang 30

Tm hiu ngn ng SCL-S7-300

khi. Bn c th truy xut loi BLOCK_DB l a ch tuyt i (myDB.dw10) SCL khng cung cp bt c hot ng no cho khi khc. Tham s ca loi ny c th cung cp cc gi tr khi khi c gi. Khi s dng hm, tham s ng vo khng th chuyn qua. Trong SCL, ban c th gn a ch theo loi d liu nh tham s thc s: Khi hm khng c tham s hnh thc Hm khng c tham s nh thc hoc gi tr phn hi (hm VOID). Khi d liu v khi d liu h thng.

3.4.4. Loi POINTER (con tr) Bn c th gn gi tr n loi POINTER m bn khai o nh tham s hnh thc. Nu bn gi mt hm, nhiu tham s c th cung cp vi a ch ca bt k loi d liu no (ngoi tr ANY). Tuy nhin, SCL cng ch cung cp mt lnh ca x l d liu POINTER. Bn c th gn theo cc a ch: Hn Ch Loi POINTER cho php tham s hnh thc ng vo, tham s vo ra ca FB v FC tham s ng ra ca FC. Hng s khng c php nh tham s hnh thc. Nu bn cung cp tham s hnh thc ca loi POINTER vi bin tm khi FB v FC c gi, bn khng th chuyn qua tham s ny trong mt khi xa hn. Bin tm l mt tnh hp l khi n chuyn qua. V D
FUNCTION FC100 : VOIDVAR_IN_OUTN_out : INT; out : POINTER; END_VAR VAR_TEMP ret : INT; END_VAR BEGIN Nhm I T04 Trang 31

a ch tuyt i. Tn k t a ch loi POINTER. N ch c th dng khi l tham s hnh thc vi loi tham s ph hp. Hng s NIL

Tm hiu ngn ng SCL-S7-300

// ... ret := SFC79(N := N_out, SA := out); // ... END_FUNCTION FUNCTION_BLOCK FB100 VAR ii : INT; aa : ARRAY[1..1000] OF REAL; END_VAR BEGIN // ... FC100( N_out := ii, out := aa); // ... END_FUNCTION_BLOCK

3.5. Loi ANY ANY_INT bao gm cc kiu d liu : INT v DINT ANY_NUM bao gm cc kiu d liu : INT , DINT v REAL ANY_BIT bao gm cc kiu d liu : BOOL; BYTE; WORD; DWORD Trong SCL, bn c th khai bo bin ca ANY nh sau: Tham s hnh thc khi; tham s ny c th cung cp sau mt tham s thc s ca bt c loi d liu no khi n c gi. Nh bin tm; bn c th gn gi tr bt k loi d liu no lm bin.

Bn c th dng theo d liu nh tham s thc s hoc gi tr gn Bin chia s v cc b Bin trong DB (a ch tuyt i hoc k t) Bin trong i tng cc b (a ch tuyt i hoc k t) Hng s NIL

Bn c th xc nh mt con tr rng Loi ANY Timer, countert v khi.

Hn ch Loi POINTER cho php tham s hnh thc ng vo, tham s vo ra ca FB v FC tham s ng ra ca FC. Hng s khng c php nh tham s hnh thc.
Trang 32

Nhm I T04

Tm hiu ngn ng SCL-S7-300

Nu bn cung cp tham s hnh thc ca loi POINTER vi bin tm khi FB v FC c gi, bn khng th chuyn qua tham s ny trong mt khi xa hn. Bin tm l mt tnh hp l khi n chuyn qua.

3.5.1 V D V Loi ANY


VAR_INPUT iANY : ANY; END_VAR VAR_TEMP pANY : ANY; END_VAR CASE ii OF 1: pANY := MW4; // pANY contains the address of MW4 3..5: pANY:= aINT[ii]; //pANY contains the address of the ii th // element of the aINT field; 100: pANY:= iANY; //pANY contains the value of the iANY input variable ELSE pANY := NIL; // pANY contains the value of the NIL pointer END_CASE; SFCxxx(IN := pANY);

4) Khai Bo Hng V Bin Trong SCL: 4.1 Khai Bo Hng S trong SCL :
Hng s l mt d liu c gi tr khng i, chng khng thay i khi chng trnh ang chy Nhm hng s bn di c th c s dng trong chng trnh SCL Hng s dng bit Hng dng s Hng s dng s nguyn ( integer) Hng s dng s thc (real) Hng s dng k t Hng s dng chui k t Hng s dng thi gian Hng s dng data Hng s dng mt chu k thi gian Hng s dng thi im ca ngy Hng s dng ngy thng
Nhm I T04 Trang 33

Tm hiu ngn ng SCL-S7-300

4.1.1 Thit Lp Tn Cho Hng S


Bn c th thit lp tn cho hng s s dng lnh CONT trong phn thit lp trong chng trnh ca bn. iu ny nn lm cho tt c cc hng s trong mi phn lp trnh. Lm cch ny th trong mi on s d dng hn cho vic c v thay i gi tr hng s. Trong khi simple expressions, ch c 7 cng thc ton hc c chp nhn (*, /, +, -, **, DIV, MOD ). V d: CONST Number := 10 ; TIMEOFDAY1 := TIME#1D_1H_10M_22S_2MS ; NAME := SIEMENS ; NUMBER2 := 2 * 5 + 10 * 4 ; NUMBER3 := 3 + NUMBER2 ; END_CONST

4.1.2 Hng S Dng D Liu (data)


V d: Int1:=Int2 + 12345 //"12345" c cho di dng data kiu INT Real1:=Real2 + 12345 //"12345" c cho di dng data kiu REAL Hng s c gn kiu d liu vi thang gi tr nh nht, n s ph hp vi hng s m khng c bt c s suy gim v gi tr. V d:hng s 12345 th khng c xc nh theo dng INT nh trong STL m phi l kiu lp d liu. ph thuc vo bic s dng INT,DINT huc REAL

Kiu nh ngha hng s (Type-Defined Constants)


Trong vic s dng k hiu dnh ngha hng s, bn c th ch ra c mt data trong nhng data dng s bn di. V d:

Nhm I T04

Trang 34

Tm hiu ngn ng SCL-S7-300

4.1.3 K Hiu Hng S:


C mt dng k hiu c bit huc nh dng cho cho gi tr ca hng s, iu ny ph thuc vo vo dng d liu hay nh dng d liu. kiu v gi tr ca hng s c quyt nh trc tip bi k hiu ca chng, m khng cn phi thit lp cho n. V d: 15 VALUE 15 hng s kiu s nguyn nh dng l dng thp phn 2#1111 VALUE 15 hng s kiu s nguyn dnh dng l dng nh phn 16#F VALUE 15 hng s dng s nguyn dnh dng kiu s HEX Cc k hiu c th s dng bng di

Nhm I T04

Trang 35

Tm hiu ngn ng SCL-S7-300

Hng s dng bit


Hng s kiu bit cha ng ga tr vi di 1 bit, 8 bit, 16 bit, huc 32 bit. iu ny ph thuc vo chiu di ca chng, chng c th c gn vi cc bin trong chng trnh SCL vi cc d liu kiu BOOL, BYTE, WORD huc DWORD. C php:

Nhm I T04

Trang 36

Tm hiu ngn ng SCL-S7-300

Chui k t thp phn (Decimal Digit String)


Hng s thp phn c th l mt dy s (nu cn, chng c th c tch ra bi cc du gch di). du ghch di cho d c trong trng hp s di. V d: nhng hng s gm chui k t nh bn di:

W1: WORD : = W#1234 ; //decimal W2: WORD : = W#16#1234 ; //hexadecimal W3: WORD : = W#8#1234 ; //octal W4: WORD := W#2#0000_0001_1010_1110 ;// binary
DW#2#1111_0000_1111_0000 dword#32768

Nh phn, bt phn, thp lc phn ( Binary, Octal and Hexadecimal Values)


Bn c th thy r mt hng s nguyn trong mt h thng chng c k hiu khc so vi dng thp phn, chng c s dng bi tip u ng 2#, 8# ,16# theo sau l cc s trong k hiu tu vo s la chn ca h thng. iu ny c nh ch r hnh bn di. V d ca mt chui s bt phn:

V d: Di y l v d gii thch v k hiu ca hng s dng bit: Bool#false 8#177777 DW#16#0000_0000

4.1.3.2 Hng S Nguyn:


Hng s dng s nguyn cha ng tt c cc gi tr s vi d di 16 bit huc 32 bit. Trong vic p ng di ca chng, c th chng c gn bin i vi dng d liu INT huc DINT trong chng trnh SCL. C php:

Nhm I T04

Trang 37

Tm hiu ngn ng SCL-S7-300

Chui k t thp phn (Decimal Digit String)


Hng s thp phn c th l mt dy s (nu cn, chng c th c tch ra bi cc du gch di). Du ghch di cho d c trong trng hp s di. V d: Nhng hng s gm chui k t nh bn di: 1000 1_120_200 666_999_400_311

Vi gi tr nh phn, bt phn, thp lc phn ( Binary, Octal and Hexadecimal Values)


Bn c th thy r mt hng s nguyn trong mt h thng chng c k hiu khc so vi dng thp phn, chng c s dng bi tip u ng 2#, 8# ,16# theo sau l cc s trong k hiu tu vo s la chn ca h thng. V d: Di y l v d gii thch v k hiu ca hng s dng nguyn: Value_2:=2#0101; // Binary number, decimal value 5 Value_3:=8#17; // Octal number, decimal value 14 Value_4:=16#F; // Hexadecimal number, decimal value 15 Value_5:=INT#16#3f_ff // Hexadecimal number, type-defined Notation

4.1.3.3 Hng S Dng S Thc.


Hng s dng s thc c gi tr vi vng thp phn. Chng c th c gn bin i vi d liu dng s thc REAL. C php

Nhm I T04

Trang 38

Tm hiu ngn ng SCL-S7-300

Vic s dng du cng huc du tr c th tu chn. nu khng ghi du phn bit th gi tr c gi nh l du dng Hng s thp phn c th l mt dy s (nu cn, chng c th c tch ra bi cc du gch di). du ghch di cho d c trong trng hp s di. V d: nhng hng s gm chui k t nh bn di: 1000 1_120_200 666_999_400_311

S m (exponent )
Khi chng ta s dng s c du chm ng. Chng ta c th dng dng hm m c ch r bi ch E Huc ch e v theo theo l gi tr dng integer. Gi tr ny c th c c biu din trong chng trnh SCL bi s thc. 3.0E+10 3.0E10 3e+10 3E10 0.3E+11 0.3e11 30.0E+9 30e9 V d NUM4:= -3.4 ; NUM5:= 4e2 ; NUM6:= real#1.5;

4.1.3.4 Hng S Dng K T (Dng K T n Gin)


Hng s dng k t ch cha mt k t. K t c ng ngoc bi du phy n (). Hng s kiu k t khng c s dng trong biu thc. C php:

V d: Charac_1 := B; Charac_2 := char#43; Charac_3 := char#B; C php ca dng k t: Bt c dng k t no m rng sang m k t ASCII u c th c s dng. c bit l mhng k t nh dng nh du () huc $ c th c a vo s dng trong vic thot khi k hiu $. Bn cng c th s dng k t trng, m rng m ASCII. lm c iu ny , bn cn phi bit r k t ca m ASCII thay th bng s HEX nh th no.

Nhm I T04

Trang 39

Tm hiu ngn ng SCL-S7-300

*P = Form feed L = Line feed ( tip dng) R = Carriage return ( k t xung dng) T = Tabulator ( b lp bng) N = New line ( dng mi) V d dng k t biu din trong dng m HEX. CHARACTER := $41 ; //tng ng vi k t A Blank :=$20; //tng ng vi k t |_|

Khai bo kiu String: String1 = vanha$&123;

4.1.3.5 Hng S Dng Chui:


Mt hng s dng chui l mt chui k t vi gi tr ln nht l 254 k t. Nhng k t ny c bao bi du nguc n (). Nhng hng s dng chui khng c s dng trong biu thc. C php:

C php ca dng k t: Bt c dng k t no m rng thnh m k t ASCII u c th c s dng. c bit l nhng k t nh dng nh du () huc $ c th c a vo s dng trong vic thot khi k hiu $. Bn cng c th s dng k t trng, m rng m ASCII. lm c iu ny , bn phi bit r k t ca m ASCII thay th bng s HEX nh th no. *P = Form feed ( tip trang) L = Line feed ( tip dng) R = Carriage return ( k t xung dng) T = Tabulator ( b lp bng) N = New line ( dng mi)

Nhm I T04

Trang 40

Tm hiu ngn ng SCL-S7-300

Ngt mt chui (Interrupting a String)


Bn c th ngt ra v kt hp li mt chui nhiu ln Mt chui c t vo v tr trong mt dng ca mt on chng trnh SCL huc c ko di nhiu dng, s dng kiu nhn dng c bit. ngt mt chui, bn s dng k t nhn dng $> v tip tc cho n trong mt dng di hn, bn s dng k t nhn dng $<. Cch nhn bit khong trng gia chng trnh ngt v kt hp c th ko di qua nhiu dng v c th cha trong phn ch gii hay khong trng.

v d: // hng s chui: NAME:= SIEMENS; //ngt mt hng s chui MESSAGE1:= MOTOR- $> $< Controller; // chi trong hexadecimal: MESSAGE1:= $41$4E (*character string AN*);

4.1.3.6 Hng S Dng Ngy Thng


Mt ngy c a ra bi tip u ng DATA# huc D#. Dng ngy thng c nh r bi dng integer cho nm 94 s), cn thng v ngy tch bit bi du gch. C php:

V d: TIMEVARIABLE1:= DATE#1995-11-11 ; TIMEVARIABLE2:= D#1995-05-05 ;

Nhm I T04

Trang 41

Tm hiu ngn ng SCL-S7-300

4.1.3.7 Hng S Khong Thi Gian.


Khong thi gian c a ra vi tip u ng l TIME# huc T#. khong thi gian c th c biu din bng 2 cch. Dng thp phn nh dng kiu a hp Mi mt n v thi gian (gi, pht ...) c th ch c nh r mt ln. Th t ngy, gi, pht, giy, ms phi c gn. S thay i t nh dng a hp sang nh dng kiu thp phn ch c php khi n v thi gian khng c nh ngha r dng. Theo sau tip u ng T# huc time#, bn phi nh r t nht l mt n v thi gian.

nh Dng Kiu Thp Phn


khi bn s dng dng dng thp phn th bn nh r dng thi gian nh gi huc pht theo dng thp phn.

S dng nh dng thi gian n gin th c th khng phi xc nh n v thi gian. nh dng kiu a hp l mt dy thnh phn thi gian ring bit. u tin l ngy sau l gi... Chng c nh r mt cch ring l bi ng gch di cc k t. Bn c th b i nhng thnh phn thi gian. Tuy nhin t nht bn phi 1 n v thi gian mt cch r rng. V d: // nh dng thp phn Interval1:= TIME#10.5S ; // nh dng hn hp Interval2:= T#3D_2S_3MS ; // c hn hp v thp phn Interval3 := T#2D_2.3s ;

4.1.3.8 Hng S Dng Thi Gian Trong Ngy (Time-of-Day Constants)


Mt thi gian trong ngy c nh dng vi tip u ng l TIME_OF_DAY# huc TOD#. C php:

Thi gian ca mt ngy c ch r bi cc thng s gi, pht, giy v tch bit nhau bi du (:) c th tu chn nh r thm v ms. n v thi gian ms c tch ring bi mt du chm (.).
Nhm I T04 Trang 42

Tm hiu ngn ng SCL-S7-300

V d: TIMEOFDAY1:= TIME_OF_DAY#12:12:12.2 ; TIMEOFDAY2:= TOD#11:11:11 ;

4.1.3.9 Ngy Thng V Thi Gian (Date and Time Constants)


Ngy v thi gian c cu trc vi tip u ng l DATE_AND_TIME# huc DT#. y l hng s ch r thi im ca mt ngy thng. C php:

Nhm I T04

Trang 43

Tm hiu ngn ng SCL-S7-300

V d: TIMEOFDAY1:= DATE_AND_TIME#1995-01-01-12:12:12.2 ; TIMEOFDAY2:= DT#1995-02-02-11:11:11;

4.1.4 Khai Bo Nhn (Declaring Labels)


Nhn c s dng nhn dng ci ch m lnh GOTO s nhy n. Chng c khai bo trong phn chng trnh khai bo vi mt khi logic c tn ca chng. C php:

V d: LABEL LAB1, LAB2, LAB3; END_LABEL

Cch khai bo 1 s kiu d liu: Khai bo Hng : Int1 : = int2+1234 ; Real1: = real2+ 1234 ; Cch nh ngha cc hng S Dng a ch tng i: MW14 := SHL(IN := MW12 ,N:=2) ; real1 := real2 + DWORD_TO_REAL( MD10);

Nhm I T04

Trang 44

Tm hiu ngn ng SCL-S7-300

4.2 Khai Bo Bin: 4.2.1. Bin cc b v tham s khi Cc loi ca bin Bin Bin c nh Gii thch Gi gi tr qua nhiu chu k; lu gi tr ca mt hm hoc khi hm Ph thuc vo khi logic cc cp m khng chim gi vng nh c nh, n lu trong ngn xp CPU. Gi tr ny cn gi khi cn lin h v khng b truy xut bi cc khi ngoi.

Bin tm

Cc loi ca tham s khi Tham s khi l phn gi ch c gn mt gi tr xc nh khi khi c gi. Phn gi ch trong khi c bit nh tham s hnh thc v gi tr gn ti chng khi khi c gi l tham chiu nh tham s thc s. Tham s hnh thc c biu din nh bin cc b. Bng minh ha: Tham s khi Tham s ng vo Gii thch Chp nhn gi tr ng vo khi c gi. Ch c chc nng c chuy i gi tr khi hm c gi. C th c v ghi. Chp nhn gi tr ng vo khi khi c gi. Sau khi x l gi tr, chng nhn gi tr v phn hi v hm gi.

Tham s ng ra Tham s vo ra

C nh (OK Flag) Trong bin SCL, c nh dng kim tra li khi chng trnh chy trong CPU. N l bin cc b ca loi BOOL v c nh ngha trc tn OK

Nhm I T04

Trang 45

Tm hiu ngn ng SCL-S7-300

4.2.2. C Php Chung Bin v tham s khi phi khai bo ring trc khi c dng trong khi logic v khi d liu. khai bo xc nh mt t nhn dng c dng tham s khi hoc bin v c gn n mt loi d liu. Khai ba mt bin hoc tham s bao gm mt t nhn dng v loi d liu. C php

V d
VALUE1 : REAL;

Nhiu loi tham s th khai bo:


VALUE2, VALUE3,VALUE4,....: INT; ARR : ARRAY[1..100, 1..10] OF REAL; SET : STRUCT MEASARR:ARRAY[1..20] OF REAL; SWITCH:BOOL; END_STRUCT

4.2.3. Khi To Bin c nh nh tham s ng vo, ng ra ca mt FB c th gn gi tr ban u khi khai bo. Tham s vo ra c th cng gn gi tr ban u, tuy nhin, nu chng l mt phn d liu c bn. Vi bin n gin, gi tr ban du c gn bng (:=) hng s. C php
Nhm I T04 Trang 46

Tm hiu ngn ng SCL-S7-300

V d
VALUE :REAL := 20.25;

Khi to mng Bn phi xc nh gi tr tng thnh phn b du chm. C php

V d
VAR // Initialization of static variables: INDEX1 : INT := 3 ; //Array initialization: CONTROLLER1 : ARRAY [1..2, 1..2] OF INT := -54, 736, -83, 77; CONTROLLER2 : ARRAY[1..10] OF REAL := 10(2.5); //Structure initialization: GENERATOR: STRUCT DAT1 : REAL := 100.5; A1 : INT := 10 ; A2 : STRING[6] := FACTOR; A3 : ARRAY[1..12] OF REAL := 0.0, 10(100.0), 1.0; END_STRUCT ; END_VAR Nhm I T04 Trang 47

Tm hiu ngn ng SCL-S7-300

4.2.4. Dng Khai Bo Ca Dy Bin C th truy xut mt khai bo bin vi loi d liu khc nhau, bn c th xc h dng ca bin hoc ca dy trong bin s dng t kha AT. Mt dng c th nhn thy c ch cc b trong khi. N tha hng cc c tnh ca bin mu. V d
VAR_INPUT Buffer : ARRAY[0..255] OF BYTE; Frame1 AT Buffer : UDT100 ; Frame2 AT Buffer : UDT200 ; END_VAR

Quy lut Khai bo ca cc dng xa hn ca bin phi c to theo khai bo ca bin m n tr n cc khai bo cng loi Loi d liu ca dng phi so snh vi loi d liu ca bin. Bin xc nh kch c vng nh. i hi b nh ca dng phi nh hn hoc bng.

Nhm I T04

Trang 48

Tm hiu ngn ng SCL-S7-300

(1) ANY pointer not permitted in VAR_OUT.


Elementary = BOOL, BYTE, WORD, DWORD, INT, DINT, DATE, TIME, S5TIME, CHAR Complex = ARRAY, STRUCT, DATE_AND_TIME, STRING

4.2.5. S Dng Nhiu i Tng C th bn mun hoc phi dng hn ch s th t khi cho d liu ring ca i tng. Nu mt khi hm hin hnh c gi trong FB trong chng trnh ca bn. Bao gm khi hm bn mun gi nh bin c nh. Trong khi hm, gi hm khc m khng c i tng ring ca khi d liu. Tch ly nhiu d liu i tng trong mt hm, bn c th s dng nhiu s th t hm hn.

4.2.6. Khai Bo Hng i Tng i vi khi hm, bn c th khai bo bin ca loi FB hoc SFB trong khai bo vng cho bin c nh (VAR; END_VAR). Nhiu bin c gi cc i tng cc b ca FB hoc SFB. D liu i tng cc b c cha trong khi d liu i tng ca khi hm gi. Khng th mt khi to i tng cc b xc nh. Khi c gi nh mt i tng phi khng c di 0. t nht mt bin c nh hoc tham s phi khai bo. C php

V d
Supply1 : FB10; Supply2,Supply3,Supply4 : FB100; Motor1 : Motor ;

Nhm I T04

Trang 49

Tm hiu ngn ng SCL-S7-300

4.2.7 C Nh (OK Flag) C nh dng ch dn thc thi mt khi chnh xc hoc khng chnh xc. N l mt bin cc b ca loi BOOL vi nh ngha trc l OK. Bt u chng trnh, c nh c gi tr TRUE. N c th c hi bt k con tr no trong khi hoc c th c set ln TRUE/FASLE s dng lnh SCL. Nu c li trong khi vn hnh, c nh set v FASLE. Khi khi c thot, gi tr c nh c lu trong tham s ng ra ENO v c th c nh gi bi khi gi. Khai bo C nh l bin h thng. khng cn thit khai bo. Tuy nhin bn phi chn bng la chn bin dch set OK flag trc khi bin dch. V d
// Set OK flag to TRUE // to check whether the // action executes correctly. OK:= TRUE; Division:= 1 / IN; IF OK THEN // Division was correct. // : // : ELSE // Division was not correct. // : END_IF;.

4.2.8. Tiu Vng Khai Bo 4.2.8.1. Tng Quan V Tiu Vng Khai Bo Ch c loi bin cc b hoc tham s c t nhn dng tiu vng khai bo ring bi cc t kha ring. Mi vng cha ng cc khai bo c php cho cc thnh phn tiu vng khai bo. Bng minh ha cc bin hoc tham s m bn khai bo trong cc khi logic khc nhau.

Nhm I T04

Trang 50

Tm hiu ngn ng SCL-S7-300

*)Mc d khai bo ca bin nm gia t kha VAR v END_VAR, nhng khai bo vn c to trong vng tm khi bin dch tp tin ngun.

4.2.8.2 Bin C nh
Bin c nh l cc bin cc b c gi li khi khi vn hnh. N dng lu gi tr ca khi hm v cha khi d liu tng ng. C php N c khai bo trong phn khai bo VAR / END_VAR. Vng khai bo ny l phn ca khai bo FB. Sau khi bin dch, vng ny v vng ca tham s khi quyt nh cu trc khi d liu i tng gn. Trong vng ny, bn c th: To bin, gn gi tr cho bin v khi to bin. Khai bo hm gi nh mt bin c nh nu bn mun gi n trong khi hm hin hnh.

Nhm I T04

Trang 51

Tm hiu ngn ng SCL-S7-300

V d
VAR RUN :INT; MEASARR :ARRAY [1..10] OF REAL; SWITCH :BOOL; MOTOR_1,MOTOR_2 :FB100; //Instance declaration END_VAR

Truy xut Bin c truy xut nh sau: Truy xut trong khi: trong m vng ca khi hm, bin khai bo trong vng khai bo, bn c th truy xut bin. iu ny c gii thch chi tiet1 hn trong phn gi tr gn Truy xut ngoi s dng i tng DB: Bn c th truy xua56t1bie61n t khi khc bng cch s dng bng truy xut, v d DBx.variable

4.2.8.3. Bin Tm
Bin tm ph thuc vo khi logic v khng gi vng nh c nh, n c t trong ngn xp CPU. Gi tr n ch gi ly khi khi lin h vn hnh. Bin tm kho6ngt th truy xut ra bn ngoi khi chng c khai bo. Khi mt OB, FB, FC thc thi ln u, gi tr ca d liu tm khng c xc nh. Khng th khi to n. Bn nn khai bo d liu nh d liu tm nu bn yu cu n ghi kt qu chuyn tip khi OB, FC,FB ang thc thi. C php
Nhm I T04 Trang 52

Tm hiu ngn ng SCL-S7-300

N c khai bo trong phn khai bo VAR_TEMP / END_VAR. Vng khai bo ny l phn ca khai bo FB, FC, OB. N dng khai bo tn bin v loi d liu trong khai bo bin.

V d
VAR_TEMP BUFFER 1 : ARRAY [1..10] OF INT ; AUX1, AUX2 : REAL ; END_VAR

Truy xut Bin ny lun c truy xut t phn ca khi m bin c khai bo. 4.2.8.4. Tham S Khi Tham s l phn gi ch m c gn gi tr khi khi c gi. Phn chim gi trong khi c bit nh tham s hnh thc. V vy tham s cung cp mt phn dn cho chuyn i thng tin cc khi. Loi ca tham s khi C php Khai bo ca tham s hnh thc c to trong phn khai bo ca hm hoc nhm theo tham s trong ba vng khai bo. Trong khai bo bin, bn xc nh tn tham s v loi d liu. C th khi to cho tham s ng vo v ng ra cho hm FB. Khi
Nhm I T04 Trang 53

Tham s hnh thc ng vo c gn gi tr thc s ng vo. Tham s hnh thc ng ra c gn gi tr thc s ng ra. Tham s hnh thc vo ra c gn gi tr thc s vo ra.

Tm hiu ngn ng SCL-S7-300

khai bo tham s hnh thc, bn c th s dng phn c bn, phc tp v loi d liu ngi s dng xc nh.

V d
VAR_INPUT // Input parameters MY_DB : BLOCK_DB ; CONTROLLER : DWORD ; TIMEOFDAY : TIME_OF_DAY ; END_VAR VAR_OUTPUT // Output parameters SETPOINTS: ARRAY [1..10] of INT ; END_VAR VAR_IN_OUT // In_out parameters SETTING : INT ; END_VAR

Truy xut Tham s kh truy xut t phn m ca khi logic: Truy xut trong: truy xut trong cc phn ca khi m n c khai bo. Truy xut ngoi dng khi d liu i tng: ban c th truy xut khi hm s dng hm gn i tng DB.

5) Cc Cu Lnh iu Khin:
IF : Nhnh chng trnh ph thuc bi 1 gi tr Boolean CASE : Nhnh chng trnh ph thuc bi 1 gi tr INT FOR : Vng chng trnh lp xc nh WHILE : Vng lp khng xc nh REPEAT : Vng lp khng xc nh CONTINUE : Kt thc thc thi lp li hin ti ca cu lnh vng lp EXIT : Thot vng lp GOTO : Nhy ti 1 nhn chng trnh
Nhm I T04 Trang 54

Tm hiu ngn ng SCL-S7-300

RETURN 5.1 Cu

: Thot khi 1 Block chng trnh

lnh IF:

Cu trc :
IF ( iu kin) THEN Cng vic 1; // Statement Section_IF ELSIF ( iu kin 2) THEN Cng vic 2 ; // Statement Section_ELSIF ELSE Cng vic n; // Statement Section_ELSE END_IF; // kt thc lnh. Cc Qui Tc Cu Lnh IF c Thc Thi
H qu u tin ca cu lnh c din gii logic = TRUE c thc thi. Cc h qu cn li khng c thc thi. Nu khng c din gii Boolean no = TRUE th h qu ca cu lnh ELSE c thc thi (hay khng c h qu no nu nhnh ELSE khng tn ti). Bt k lnh ELSIF no cng c th c mt. Ch Dng 1 hay nhiu nhnh ELSIF c u im l din gii logic sau din gii khng cn c tnh n trong h qu ca lnh IF. V th nn thi gian ca chng trnh c gim xung.

Mt s v d thc t: ORGANIZATION_BLOCK OB1 VAR_TEMP Ha : ARRAY[0..19] OF BYTE; END_VAR IF ((I0.0 = 1) OR (Q4.0 = 1)) AND( I0.1 = 0) THEN Q4.0 := 1 ; // nu I0.0 = 1 hoc Q4.0 = 1 v I0.1 = 0 th Q4.0 := 1 END_IF; END_ORGANIZATION_BLOCK Dng lnh tng ng trong LAD

Nhm I T04

Trang 55

Tm hiu ngn ng SCL-S7-300

V d 2: on chng trnh trong chng trnh iu khin bng ti. IF NOT Select_FC & NOT Select_FB & Select_L THEN "Feed"."FeedData"( Start := Start, Removed := "Continue", Man_start := Man_on, Stop := "/Stop", Reset := Basic_st, Count := "Count", Tim := "Monitor"); Readyload := "FeedData".Load; Ready_rem := "FeedData".Remove; END_IF;

5.2 .Cu Lnh Case


Cu lnh CASE dng chn 1 trong 1 vi phn khc ca chng trnh. S la chn ph thuc vo gi tr hin ti ca din gii la chn.

C php:
CASE value OF 0..3 : // cng vic _0..3 ; 8: // cng vic _8 ; ELSE: // cng vic cn li _ELSE ; END_CASE;
Nhm I T04 Trang 56

Tm hiu ngn ng SCL-S7-300

Cu lnh CASE c thc thi theo cc qui tc sau: Din gii la chn phi tr li gi tr kiu INTEGER. Khi cu lnh CASE c x l. Chng trnh kim tra xem gi tr ca din gii chn la bao hm trong bng gi tr xc nh trc hay khng. Nu 1 gi tr c tm thy, cu lnh thnh phn trong danh sch c thc thi. Nu khng tm thy c, phn chng trnh ELSE pha sau s c thc thi hay khng cu lnh no c thc thi nu nhnh ELSE khng tn ti. Cc qui tc sau c p dng khi lit k gi tr: Mi gi tr c lit k bt u l 1 hng s, 1 chui hng s hay 1 dy hng s. Nhng gi tr trong bng gi tr phi l kiu INTEGER. Mi gi tr ch xut hin 1 ln. Mt s v d: FUNCTION_BLOCK "CASE" TITLE = ' s dng cu lnh CASE ' VAR Expression1 : INT; Expression2 : INT; Expression3 : INT; Day_of_the_week: STRING[12]; Dat : DATE; ID : INT; Error_number : INT; END_VAR VAR_TEMP Return_jump : INT; END_VAR LABEL Subroutine; M_1; M_2; M_3; End; END_LABEL BEGIN //CASE with simple waiting list CASE Expression1 OF 1 : Q4.1 := TRUE; 2 : Q4.2 := TRUE; 3 : Q4.3 := TRUE; END_CASE; //CASE with value areas CASE Expression2 OF 1,2 : Q4.4 := TRUE; 2,3 : Q4.5 := TRUE; ELSE : QB4 := 0;

Nhm I T04

Trang 57

Tm hiu ngn ng SCL-S7-300

END_CASE; //CASE with gaps in the value areas CASE Expression3 OF 1..4 : Q5.1 := TRUE; 7..9 : Q5.2 := TRUE; 12..16 : Q5.3 := TRUE; ELSE : QB5 := 0; END_CASE; //Determining the day of the week from the DATE format CASE DINT_TO_INT(DATE_TO_DINT(Dat) MOD 7)+1 OF 1 : Day_of_the_week := 'Monday'; 2 : Day_of_the_week := 'Tuesday'; 3 : Day_of_the_week := 'Wednesday'; 4 : Day_of_the_week := 'Thursday'; 5 : Day_of_the_week := 'Friday'; 6 : Day_of_the_week := 'Saturday'; 7 : Day_of_the_week := 'Sunday'; END_CASE; //Assigning an error number CASE ID OF 0 : Error_number := 0; 1,3,5 : Error_number := ID + 128; 6..10 : Error_number := ID; ELSE : Error_number := 16#7F; END_CASE; //"Subroutines" IF I1.0 THEN Return_jump := 1; GOTO subroutine; END_IF; M_1: (*Return jump from subroutine*); IF I1.1 THEN Return_jump := 2; GOTO subroutine; END_IF; M_2: (*Return jump from subroutine*); IF I1.2 THEN Return_jump := 3; GOTO subroutine; END_IF; M_3: (*Return jump from subroutine*); GOTO End; //Jump over subroutine //********************************************************* CASE return_jump OF 1 : GOTO M_1; 2 : GOTO M_2; 3 : GOTO M_3; END_CASE; //********************************************************* End: ; END_FUNCTION_BLOCK

Nhm I T04

Trang 58

Tm hiu ngn ng SCL-S7-300

5.3 Cu Lnh For


1 cu lnh FOR c dng lp li 1 h qu min l bin iu khin trong tm gi tr xc nh trc. Bin iu khin phi l 1 bin t hay l bin cc b loi INT hay DINT. nh ngha v vng lp FOR bao gm s xc nh 1 gi tr u v 1 gi tr cui. C 2 gi tr phi cng loi vi bin iu khin. C Php: FOR Control Variable:= Start TO End BY Increment DO // Statement Section ; END_FOR; Cu lnh FOR c thc thi nh sau: Ti u vng lp, bin iu khin c t 1 gi tr u (khai bo ban u) v mi ln vng lp lp li, n gia tng s tng gi tr xc nh trc (tng tch cc) hay gim i (tng tiu cc) cho n khi n gi tr cui cng. Mi khi chy vng lp, iu kin c kim tra (n gi tr cui cng) bit c c tha mn hay khng. Nu iu kin tha mn, h qu ca cu lnh c thc thi, ngc li th h qu khng c thc thi.

Qui tc Cc qui tc thit lp cu lnh FOR Bin iu khin l d liu kiu INT hay DINT. Bn c th b qua cu lnh BY. Nu khng c gi tr tng no c xc nh th n t ng cng thm 1.

V D Minh Ha: FUNCTION_BLOCK "FOR" TITLE = 'FOR Statement' VAR index1 : INT := 4; index2 : INT := 6; index3 : INT := 8; END_VAR VAR_TEMP Runtime_variable : INT; i, k : INT; END_VAR BEGIN FOR Runtime_variable := 0 TO 7 DO M[index1,Runtime_variable] := TRUE; END_FOR;
Nhm I T04 Trang 59

Tm hiu ngn ng SCL-S7-300

FOR Runtime_variable := 0 TO 15 BY 2 DO M[index2 + Runtime_variable MOD 8, Runtime_variable] := TRUE; END_FOR; MD[index1] := 0; MD[index2] := 0; (* Set memory bits *) FOR i := 2 TO 23 DO M[i DIV 8,i MOD 8] := TRUE; END_FOR; MD[index2] := MD[index1]; //Nested FOR loops (* Reset memory bits *) FOR i := 0 TO 2 DO FOR k := 0 TO 7 DO IF (k < 2 AND i = 0) THEN CONTINUE; END_IF; IF (i = 2 AND k > 5) THEN EXIT; END_IF; M[i,K] := FALSE; END_FOR; END_FOR; MW[index3] := INT_TO_WORD(i); MW[index3 + 2] := INT_TO_WORD(k); //FOR loop with step width <> 1 FOR i:=128 TO 142 BY 2 DO MW[i] := PIW[i]; END_FOR; //Abort FOR loops FOR Runtime_variable := 0 TO 15 DO M[index2,Runtime_variable] := TRUE; IF Runtime_variable = 7 THEN CONTINUE; ELSIF Runtime_variable = 8 THEN CONTINUE; END_IF; IF Runtime_variable = 10 THEN EXIT; END_IF; M[index2 + 1,Runtime_variable] := TRUE; END_FOR; MD[index2] := 0; END_FUNCTION_BLOCK

Nhm I T04

Trang 60

Tm hiu ngn ng SCL-S7-300

5.4 Cu Lnh While:


Cu lnh WHILE cho php s thc thi lp li ca 1 h qu ca cc cu lnh c iu khin bi 1 iu kin thc thi. iu kin thc thi c to thnh theo cc qui tc cho din gii logic.

Cu Trc: WHILE ( iu kin) DO // Statement Section ; END_WHILE;


Cu lnh WHILE c thc thi theo cc qui tc sau: Trc khi c s lp li ca vng lp FOR, iu kin thc thi c tnh ton. Sau vng lp DO lp li min l iu kin thc thi c gi tr TRUE. Mi khi gi tr FALSE xut hin, vng lp b qua cu lnh v vng lp tip theo c thc thi.

V d minh ha:
FUNCTION_BLOCK "WHILE" TITLE = 'WHILE Statement' VAR_INPUT Data : BLOCK_DB; END_VAR VAR Runtime_variable : INT; Dat : DATE; NextWeek : ARRAY[1..7] OF DATE; byteindex : INT; bitindex : INT; END_VAR VAR_TEMP t_Date : DINT; i, k : INT; END_VAR BEGIN //Simple WHILE statement i := 0; WHILE Data.DW[i] = 16#FFFF DO i := i + 1; END_WHILE; //Finding the next date that falls at the beginning of the week
Nhm I T04 Trang 61

Tm hiu ngn ng SCL-S7-300

t_Date := DATE_TO_DINT(Dat); WHILE (t_Date MOD 7)+1 <> 1 DO t_Date := t_Date + 1; END_WHILE; //Saving the date information for the next week FOR i := 1 TO 7 DO NextWeek[i] := DINT_TO_DATE(t_Date + i - 1); END_FOR; //Finding the first input bit containing "1" i := 0; k := 0; WHILE I[i,k] = TRUE DO k := k + 1; IF k = 8 THEN k := 0; i := i + 1; END_IF; IF i > i + 4 THEN EXIT; END_IF; END_WHILE; byteindex := i; bitindex := k;END_FUNCTION_BLOCK

5.5 Cu Lnh Repeat:


Cu lnh REPEAT s lm cho thc thi lp li h qu ca cu lnh gia REPEAT v UNTIL cho n khi iu kin kt thc xut hin. iu kin kt thc c to thnh da vo cc qui tc cho din gii logic. Cu trc:

REPEAT
// Statement Section ; UNTIL a = b // iu kin dng END_REPEAT; iu kin c tnh sau khi vng lp c thc thi. Ngha l vng lp c thc thi t nht 1 ln cho ngay c khi iu kin kt thc tha mn khi vng lp bt u.

V d minh ha:
FUNCTION_BLOCK "REPEAT" TITLE = 'REPEAT Statement' VAR Runtime_variable : INT := 0; Meas_values : ARRAY [1..32] OF INT; END_VAR VAR_TEMP SFC_ERROR : INT; busy, done : BOOL; END_VAR
Nhm I T04 Trang 62

Tm hiu ngn ng SCL-S7-300

LABEL End; END_LABEL BEGIN Meas_values [32] := -1; REPEAT Meas_values[Runtime_variable] := 0; Runtime_variable := Runtime_variable + 1; UNTIL Meas_values[Runtime_variable] = -1 END_REPEAT; REPEAT M4.1 := TRUE; IF I1.2 THEN CONTINUE; END_IF; M4.2 := TRUE; IF I1.3 THEN EXIT; END_IF; M4.3 := TRUE; UNTIL NOT I1.1 END_REPEAT; IF I1.4 THEN MB4 := 0; END_IF; GOTO End; //Call at restart REPEAT SFC_ERROR := COMPRESS( BUSY := busy, DONE := done); UNTIL done END_REPEAT; End: ; END_FUNCTION_BLOCK

5.6: Lnh Continue


1 cu lnh CONTINUE c s dng kt thc thc thi lp li hin ti ca cu lnh vng lp (FOR, WHILE hay REPEAT). Cu lnh CONTINUE c thc thi theo cc qui tc sau: V D: FOR i = 0 TO 2 DO FOR k := 0 TO 7 DO IF( k<2& I =0) THEN CONTINUE ;
Nhm I T04 Trang 63

Cu lnh ngay lp tc kt thc s thc thi ca vng lp. Ty thuc vo iu kin lp li vng lp c tha mn hay khng vng lp c thc thi ln na hay s lp li cu lnh c kich hot v cu lnh sau c thc thi. Trong cu lnh FOR, bin iu khin c tng ln bng cch xc nh s gia tng sau cu lnh CONTINUE.

Tm hiu ngn ng SCL-S7-300

END_IF; M(I,k) = TRUE; END_FOR; END_FOR; 5.7 Cu Lnh EXIT 1 cu lnh EXIT c dng thot vng lp (FOR,WHILE hay REPEAT) ti bt k thi im no m khng cn quan tm n iu kin kt thc c c tha mn. Cu lnh EXIT thc thi phi tun theo cc qui tc sau: Cu lnh ny to ra s lp li cu lnh ngay lp tc xung quanh cu lnh thot c thc thi ngay. Chng trnh tip tc c thc thi ngay sau cui vng lp (v d sau END_FOR).

V D:
FOR i = 0 TO 2 DO FOR k := 0 TO 7 DO IF( k<2& I =0) THEN EXIT ; END_IF; M(I,k) = TRUE; END_FOR; END_FOR; 5.8 Cu

Lnh GOTO

Bn c th b sung 1 chng trnh nhy dng cu lnh GOTO. iu ny to nn 1 bc nhy tc thi n 1 nhn xc nh v v vy n 1 cu lnh khc trong cng 1 khi. Cu lnh GOTO ch nn dng cho tnh hung c bit, v d trong x l li. Theo qui tc ca chng trnh cu trc, cu lnh GOTO khng nn s dng. y nhn l 1 nhn trong vng din gii END/END_LABEL. Nhn ny ng trc cu lnh s c thc thi sau cu lnh GOTO. Nu bn s dng lnh GOTO phi nh cc qui tc sau: Ni n ca php nhy phi trong cng 1 khi. Ni n ca php nhy phi l duy nht. Khng th nhy vo trong 1 vng lp. Ch c th nhy ra ngoi vng lp.

V D:
IF I1.0 THEN Return_jump := 1; GOTO subroutine; END_IF; M_1: (*Return jump from subroutine*); IF I1.1 THEN Return_jump := 2; GOTO subroutine; END_IF;
Nhm I T04 Trang 64

Tm hiu ngn ng SCL-S7-300

M_2: (*Return jump from subroutine*); IF I1.2 THEN Return_jump := 3; GOTO subroutine; END_IF; M_3: (*Return jump from subroutine*); GOTO End; //Jump over subroutine //********************************************************* CASE return_jump OF 1 : GOTO M_1; 2 : GOTO M_2; 3 : GOTO M_3; END_CASE; 5.9 Cu

Lnh RETURN
1 cu lnh RETURN thot khi khi ang hot ng (OB, FB, FC) v quay tr v khi ang gi hay quay v h thng hot ng khi 1 OB c thot. Ch 1 cu lnh RETURN t ti dng lnh cui ca 1 khi logic hay 1 din gii ca khi d liu th d tha v n c t ng thc thi.

6) Cc Hm Cch Khai Bo V Gi Hm Trong SCL


6.1 Cc Hm Thi Gian ( Timer Functions)
Timers l mt phn t hm trong chng trnh ca bn. N chy v quan st v quan st thi gian iu khin cc hm. STEP 7 cung cp mt chui cc chun hm thi gian bn c th s dng chng trong chng trnh SCL SCL trang b 5 hm Timer: S_PULSE S_PEXT S_ODT S_ODTS S_OFFDT Hm xung Hm xung m rng Hm thi gian tr On Hm thi gian tr On m rng Hm thi gian tr OFF

6.1.1 Cc Cch Gi Hm Thi Gian


C 2 cch gi hm thi gian l dng tnh v dng ng. dng tnh ta gn tiimer l c nh dng ng ta gn s hiu timer l mt Bin s Trong vic gi hm, bn c th a vo mt gi tr tuyt i ( v d: T_NO:=T10) ca d liu thi gian nh mt thng s ca hm nh thi. Gi tr c th di khng di hn gi tr thi gian chy.

Nhm I T04

Trang 65

Tm hiu ngn ng SCL-S7-300

Thay v thng s c nh bn c th ch r mt bin hoc hng s ca gi tr INT. S tin ch ca cch ny l vic gi hm c th ng bi vic gn mt bin hoc mt hng vi mt s khc nhau trong mi ln gi. V d cch gi tnh v cch gi ng: Cch gi Tnh ( c nh)
S_ODT (T_NO:=T10, S:=TRUE, TV:=T#1s, R:=FALSE, BI:=biVal, Q:=actFlag); Cch gi ng ( s hiu Timer l mt bin l cc phn t trong mng) FUNCTION_BLOCK TIME VAR_INPUT MY_TIMER: ARRAY [1..4] of STRUCT T_NO: INT; TV : WORD; END_STRUCT; . . END_VAR . . FOR I:= 1 TO 4 DO S_ODT(T_NO:=MY_TIMER[I].T_NO, S:=true, TV:= MY_TIMER[I].TV); END_FOR;

6.1.2 Cc Tham S Timer:


Cu trc khai bo chung: Time_BCD:= S_xxxxx ( T_NO S TV R Q BI := Timer_address, := Start_input, := Timer_duration, := Reset, := Timer_status, := Binary_time);

Nhm I T04

Trang 66

Tm hiu ngn ng SCL-S7-300

Bng tng hp: Tham s T_NO S TV R Gi tr hm Q BI Khai bo INPUT INPUT INPUT INPUT OUTPUT OUTPUT OUTPUT Kiu D Liu TIMER BOOL S5TIME BOOL S5TIME BOOL WORD Gii thch a ch timer Khi ng timer Gi tr timer Reset timer Ngun thi gian dng m BCD Trng thi ng ra Ngun thi gian dng m nh phn

Khi cc gi tr thng s c cha chung, th khng cn phi xc nh nhng gi tr trong mt tnh hung nht nh. Cc quy tc sau nn c ch khi gn mt thng s. Thng s xc nh thi gian T_NO phi c cung cp khi hm c gi. Thay cho thi gian c nh (v d, T10), bn c th xc nh bin INT huc thng s g vo ca ca d liu thi gian trong chng trnh gi.

c hai Thng s PV ( initialization value ) v s (set) c th c b qua Gi tr cui cng trong nh dng S5TIME lun lun l gi tr hm.

6.1.3 Cch Dng Hm Timer: 6.1.3.1. S_PULSE


Thi gian ln nht cho ng vo cn li set ln 1 ging nh gi tr thi gian chng trnh. Nu trong qu trnh chy tn hiu trng thi 0 ti ng vo, th timer s c t v 0. N c ngha l mt kt thc sm ca thi gian chy. Bng di cho thy s hot ng ca hm thi gian. Hot ng Gii thch Khi ng Xung kch hot khi ng thi gian. Khi trng thi ca tn hiu ng vo (S) thay timer i t 0 ln 1. timer hot ng, tn hiu thay i lun lun c yu cu nh thi Thi gian chy c dng t ng vo TV cho n khi thi gian ca chng gian chy trnh kt thc v ng vo S=1 Hu b thi Nu ng vo S thay i t 1 n 0 trc khi timer kt thc, timer s b dng gian chy Reset Thi gian c reset khi ng vo reset thay i t 0 ln 1. Khi timer ang chy vi s thay i ny, c vic c thi gian v thi gian t u b reset v 0.trng thi tn hiu 1 ti ng vo R khng c tc ng nu timer khng chy trng thi tn Ch cn thi gian ang chy, th mt trng thi tn hiu 1 ti ng ra Q to ra kt hiu ng ra qu l 1. nu timer b hu b th s yu cu trng thi thn hiu tn hiu ng ra l 0 c trng c thi gian hin thi ca timer c th c yu cu ti ng ra BI v s dng thi hin gi tr hm S_PULSE thi ng ra ca timer
Nhm I T04 Trang 67

Tm hiu ngn ng SCL-S7-300

6.1.3.2. S_PEXT
Tn hiu ng ra vn cn li trng thi 1 cho chng trnh timer (t) bt chp ng vo cn gi tr 1 bao lu. s khi ng xung chy reset thi gian m xung ng ra c ko di n. Cch dng hm timer Bng m t cch lm vic ca thi gian xung ko di Hot ng Gii thch Khi ng thi S hot ng thi gian xung ko di (S_PEXT) bt u thi gian khi m gian trng thi tn hiu ti ng vo khi ng (S) tahy i t 0 n 1. kch cho php timer chy, th tn hiu thay i lun phi c yu cu. Khi ng li thi Nu trng thi tn hiu ti ng vo S gian m Khi to thi gian B timer chy vi gi tr ti ng vao TV cho n khi chng trnh time kt chy thc Reset Thi gian c c reset khi ng vo reset thay i gi tr t 0 n 1 Trong khi timer dang chy. Vi s thay i ny, c thi gian dc v thi gian khi to ban u c reset v 0. Trng thi tn hiu 1 ti cng R s khng c nh hng g khi timer khng hot ng Trng thi truy Ch cn timer ang chy m trng thi yu cu ca tn hiu l 1 ti ng ra Q vn to ra kt qu 1 bt cht tn hiu ca ng vo c thi gian truy Gi tr thi gian c th c yu cu ti ng ra BI v dng chc nng vn S_PEXT

6.1.3.3. Timer On_Delay Timer (S_ODT)


Tn hiu ng ra ch thay i t 0 n 1 khi m thi gian d lp trnh kt thc v ng vo vn l 1. iu ny c ngha l ng ra c kch hot trong mt thi gian tr.tn hiu ng vo vn cn hot ng trong mt khong thi gian, thi gian ny ngn hn thi gian chng lp trnh khi cha xut hin ti ng ra.

Phng thc hot ng: bng sau m t cch l vic ca on delay timer
Nhm I T04 Trang 68

Tm hiu ngn ng SCL-S7-300

S hot ng Khi ng timer Dng timer Xc nh thi gian chy Reset

Gii thch B timer tr thi on khi ng mtt khon thi gian c bit khi m trng thi tn hiu ng vo khi ng (s) thay i t 0 sang 1. cho php timer chy, thay i 1 tn hiu lun pah c yu cu Nu m trng thi ca ng vo S thay i t 1 sang 0 khi m timer ang chy. Th n s b stop B timer tip tc chy vi gi tr ti ng ra TV min l trng thi tn hiu ti ng vo S=1 c t Thi gian c c reset khi ng vo reset r thay i gi tr t 0 n 1 Trong khi timer ang chy. Vi s thay i ny, c thi gian dc v thi gian khi to ban u c reset v 0. Thi gian cng b reset khi r=1 c thit lp cho d timer khng chy Truy vn trng thi tn hiu tip theo l 1 ti ng ra q s sinh ra 1 khi m thi gian kt thc m khng c li xy ra v ng vo s vn c thit lp 1. Nu m timer dng li,th trng thi yu cu c l 1 th cng luong lun sinh ra 0 Truy vn trng tn hiu sau khi 1 ng vo cng cho kt qu l 0 khi timer khng chy v trng thi tn hiu ti ng vo s vn l 1 Gi tr thi gian c th c yu cu ti ng ra BI v dng chc nng S_ODT.

Trng thi tn hiu truy vn

c thi gian yu cu

6.1.3.4. Retentive On-Delay Timer (S_ODTS)


Tn hiu ra ch thay i t 0 sang 1 khi thi gian lp trnh kt thc bt chp di ng vo vn cn trng thi 1

Cch hot ng Bng sau cho thy s hot ng ca hm retentive on delay timer Hot ng
Nhm I T04

gii thch
Trang 69

Tm hiu ngn ng SCL-S7-300

Khi ng timer Khi ng li timer Xc nh thi gian chy Reset Trng thi tn hiu truy vn c thi gian yu cu

B timer tr thi ON c nh khi ng mt khong thi gian xc nh khi m trng thi tn hiu ng vo khi ng (S) thay i t 0 sang 1. cho php timer chy, thay i 1 tn hiu lun phi c yu cu Nu m trng thi ca ng vo S thay i t 0 sang 1 khi m timer ang chy. Th n s b khi ng li B timer tip tc chy vi gi tr ti ng vo TV ngay c nu tn hiu ng vo S thay i n 0 trc khi time kt thc Nu ng vo reset R thay i gi tr t 0 n, th timer s c reset bt chp tn hiu ng vo l g Truy vn trng thi tn hiu theo sau 1 ti ng ra Q s to ra kt qu l 1 sau khi thi gian kt thc bt chp tn hiu ca ng vo l g. Gi tr thi gian c th c yu cu ti ng ra BI v dng chc nng S_ODTS.

6.1.3.5. Off-Delay Timer (S_OFFDT)


Tn hiu ng ra ch thay i t 0 n 1 ti ng vo khi ng S, th 1 s l trng thi ca ng ra Q. Nu ng vo thay i t 1 v 0, timer s c kch hot.ng ra ch tr li gi tr 0 sau khi thi gian kt thc. ng ra s c ngng hot ng nh bn di.

Hot ng ca hm: Bng di y gii thch cho vic hot ng ca hm off delay timer Hot ng Gii thch Khi ng timer B timer tr thi OFF khi ng mt khon thi gian xc nh khi m trng thi tn hiu ng vo khi ng (S) thay i t 1 sang 0. cho php timer chy, thay i 1 tn hiu lun pah c yu cu Khi ng li Timer ny o khi ng li khi m ng vo S thay i t 1 sang 0 timer Xc nh thi Thi gian chy c nhp vo t ng vo TV gian chy
Nhm I T04 Trang 70

Tm hiu ngn ng SCL-S7-300

Nu ng vo R thay i t 0 sang 1 khi m timer ang chy th thi gian s c reset Trng thi ng Truy vn trng thi ng vo theo sau l 1 ti ng ra s sinh ra l 1 nu trn vo truy vn thi tn hiu ti ng vo S l 1 c thit lp huc timer ang chy c thi gian Gi tr thi gian c th b yu cu ti ng ra BI v c s dng chc nng truy vn S_OFFDT Reset

6.1.4. V D V Cc Hm Ca Timer FUNCTION_BLOCK STD_TIMER VAR BCD : ARRAY [1..5] OF S5TIME := 5(T#0s); //BCD_value Bin : ARRAY [1..5] OF WORD := 5(16#0000); //Binary_value TV : ARRAY [1..5] OF S5TIME := T#1s, T#2s, T#3s, T#4s, T#5s; //Timer value Start : ARRAY [1..5] OF BOOL := 5(FALSE); //Start timer Reset : ARRAY [1..5] OF BOOL := 5(FALSE); //Reset timer Status : ARRAY [1..5] OF BOOL := 5(FALSE); //Timer status Pulse : TP; //SFB 3 IEC pulse Start1 : BOOL := FALSE; Status1 : BOOL := FALSE; Duration1 : TIME := T#1s; Tvalue1 : TIME := T#0s;

On : TON; //SFB 4 IEC on delay Start2 : BOOL := FALSE; Status2 : BOOL := FALSE; Duration2 : TIME := T#1s; Tvalue2 : TIME := T#0s; Off : TOF; //SFB 5 IEC off delay Start3 : BOOL := FALSE; Status3 : BOOL := FALSE; Duration3 : TIME := T#1s; Tvalue3 : TIME := T#0s; END_VAR BEGIN //************************************************************************

Nhm I T04

Trang 71

Tm hiu ngn ng SCL-S7-300

BCD[1] := S_PULSE( T_NO := "Timer1", S := Start[1], TV := TV[1], R := Reset[1], BI := Bin[1], Q := Status[1]); //Starting a timer function as an extended pulse BCD[2] := S_PEXT( T_NO := "Timer2", S := Start[2], TV := TV[2], R := Reset[2], BI := Bin[2], Q := Status[2]); //Starting a timer function as an on delay BCD[3] := S_ODT( T_NO := "Timer3", S := Start[3], TV := TV[3], R := Reset[3], BI := Bin[3], Q := Status[3]); //Starting a timer function as a latching on delay BCD[4] := S_ODTS( T_NO := "Timer4", S := Start[4], TV := TV[4], R := Reset[4], BI := Bin[4], Q := Status[4]); //Starting a timer function as an on delay BCD[5] := S_OFFDT( T_NO := "Timer5", S := Start[5], TV := TV[5], R := Reset[5], BI := Bin[5], Q := Status[5]); //************************************************************************
Nhm I T04 Trang 72

Tm hiu ngn ng SCL-S7-300

Pulse (

//Start pulse timer

IN := Start1, PT := Duration1); Status1 := Pulse.Q; Tvalue1 := Pulse.ET; On ( //Start on delay IN := Start2, PT := Duration2); Status2 := On.Q; Tvalue2 := On.ET; Off ( //Start off delay IN := Start3, PT := Duration3); Status3 := Off.Q; Tvalue3 := Off.ET; //************************************************************************E ND_FUNCTION_BLOCK 6.2 B m ( Counter)
STEP 7 cung cp mt chui chun cc hm c chc nng m. Bn c th s dng cc b m trong chng trnh SLC m khng cn khai bo chng trc. n gin bn ch cn cung cp cho chng cc thng s yu cu. STEP 7 cung cp 3 hm m nh sau: S_CU S_CD S_CUD m ln m xung m ln xung

6.2.1 Gi Hm m
Hm m c gi ging nh cc hm khc. Hm ny c th c dng trong mt a ch c biu din hay mt dng hm gi tr thch hp vi mt a ch khc. Gi tr ca hm tr v khi gi khi l mt gi tr m (BCD) hoc trong kiu WORD.

Gi gi tr tuyt i hay dng ng


Trong vic gi hm. bn c th a vo mt gi tr tuyt i nh mt s m ( v d C_NO:=C10 ). Nh nhng gi tr c th, tuy nhin khng c di hn gi tr thc. thay th cho s m dngt tuy i, bn cng c th ch r mt bin hay mt hng s dng s nguyn. Ci u im ca cch ny l khi gi hm c th linh ng bi vic gn bin s huc hng s, cc s khc nhau trong mi ln gi. lm c vic g mt hm ng, bn c th nh r mt bin ca mt b m .
Nhm I T04 Trang 73

Tm hiu ngn ng SCL-S7-300

V d: // Gi Hm m c nh: S_CUD (C_NO:=C12, CD:=I0.0, CU:=I0.1, S:=I0.2 & I0.3, PV:=120, R:=FALSE, CV:=binVal, Q:=actFlag); V d gi hm m ng FUNCTION_BLOCK COUNT VAR_INPUT Count: ARRAY [1..4] of STRUCT C_NO: INT; PV : WORD; END_STRUCT; . . END_VAR . . FOR I:= 1 TO 4 DO S_CD(C_NO:=Count[I].C_NO, S:=true, PV:= Count[I].PV); END_FOR; //Example of a dynamic call using a variable of the //COUNTER data type: FUNCTION_BLOCK COUNTER VAR_INPUT MYCounter:COUNTER; END_VAR . . CurrVal:=S_CD (C_NO:=MyCounter,.....);

6.2.2 Thng S Ca B m.
Bng bn di cung cp cho bn ci nhn tng quan v cc thng s ca chc nng m. Tn ng Khai bo dng data M t C_NO INPUT COUNTER S b m; khu vc ny ph thuc vo CPU CD INPUT BOOL Ng vo m xung CD INPUT BOOL Ng vo m ln S INPUT BOOL Ng vo thit lp trc cu b m PV INPUT WORD Gi tr c ci t 0 n 999 m
Nhm I T04 Trang 74

Tm hiu ngn ng SCL-S7-300

R Gi tr hm Q CV

INPUT OUTPUT OUTPUT OUTPUT

BOOL WORD BOOL WORD

Reset M BCD Ng ra trng thi ca b m Ng ra m nh phn

Quy lut: Khi gi tr cc thng s ( v d: CD:=I0.0 ) c cha chung, th khng cn thit phi nh r chng trong mt v tr c nh. Cc quy tc chung nn c xem xt k khi m cung cp gi tr l nhng thng s: Thng s nh dng cho b m C_NO phi c cung cp khi m hm c gi. Thay v cc s c gi tr tuyt i, bn cng c th nh r mt gi tr huc mt hng s vi nh dng INT huc thng s ng vo ca b m trong khi gi n. V d: FUNCTION_BLOCK FB1 VAR CurrVal, binVal: word; actFlag: bool; END_VAR BEGIN CurrVal :=S_CD (C_NO: C10, CD:=TRUE, S:=TRUE, PV:=100, R:=FALSE, CV:=binVal,Q:=actFlag); CurrVal :=S_CU (C_NO: C11, CU:=M0.0, S:=M0.1, PV:=16#110, R:=M0.2, CV:=binVal,Q:=actFlag); CurrVal :=S_CUD(C_NO: C12, CD:=I0.0, CU:=I0.1, S:=I0.2 &I0.3, PV:=120, R:=FALSE, CV:=binVal,Q:=actFlag); CurrVal :=S_CD (C_NO: C10, CD:=FALSE, S:=FALSE, PV:=100, R:=TRUE, CV:=binVal,Q:=actFlag); END_FUNCTION_BLOCK Huc gi tr m ln CU (count up) huc gi tr m xung CD (count down) phi c cung cp. Gi tr PV (initialization value) v S (set) c th c b qua. Gi tr kt qu trong nh dng BCD lun lun l mt gi tr hm.

6.2.3 Ng Vo V nh Gi Gi Tr B m
a vo mt gi tr khi to huc nh gi kt qu ca hm bn yu cu m t bn trong ca gi tr m. Gi tr m l d liu dng Word chng gii hn t 0 n 11 thi chc bao hm c gi tr m dng BCD. gi hn t 12 n 15 thi khng c s dng. Khi bn t gi tr m, gi tr m bn nh dng phi c vit cho b m. Thang gi tr l t 0 n 999. bn c th thay i gi tr m bn trong thang gi tr ny ph hp vi s hot ng ca b m (S_CUD), count up (S_CU) v count down (S_CD). nh dng: hnh bn di m t cu trc ca gi tr b m.

Nhm I T04

Trang 75

Tm hiu ngn ng SCL-S7-300

Ng vo: S nh gi: Dng thp phn nh mt s interger: v d 295, gi nh gi tr ny tng ng nh dng BCD hp l nh dng BCD (ng vo nh mt hng s dng hex) :v d 16#127 Khi kt qa mt hm (dng Word): ng dng BCD. Khi thng s ng ra CV (type Word): trong m binary

6.2.4 M t cc dng b m 6.2.4.1 m Ln Count Up (S_CU)


Vi hm m ln (S_CU) bn ch c th m tng. bng sau m t cch thc hin ca b m. Hot ng Gii thch m ln Gi tr m c tng ln 1 nu tn hiu thay i cur ng vo t 0 ln 1 v gi tr m nh hn 999 t b m Khi trng thi ca tn hiu ti ng vo S thay i t 0 sang 1, b m c t vi gi tr ca ng vo PV. mt tn hiu c thay i lun lun c yu cu t b m Reset B m c reset khi ng vo R=1 c set. Khi reset th gi tr ca b m c t v 0 Yu cu b mtt trng thi tn hiu c yu cu ti ng ra Q c tr v 1 nu gi tr m ln m hn 0. V ng ra tr v 0 nu gi tr bng 0 6.2.4.2 m Xung Count Down (S_CD) Vi b m xung (S_CD), ) bn ch c th m xung. bng sau m t cch thc hin ca b m. Hot ng m xung t b m gii thch Gi tr m c gim xung 1 nu tn hiu thay i ca ng vo t 0 ln 1 v gi tr m ln hn 0 Khi trng thi ca tn hiu ti ng vo S thay i t 0 sang 1, b m c t vi gi tr ca ng vo PV. mt tn hiu c thay i lun lun c yu cu t b
Trang 76

Nhm I T04

Tm hiu ngn ng SCL-S7-300

m Reset B m c reset khi ng vo R=1 c set. Khi reset th gi tr ca b m c t v 0 Yu cu b Mt trng thi tn hiu c yu cu ti ng ra Q c tr v 1 nu gi tr m ln m hn 0. V ng ra tr v 0 nu gi tr bng 0 6.2.4.3

B m Ln Xung Count Up/Down (S_CUD)


Vi b m ln xung (S_CUD) bn c th hot ng c hai trng hp l m ln v xung. nu xung m ln v xung u c kch hot ng thi th. c hai u c hot ng. Gi tr m ghi li v v khng thay i. bng sau m t hot ng ca b m: Hot Gii thch ng m ln Gi tr m c tng ln 1 nu tn hiu thay i cur ng vo t 0 ln 1 v gi tr m nh hn 999 m Gi tr m c gim xung 1 nu tn hiu thay i ca ng vo t 0 ln 1 v gi xung tr m ln hn 0 t b Khi trng thi ca tn hiu ti ng vo S thay i t 0 sang 1, b m c t vi m gi tr ca ng vo PV. mt tn hiu c thay i lun lun c yu cu t b m Reset B m c reset khi ng vo R=1 c set. Khi reset th gi tr ca b m c t v 0 Trng Mt trng thi tn hiu c yu cu ti ng ra Q c tr v 1 nu gi tr m ln thi ng hn 0. V ng ra tr v 0 nu gi tr bng 0 ra

6.2.5

V D V Hm B m
FUNCTION_BLOCK STD_COUNTER TITLE = 'Call examples for counter functions' VAR BCD1, BCD2, BCD3 : WORD; //BCD_value Bin1, Bin2, Bin3 : WORD; //Binary_value PV1, PV2, PV3 : WORD; //Counter value Set1, Set2, Set3 : BOOL; //Set counter Up1, Up2, Up3 : BOOL; //Count up Down1, Down2, Down3 : BOOL; //Count down Reset1, Reset2, Reset3 : BOOL; //Reset counter Status1, Status2, Status3 : BOOL; //Counter status Up : CTU; //SFB 0 IEC up counter Up4 : BOOL := FALSE; Reset4 : BOOL := FALSE; Status4 : BOOL := FALSE; Svalue4 : INT := 0; Zvalue4 : INT := 0;

Nhm I T04

Trang 77

Tm hiu ngn ng SCL-S7-300

Down : CTD; //SFB 1 IEC down counter Down5 : BOOL := FALSE; Set5 : BOOL := FALSE; Status5 : BOOL := FALSE; Svalue5 : INT := 0; Zvalue5 : INT := 0; UpDown : CTUD; //SFB 2 IEC up-down counter Up6 : BOOL := FALSE; Down6 : BOOL := FALSE; Reset6 : BOOL := FALSE; Set6 : BOOL := FALSE; VStatus6 : BOOL := FALSE; ZStatus6 : BOOL := FALSE; Svalue6 : INT := 0; Zvalue6 : INT := 0; END_VAR BEGIN //***************************************************************************** //Up counter BCD1 := S_CU( C_NO := "Counter1", CU := Up1, S := Set1, PV := PV1, R := Reset1, CV := bin1, Q := Status1); //Down counter BCD2 := S_CD( C_NO := "Counter2", CD := Up2, S := Set2, PV := PV2, R := Reset2, CV := bin2, Q := Status2); //Up-down counter BCD3 := S_CUD( C_NO := "Counter3", CU := Up3, CD := Down3,
Nhm I T04 Trang 78

Tm hiu ngn ng SCL-S7-300

S := Set3, PV := PV3, R := Reset3, CV := bin3, Q := Status3); //***************************************************************************** Up ( //Up counter CU := Up4, R := Reset4, PV := Svalue4); Status4 := Up.Q; Zvalue4 := Up.CV; Down ( //Down counter CD := Down5, LOAD := Set5, PV := Svalue5); Status5 := Down.Q; Zvalue5 := Down.CV; UpDown ( //Up-down counter CU := Up6, CD := Down6, R := Reset6, LOAD := Set6, PV := Svalue6); VStatus6 := UpDown.QU; ZStatus6 := UpDown.QD; Zvalue6 := UpDown.CV; //***************************************************************************** END_FUNCTION_BLOCK

6.3 Cc Hm Ton Hc.


6.3.1 Cc hm lng gic: SIN COS TAN : Hm Sin : Hm cos : Hm Tag

Cc Hm ACR ASIN : Hm sin ngc ACOS : Hm Cos Ngc ATAN : Hm tan ngc

Nhm I T04

Trang 79

Tm hiu ngn ng SCL-S7-300

D liu ph hp cho vic tnh ton l INT, DINT huc REAL. Ch rng cc thng s ng vo ca cc php tnh c chuyn i bn trong cc bin thc.

6.3.2. Cc hm Logarit
Kiu d liu tnh ton l INT, DINT or REAL.

EXP EXPD LN LOG

: Hm m hng s : Hm e m thp phn : Loga Ln : Logarit

Kiu d liu tnh ton l INT, DINT or REAL.

6.3.3 Mt s hm khc: ABS : Tr tuyt i SQR : Bnh Phng SQRP : cn bc hai


y l nhng hm cho vic tnh ton cc gi tr tuyt i, bnh phng huc cn bc hai cu mt gi tr. Kiu d liu ANY_NUM i din cho INT, DINT or REAL. Ch rng thng s ng vo INT huc DINT c chuyn i bn trong sang gi tr kiu s thc nu gi tr ca hm l s thc.

FUNCTION_BLOCK STD_MATH VAR real1 : REAL := 0; real2 : REAL := 0; real3 : REAL := 0; real4 : REAL := 0; real5 : REAL := 0; real6 : REAL := 0; real7 : REAL := 0; real8 : REAL := 0; real9 : REAL := 0; real10 : REAL := 0; real11 : REAL := 0; real12 : REAL := 0; real13 : REAL := 0; real14 : REAL := 0; Reactive_power: REAL := 0; Voltage : REAL := 230; Current : REAL := 1.5; PHI : REAL := 0.35; Volume : REAL := 0;
Nhm I T04 Trang 80

Tm hiu ngn ng SCL-S7-300

Radius : REAL := 47; Level : REAL := 120; PI : REAL := 3.141593; a : REAL := 5; b : REAL := 12; c : REAL := 0; END_VAR

BEGIN //*************************************************************************** real2 := ABS(real1); //Absolute value real3 := SQR(real1); //Generate square real4 := SQRT(real1); //Generate square root real5 := SIN(real1); //Sine real6 := COS(real1); //Cosine real7 := TAN(real1); //Tangent real8 := ASIN(real1); //Arc sine real9 := ACOS(real1); //Arc cosine real10 := ATAN(real1); //Arc tangent real11 := EXP(real1); //Exponentiation to base e real12 := EXPD(real1); //Exponentiation to base 10 real13 := LN(real1); //Natural logarithm real14 := LOG(real1); //Decimal logarithm //******************************************************************** Reactive_power:= Voltage * Current * sin(PHI); Volume := SQR(Radius) * Level * PI; c := SQRT(SQR(a) + SQR(b)); //******************************************************************** END_FUNCTION_BLOCK

6.4 Cc Hm Chuyn i:
Nu bn s dng 2 a ch trong mt php ton logic, th bn phi chc chn hai kiu d liu tng thch vi nhau. nu nhng a ch d c kiu d liu khc nhau th mt ci cn phi thay i. s chuyn i kiu d liu c th thc hin c trong chng trnh SCL nh bn di y: Chuyn i d liu kiu n ngm Cc kiu d liu c tp hp li thnh nhiu loi. nu nhng a ch di vo trong lp ging nhau. SCL to ra mt s chuyn i kiu d liu n. chc nng ny c s dng khi trnh dch gom li trong
Nhm I T04 Trang 81

Tm hiu ngn ng SCL-S7-300

chuyn i d liu kiu hin Nu cc a ch khng thuc mt lp ging nhau th bn phi khi ng chc nng chuyn i. c php chuyn i d liu kiu hin SCL cung cp nhiu nhm hm chun trong cc lp bn di - Hm chuyn i dng lp B Hm lm trn v ct bt

6.4.1. Chuyn i dng n


Trong lp d liu nh ngha trong bng , trnh dch to ra mt s chuyn i d liu n th t nh bn bn di. nh dng chung ca 2 a ch lun lun l mt kiu d liu nh nht vi mt gii hn n ph hp vi nh dng ca c hai a ch ca BYTE v INTEGER, v d INTEGER. Nh rng mt s chuyn i kiu d liu trong lp ANY_BIT to ra nhng bt ln l bng 0

Hm chuyn i lp A
Bng di y biu din cc chc nng chuyn i d liu ca nhm A. Tn hm OK Quy tc chuyn i BOOL_TO_BYTE N Filled with leading zeros BOOL_TO_DWORD N Filled with leading zeros BOOL_TO_WORD N Filled with leading zeros BYTE_TO_DWORD N Filled with leading zeros BYTE_TO_WORD N Filled with leading zeros WORD_TO_DWORD N Filled with leading zeros DINT_TO_REAL N chuyn sang s thc tun theo tiu chun IEEE. Gi tr c th thay i ( lin quan n chnh xc cu s thc INT_TO_DINT N Cc k t trng s cao ca gi tr hm c chn vo bng gi tr 16#FFFF cho mt thng s ng vo , huc n c a vo cc s 0. Gi tr vn nh c INT_TO_REAL N chuyn i s thc theo tiu chun IEEE. Gi tr c gi nh c. CHAR_TO_STRING Y chuyn i mt chui ri ghi vo mt k t ging

6.4.2 hm chun chuyn i kiu d liu hin


Bn s tm c cc m t chung ca cu vic gi hm trong calling funtions. Nh rng cc im bn di khi gi hm chuyn i: Thng s ng vo: Mi hm trong khi chuyn i ch c chnh xc mt thng s ng vo vi tn l IN. Khi n c mt hm ch c mt thng s. iu ny khng cn thit lp.
Nhm I T04 Trang 82

Tm hiu ngn ng SCL-S7-300

Gi tr hm Kt qu lun l gi tr hm. Tn ca hm

Cc kiu d liu ca thng s ng vo v ga tr hm c th c nhn dng r dng trong tn hm trong lp A v B.v d, hm BOOL_TO_BYTE, kiu d liu ca thng s ng vo l BOOL v kiu d liu ca gi tr hm BYTE.

hm chuyn i lp B
Bng di cho thy hm chuyn i d liu cu lp B. Cc hm ny phi c xc nh r dng. kt qu ny cng c th khng c nh ngha nu kiu ch n khng rng. Bn c th kim tra cho v tr ny bi vic lin quan vi mt s kim tra gii hn huc bn th c mt h thng to ra s kim tra bi s la chn OK flag c u tin trong n trinh dch. Trong nhng tnh hung ny ni m kt qu c nh ngha, h thng set c OK FALSE. Bng chuyn i lp B ( part 1) Tn hm Quy tc chuyn i OOK BYTE_TO_BOOL Copy bt bn pha phi nht NN BYTE_TO_CHAR Copy chui bit NN CHAR_TO_BYTE Copy chui bit NN CHAR_TO_INT chui bit trong thng s ng vo c a vo trong byte trong NN s thpca gi tr hm. Cc byte trng s cao c gn bng cc s 0 DATE_TO_DINT Copy chui bit YY DINT_TO_DATE Coppy chui bit N DINT_TO_DWORD Coppy chui bit YY DINT_TO_INT Coppy bit nh du. Gi tr cu thng s ng vo c bin YY dch thnh dng d liu dng INT. nu gi tr thp hn -32768 huc ln hn 32767, bin OK c set FALSE. DINT_TO_TIME Coppy chui bit YN DINT_TO_TOD Coppy chui bit YY DWORD_TO_BOOL Coppy bit trng s thp nht YY DWORD_TO_BYTE Coppy 8 bt trng s thp nht YY DWORD_TO_DINT Coppy chui bit NN DWORD_TO_REAL Coppy chui bit NN DWORD_TO_WORD Coppy 16 bit trong s thp YY INT_TO_CHAR Coppy chui bit YY INT_TO_WORD Coppy chui bit NN REAL_TO_DINT Lm trn theo chun IEEE REAL sang DINT. NN nu gi tr nh hn -2147483648 huc ln hn 2147483647, bin OK s b set v FALSE REAL_TO_DWORD Coppy chui bit YY REAL_TO_INT Lm trn theo chun IEEE REAL sang INT. NN
Nhm I T04 Trang 83

Tm hiu ngn ng SCL-S7-300

nu gi tr nh hn -32768huc ln hn 32767, bin OK s b set v FALSE STRING_TO_CHAR Coppy thng s u ca chui. nu STRING khng c mt di ca 1, th bin OK c set FALSE TIME_TO_DINT Coppy chui bit TOD_TO_DINT Coppy chui bit WORD_TO_BOOL Coppy bit trng s thp nht WORD_TO_BYTE Coppy 8 bt trng s thp nht WORD_TO_INT Coppy chui bit WORD_TO_BLOCK_DB dng bit ca WORD c bin dch nh s ca khi d liu BLOCK_DB_TO_WORD Thng s ca khi d liu c bin dch nh dng bt ca WORD Bng chuyn i lp B ( part 2) Hm BOOL_TO_INT BOOL_TO_DINT BYTE_TO_INT BYTE_TO_DINT WORD_TO_DINT DWORD_TO_INT INT_TO_BOOL INT_TO_BYTE INT_TO_DWORD DINT_TO_BOOL DINT_TO_BYTE DINT_TO_WORD INT_TO_STRING DINT_TO_STRING REAL_TO_STRING STRING_TO_INT STRING_TO_DINT STRING_TO_REAL BCD_TO_INT(x) WORD_BCD_TO_INT(x) BCD_TO_INT(x) DWORD_BCD_TO_INT(x) INT_TO_BCD(x) INT_TO_BCD_WORD(x) DINT_TO_BCD(x) DINT_TO_BCD_DWORD(x)

YY

YY YY NN NN YY YY NN

Ok N N N N N Y Y Y N Y Y Y N N N N N N N N N N Y Y Y Y

Quy tc chuyn i WORD_TO_INT(BOOL_TO_WORD) DWORD_TO_DINT(BOOL_TO_DWORD) WORD_TO_INT (BYTE_TO_WORD) DWORD_TO_INT (BYTE_TO_DWORD) INT_TO_DINT(WORD_TO_INT) DINT_TO_INT(DWORD_TO_DINT) WORD_TO_BOOL(INT_TO_WORD) WORD_TO_BYTE(INT_TO_WORD) WORD_TO_DWORD(INT_TO_WORD) DWORD_TO_BOOL(DINT_TO_DWORD) DWORD_TO_BYTE(DINT_TO_DWORD) DWORD_TO_WORD(DINT_TO_DWORD) Like loadable IEC function FC 16 I_STRING Like loadable IEC function FC 5 DI_STRING Like loadable IEC function FC 30 R_STRING Like loadable IEC function FC 38 I_STRING Like loadable IEC function FC 37 STRING_DI Like loadable IEC function FC 39 STRING_R Gi tr trong tm 999-9 999 999 kiu WORD hoc DWORD

Gi tr trong tm 999-9 999 999 kiu INTD hoc DINT

Nhm I T04

Trang 84

Tm hiu ngn ng SCL-S7-300

6.5 Hm Lm Trn V Ct Bt
Chc nng lm trn v ct bt cc s cng thuc v chc nng chuyn i d liu. bng ny biu din nhng tn,kiu liu ( cho cc thng s ng vo v gi tr hm) v nhim v cu cc hm ny. Tn hm ROUND Kiu thng s u vo REAL Kiu gi tr hm DINT Nhim v Lm trn (hnh thnh mt s DINT) vic tun th DIN EN 61131-3, hm ny lun lm trn gi trj INT k; trong cc WORD khc, 1.5 tr v 2v 2.5 cng tr v 2 s ct ct bt (hnh thnh s DINT)

TRUNC

REAL

DINT

6.6 Cc Hm s hc:
SEL : Hm chn la nh phn MUX : Hm chn la bi s MAX : Hm chn la gia tr ln nht MIN : Hm chn la gi tr nh nht LIMIT : B hn ch Bng m t: Hm SEL Thng s G IN0 IN1 Gi tr hm K IN0 IN1 INn INELSE Gi tr hm IN1 IN2 INn Gi tr hm IN1 IN2 Khai bo INPUT INPUT INPUT RETURN INPUT INPUT INPUT INPUT INPUT RETURN INPUT INPUT INPUT RETURN INPUT INPUT Dng d liu BOOL ANY ANY ANY INT ANY ANY ANY ANY ANY ANY_NUM ANY_NUM ANY_NUM ANY_NUM ANY_NUM ANY_NUM

M t

MUX

MAX

MIN
Nhm I T04

Trang 85

Tm hiu ngn ng SCL-S7-300

LIMIT

Inn Gi tr hm MN IN MX Gi tr hm

INPUT RETURN INPUT INPUT INPUT RETURN

ANY_NUM ANY_NUM ANY_NUM ANY_NUM ANY_NUM ANY_NUM

6.7 Hm x l chui bit:


SHL SHR ROL ROR : Hm dch tri : Hm dch phi : Hm xoay Tri : Hm xoay phi

Mi hm chun v chui bt u c 2 nh dng thng s ng vo l IN v N. kt qu lun lun l gi tr ca hm. bng di lit k cc hm v kiu d liu ca cc thng s ng vo v gi tr hm. gii thch cc thng s ng vo: Thng s ng vo IN: b m bn trong s hot ng ca chui s c hot ng. kiu d liu ca thng s ng vo quyt nh kiu d liu ca gi tr hm. Thng s Ng vo N: s chu k ca m xoay vng ROL v ROR huc s ln v tr uc dch trong trng hp ca SHL v SHR Bng sau th hin kh nng cc hm s l chui Tn hm ROL Ng vo IN Ng N BOOL INT BYTE INT WORD INT DWORD INT BOOL BYTE WORD DWORD BOOL BYTE WORD DWORD INT INT INT INT INT INT INT INT vo kiu Gi tr hm BOOL BYTE WORD DWORD BOOL BYTE WORD DWORD BOOL BYTE WORD DWORD nhim v Gi tr ng IN c c xoay tri bi s ln xc nh cha trong N

ROR

Gi tr ng IN c c xoay phi bi s ln xc nh cha trong N

SHL

Gi tr ng IN c c dch tri vi s ln bng s ng v N khi dch th s 0 chn vo ch b dch

Nhm I T04

Trang 86

Tm hiu ngn ng SCL-S7-300

SHR

BOOL BYTE WORD DWORD

INT INT INT INT

BOOL BYTE WORD DWORD

Gi tr ng IN c c dch phi vi s ln bng s ng v N khi dch th s 0 chn vo ch b dch

V d : MW14:= SHL(IN:=MW12,N:=2); res_dword:= ROR( IN:= in_dword, N:= shift_int);

6.8. Cc Hm X L Chui K T:
LEN Hm LEN tr li di hin hnh ca chui. mt chui rng c di l 0. Hm khng xut li. V d : LEN ( S:= XYZ)

CONCAT Hm CONCAT lin kt 2 bin STRING vo mt STRING. nu kt qa STRING di hn gi tr ti ng ra, kt qu chui c gii hn vi mt di ln nht. ni c th c a ra ti c OK. V d: CONCAT (IN1:= Valve, IN2:= open) LEFT huc RIGHT Hm LEFT v RIGHT (FC20 v FC32) tr li k t u huc cui ca cu mt chui. nu L cao hn di ca chui, th chui hon thin s c tr li. nu L=0, mt chui rng c tr v, nu L l m, mt ti ng ra s l chi rng v c OK s c set v 0 V d LEFT ( IN:= valve , L:=4) MID hm MID (FC26) tr li mt phn ca chui. L l di cu chui. chui ny s c c ra ngoi, P l v tr ca k t u c c ra ngoi. Nu tng ca L v (P-1) di hn di hin c cu chui th mt chui s c tr v khi ng thng s chi dn bi P v ko di n cui ca gi tr ng vo. Trong tt c cc tnh hung khc ( P nm ngoi di, P v/ huc L l mt gi tr 0 hoc nh hn 0), mt chui rng lm cho ng ra v c OK u b set v 0 v d: MID (IN:= Temperature, L:= 2, P:= 3) INSERT Hm INSERT (FC17) chn chui k t ti ti IN2 vo trong chui ti IN1 sau nhn dng thng s bi B. nu P =0, th chui t 2 c chn vo trc chui 1. nu P c di ln hn chui u tin th chui th 2
Nhm I T04 Trang 87

Tm hiu ngn ng SCL-S7-300

c li thm vi chui th nht. nu P < 0 th c mt chui rrng ng ra v c OK =0. c OK=0 khi m kt qu ca chui di hn gi tr xc nh ti ng ra, trong trng hp ny, chui tnh ton c gii hn vi cu hnh di ln nht. V d: INSERT (IN1:= Participant arrived, IN2:=Miller:= 2, P:= 11) DELETE Hm DELETE (FC4) so L k t ti mt chui bt u xc nh t k t xc nh P. nu m L v/huc P bng 0 huc nu m P ln hn di ca chui ng vo, th chui ng vo c tr li. nu tng ca L v P ln hn di gi tr ng vo, chui ny c xo n kt thc. nu L v/ hoc P nh hn 0, ng ra s rng vo c OK c set v 0. V d: DELETE (IN:= Temperature ok, L:= 6, P:= 5) REPLACE Hm REPLACE (FC31) thay th L k t ca chui u (IN1) bt u ti k t xc nh ti P vi chui th 2 (IN2). nu L =0, th chui u tin s c tr v. nu P =0 huc 1, thng s c th ch bt u t gi tr thng s ban u. nu P nm bn ngoi ca chui u, chui th hai c oc ni thm vi chui u. nu L v P l m. mt ng vo v c OK s l 0. c OK cng bng 0 khi m chui kt qu di hn thng s ca ng ra, trong trng hp ny. chui kt qu c gii hn bi cu hnh ln nht. V d: REPLACE ((IN1:= Temperature, IN2:= high L:= 6,P:= 5) FIND Hm FIND (FC11) tr li v tr ca chui th 2 (IN2) gia chui u(IN1). vic tm bt u t phai tri ; ci sy ra u tin ca chui l bo co li. nu chui th 2 khng xut hin trong chui u tin, s 0 c tr v. Hm ny khng xut hin ni. V d FIND (IN1:= Processingstation, IN2:=station)

6.9 Hm So Snh Chui:


Bn c th so snh chui bng cc hm so snh trong trong SCL ==, <>, <,>,<= v >=. EQ_STRNG v NE_STRNG Hm EQ_STRNG v NE_STNG so snh ni dung cu 2 bin trong trong nh dng chui cho cc ng thc huc bt ng thc. V tr li gi tr cho kt qu so snh ca chng trnh so snh. Gi tr tr v c mt trng thi tn hiu 1nu chui cu thng s S1 bng huc khng bng thng s ca S2. Th hm khng xut hin li.

Nhm I T04

Trang 88

Tm hiu ngn ng SCL-S7-300

GE_STRNG and LE_STRNG Hm GE_STRNG v LE_STNG so snh ni dung ca 2 bin trong trong nh dng chui so snh ln hn nh hn huc bng v v li kt qu ca php so snh. Gi tr tr v c mt trng thi tn hiu 1nu chui ca thng s S1 ln hn ( nh hn) huc bng thng s ca S2.thng s c so snh bt u t pha tri s dng m ASCII v d, a ln hn A). Thng s u tin khc vi, quyt nh kt ca chng trinh so snh.nu phn bn tri ca chui di hn c n nht vi chui ngn hn th chui di hn coi nh l ln hn. Hm ny khng xut hin li.

GT_STRNG and LT_STRNG Hm GT_STRNG v LT_STNG so snh gi tr ca 2 bin trong trong nh dng chui so snh ln hn nh hn huc bng v tr li kt qu ca php so snh. Gi tr tr v c mt trng thi tn hiu 1nu chui ca thng s S1 ln hn ( nh hn) huc bng thng s ca S2. thng s c so snh bt u t pha tri s dng m ASCII v d, a ln hn A). Thng s u tin khc vi, quyt nh kt ca chng trinh so snh.nu phn bn tri ca chui di hn c n nhtvi chui ngn hn th chui di hn coi nh l ln hn. Hm ny khng xut hin li.

I_STRNG v STRNG_I

Nhm I T04

Trang 89

Tm hiu ngn ng SCL-S7-300

Hm I_STRING(FC16) v STRNG_I (FC38) chuyn i mt bin trong nh dng INT vo trong chui k t huc mt chui vo trong trong bin INT. chui ny c trnh ra vi k hiu u. Nu s xc lp bin ny ti thng s tr v qu ngn, th khng c s chuyn i v c OK =0

DI_STRNG v STRNG_DI Hm DI_STRNG (FC5) and STRNG_DI (FC37) chuyn i mt bin trong nh dng DINT vo trong chui k t huc mt chui vo trong trong bin DINT. chui ny c trnh ra vi k hiu u. Nu s xc lp bin ny ti thng s tr v qu ngn, th khng c s chuyn i v c OK = 0

R_STRNG and STRNG_R Hm R_STRNG (FC5) and STRNG_R (FC37) chuyn i mt bin trong nh dng REAL vo trong chui k t huc mt chui vo trong trong bin REAL. chui ny c a ra vi 14 v tr. v.nnnnnnnExx nu bin c xc nh ti gi tr tr v l qua ngn huc nu khng c s du chm ng hp l ti ng vo IN, th khng c chuyn i v c OK =0.

Nhm I T04

Trang 90

Tm hiu ngn ng SCL-S7-300

6.10 v d v s l chui
a cng lc nhng dng tin nhn texts //Put message texts together controlled by the process and store //them //////////////////////////////////////////////////////////////// //The block contains the necessary message texts and the last 20 //messages generated //////////////////////////////////////////////////////////////// DATA_BLOCK Messagetexts STRUCT Index : int; textbuffer : array [0..19] of string[34]; HW : array [1..5] of string[16]; //5 different devices statuses : array [1..5] of string[12]; // 5 different statuses END_STRUCT BEGIN Index :=0; HW[1] := Motor ; HW[2] := Valve ; HW[3] := Press ; HW[4] := Weldingstation ; HW[5] := Burner ; Statuses[1] := problem; Statuses[2] := started; Statuses[3] := temperature; Statuses[4] := repaired; Statuses[5] := maintained; END_DATA_BLOCK ////////////////////////////////////////////////////////////////
Nhm I T04 Trang 91

Tm hiu ngn ng SCL-S7-300

//The function puts message texts together and enters them in //the DB message texts. The message texts are stored in a //circulating buffer. The next free index of the text buffer is //also in the DB message texts and is updated by the function. //////////////////////////////////////////////////////////////// FUNCTION Textgenerator : bool VAR_INPUT unit : int; //Index of the device text no : int; // ID no. of the device status : int; value : int; END_VAR VAR_TEMP text : string[34]; i : int; END_VAR //initialization of the temporary variables text := ; Textgenerator := true; Case unit of 1..5 : case status of 1..5 : text := concat( in1 := Messagetexts.HW[unit], in2 := right(l:=2,in:=I_STRNG(no))); text := concat( in1 := text, in2 := Messagetexts.statuses[status]); if value <> 0 then text := concat( in1 := text, in2 := I_STRNG(value)); end_if; else Textgenerator := false; end_case; else Textgenerator := false; end_case; i := Messagetexts.index; Messagetexts.textbuffer[i] := text; Messagetexts.index := (i+1) mod 20; END_FUNCTION //////////////////////////////////////////////////////////////// //The function is called in the cyclic program at an edge change //in %M10.0 and a message is entered once if a parameter //changes. ////////////////////////////////////////////////////////////////
Nhm I T04 Trang 92

Tm hiu ngn ng SCL-S7-300

Organization_block Cycle Var_temp Opsy_ifx : array [0..20] of byte; error: BOOL; End_var; //////////////////////////////////////////////////////////////// //The following call enters the message "Motor 12 started" in //text buffer of DB message texts, with %MW0 supplying a 1, %IW2 //the 12 and %MW2 a 2. *) //////////////////////////////////////////////////////////////// if %M10.0 <> %M10.1 then error := Textgenerator (unit := word_to_int(%MW0), no := word_to_int(%IW2), status := word_to_int(%MW2), value := 0); %M10.1:=M10.0; end_if; end_organization_block

7) Cch gi hm v cc khi hm:


7.1 Gi v chuyn i tham s Gi FCs v FBs d dng c v cp nht chng trnh s dng, hm ca chng trnh c chia thnh nhiu khi nh v c biu din trong khi hm (FBs) v hm (FCs). Bn c th gi FCs v FBs trong khi SCL. Bn c th gi theo cc cch sau: Khi hm v hm c to trong SCL. Khi hm v hm c to trong cc ngn ng STEP 7 (LAD, FBD, STL). Hm h thng (SFCs) v khi hm h thng (SFBs) c th dng trong hot ng h thng ca CPU. Phng php c bn ca chuyn i tham s Khi hm v khi hm c gi, d liu c trao i gia vic gi v khi c gi. Tham s c nh ngha trong giao tip ca khi c gi vi khi lm vic. Chng n thun l ni ct gi chuyn n khi khi c gi. Tham s c chuyn n khi c gi l tham s thc. C php ca chuyn i tham s Tham s c chuyn i phi c xc nh trc trong vic gi trong bng tham s. Tham s i cng vi du ngoc n. Nhiu tham s c tch ring bng du phy.

Nhm I T04

Trang 93

Tm hiu ngn ng SCL-S7-300

Trong v d ca gi hm di y, 1 tham s u vo, 1 tham s vo/ra v 1 tham s ra c xc nh.

Tham s c xc nh trong vic gn gi tr. Vic gn gi tr b nhim 1 gi tr (tham s thc) n tham s c nh ngha trong phn din gii ca khi c gi (tham s chnh).

7.2 Gi khi hm Khi bn gi 1 khi hm, bn c th s dng cng lc khi d liu chia s v vng nh cc b ca khi d liu ang hot ng. Gi 1 FB nh 1 vng cc b khc vi gi nh 1 vng nh chia s trong vic d liu s c cha u. y d liu khng c lu trong DB c bit m trong khi d liu tc thi khi gi FB. C php

Php gi nh 1 chia s tc thi


Nhm I T04 Trang 94

Tm hiu ngn ng SCL-S7-300

Php gi c to nn bi 1 lnh gi bng cch sau: Tn ca khi hm hay khi hn h thng (FB hay SFB). Khi d liu tc thi (DB). Tham s cung cp (tham s FB).

1 php gi hm cho chia s tc thi c th l c lp hay tng trng.

Php gi nh 1 chia s cc b Php gi c to nn bi 1 lnh gi bng cch sau: Tn ca khi cc b. Tham s cung cp (tham s FB).

1 php gi cc b tc thi lun l tng trng. Bn phi khai bo tn tng trng trong khi khai bo ca khi gi hm.

7.2.1 Cung Cp Tham S FB


Khi gi 1 khi hm (nh l chia s hay cc b) bn phi cung cp cc tham s sau: Tham s ng vo. Tham s vo/ra. Tham s ng ra khng cn phi xc nh khi FB c gi. C php ca 1 php gn gi tr cho nh ngha tham s FB
Nhm I T04 Trang 95

Tm hiu ngn ng SCL-S7-300

C php ca nh ngha tham s FB l nh nhau khi gi hm chia s hay cc b tc thi.

Cc qui tc sau c p dng khi cung cp tham s: Php gn c th l bt k lnh no. Loi d liu ca tham s thc v hnh thc phi ph hp. Cc php gn phi c tch ring bng du phy. Php gn ng ra l khng th trong vic gi FB. Gi tr tham s ng ra c cha trong d liu tc thi. T n c th c truy nhp bi tt c FBs. c 1 tham s ng ra, bn phi nh ngha truy nhp trong 1 FB. Ghi nh cc s liu c bit cho tham s ca bt k loi d liu v loi d liu con tr. Kt qu sau khi thc thi khi Sau khi thc thi khi: V d 1 php gi v 1 php gn cho 1 tham s vo v vo/ra biu din nh sau: FB31.DB7 (I_Par:=3, IO_Par:=LENGTH); 7.2.2 Php Tham s thc c chuyn i th khng thay i. Chuyn i v xc nh gi tr ca tham s vo/ra s c cp nht; tham s vo/ra ca 1 loi d liu n gin l 1 ngoi l trong qui tc ny. Tham s ng ra c th c c bng vic gi khi t khi d liu chia s tc thi hay chia s cc b.

Gn Ng Vo (FB)

Php gn ng vo b nhim tham s thc cho tham s hnh thc. FB khng th thay i tham s thc. Php gn cho tham s thc ng vo l ty chn. Nu khng c tham s thc no c xc nh th gi tr ca php gi cui c gi li. Cc tham s thc c th c c cho bn di:

Nhm I T04

Trang 96

Tm hiu ngn ng SCL-S7-300

C php

7.2.3 Php

Gn Vo/Ra (FB)

Php gn vo/ra c dng gn gi tr tham s thc n tham s hnh thc vo/ra. FB c gi c th thay i tham s vo/ra. Gi tr mi ca tham s ly kt qu t vic x l FB c ghi tr li tham s thc. Gi tr ban u b ghi . Nu tham s vo/ra khai bo trong FB c gi, chng phi c cung cp gi tr khi khi c gi ln u tin. Khi n c x l ln tip theo, tham s thc l ty chn. Trong tham s thc ca loi d liu n gin, khng c cp nht gi tr cho tham s thc nu tham s hnh thc khng c cung cp gi tr khi khi c gi. Khi gn gi tr cho tham s thc nh 1 tham s vo/ra c th thay i khi FB ang c thc thi, n phi l 1 bin.

Nhm I T04

Trang 97

Tm hiu ngn ng SCL-S7-300

C php

Ch Qui tc c bit p dng cung cp gi tr cho loi d liu ANY v POINTER. Khi sau khng th dng tham s thc gn cho tham s vo/ra ca loi d liu phc tp: Tham s vo/ra FB Tham s FC

7.2.4 c

Gi Tr Ng Ra (Php Gi FB)

Sau khi khi c gi c thc thi, tham s ng ra c th c c t khi chia s tc thi hay khi chia s cc b dng php gn gi tr. V d RESULT:= DB10.CONTROL; 7.2.5 V

D V Php Gi Nh 1 Chia S Tc Thi

1 v d v 1 khi hm vi vng lp FOR c th thy trong v d di. Cc v d ny cho thy k hiu TEST c khai bo trong bng k hiu FB17. Khi hm Php gi gi FB, bn c th chn 1 trong cc cch sau. N ch ra rng VARIABLE1 c khai bo trong khi ang gi nh 1 bin REAL.

Nhm I T04

Trang 98

Tm hiu ngn ng SCL-S7-300

Kt qu Sau khi khi c thc thi, gi tr c tnh ton cho tham s vo/ra IQ1 th nm trong VARIABLE1. c 1 gi tr ng ra Hai v d di cho thy c 2 cch c gi tr ng ra CONTROL

7.2.6 V

D V Php Gi Nh 1 Cc B Tc Thi

1 khi hm vi 1 vng lp FOR n gin c th c lp trnh nh trong v d php gi nh 1 cc b tc thi cho thy k hiu TEST c khai bo trong bng k hiu FB17. FB ny c th c gi nh bn di, cho thy VARIABLE1 c khai bo trong khi ang gi nh 1 bin REAL. Php gi

c 1 gi tr Tham s ng ta CONTROL c th c c nh sau:

ng ra

Nhm I T04

Trang 99

Tm hiu ngn ng SCL-S7-300

7.3 Gi

Hm

Bn gi 1 hm bng cch xc nh tn hm (FC, SFC) v danh sch tham s. Bn c th xc nh tn hm c tr li gi tr bng cch c lp hay tng trng:

Sau khi gi hm, kt qu ca hm tr li gi tr hay tr li tham s ra v tham s vo/ra (tham s thc). C php

Ch Nu 1 hm c gi trong SCL v gi tr tr li ca n khng c cung cp, iu c th dn n vic thc thi chng trnh sai: C th xut hin 1 hm c lp trnh trong SCL khi gi tr tr li c cung cp nhng tr v cu lnh khng c thc thi. C th xut hin 1 hm c lp trnh trong STL/LAD/FBD, nu hm c lp trnh khng cung cp gi tr tr v hay cu lnh tr v khng c thc thi.

Gi Tr Tr V (FC)
7.3.1 Tri ngc vi khi hm, hm cung cp 1 kt qu c bit nh l kt qu tr v. V l do , hm c c nh du a ch (ngoi tr: hm loi VOID). Hm tnh ton gi tr tr v c cng tn hm v tr v khi khi ang c gi. V th, gi tr thay th hm gi. V d trong php gn gi tr sau, hm DISTANCE c gi v kt qu c gn cho bin LENGTH:
Nhm I T04 Trang 100

Tm hiu ngn ng SCL-S7-300

LENGTH := DISTANCE (X1:= -3, Y1:= 2) ; Gi tr tr v c th c s dng trong phn tip theo ca FC hay FB: Trong php gn gi tr, Trong din gii logic, s hc hay so snh hay Nh 1 tham s cho php gi hm hay khi hm tip theo. Ch Nu hm tr v gi tr ANY, t nht 1 tham s ng vo hay vo/ra phi l loi ANY. Nu c nhiu hn 1 tham s ANY, bn phi cung cp thm tham s thc ca lp cng loi (v d INT, DINT v REAL). Kt qu tr v t ng s thuc loi d liu ln nht trong lp . di ln nht ca loi d liu STRING l 254 k t tr xung.

7.3.2 Tham

s FC

Tri vi khi hm, hm khng cn vng nh lu tr gi tr ca tham s. D liu cc b ch lu tm thi khi hm hot ng. V l do , khi bn gi hm, tt c tham s ng vo, vo/ra v ng ra hnh thc uc nh ngha trong vng khai bo ca hm phi c gn cho tham s thc. C php

Qui tc Qui tc khi Php gn c th l bt k lnh no Loi d liu ca tham s hnh thc v thc phi ph hp. V d 1 php gi vi 1 php gn cho 1 tham s ng vo, ng ra v vo/ra c th xut hin nh v d sau: cung cp tham s

7.3.3 Php

Gn Ng Vo (FC)
Trang 101

Nhm I T04

Tm hiu ngn ng SCL-S7-300

Dng php gn ng vo, tham s ng vo hnh thc ca FC c gi l gn gi tr (tham s thc). FC c th hot ng vi tham s thc ny nhng khng thay i chng. Ngc li trong php gi FB, php gn ny l khng ty chn vi 1 php gi FC. Cc tham s thc sau c th c gn trong php gn ng vo:

C php

Ch Vi tham s ng vo hnh thc ca loi d liu phc tp, tham s vo/ra FB v tham s FC khng cho php l tham s thc. Ghi nh cc s liu c bit ca loi d liu ANY v POINTER.

7.3.4 Php

Gn Ng Ra V Vo/Ra (FC)

Trong php gn ng ra, bn phi xc nh bin ca khi ang gi trong gi tr ng ra c tnh t vic thc thi hm c ghi vo. 1 php gn vo/ra c dng khai bo 1 gi tr thc cho tham s vo/ra.
Nhm I T04 Trang 102

Tm hiu ngn ng SCL-S7-300

Tham s thc trong php gn ng vo v vo/ra phi l bin khi FC ghi gi tr vo tham s. V vy tham s ng vo khng th c gn trong php gn vo/ra (gi tr khng c ghi). Ngha l ch c cc bin m rng c gn trong php gn ng ra v vo/ra.

C php

Ch Cc tham s thc khng c i cng vi tham s ng ra v vo/ra hnh thc: Tham s ng vo FC/FB. Tham s vo/ra FB ca loi d liu phc tp. Tham s vo/ra FC v tham s ng ra ca loi d liu phc tp. Ghi nh cc s liu c bit ca loi d liu ANY v POINTER. di ln nht ca loi d liu STRING l 254 k t tr xung.

7.3.5 V

D V Php Gi Hm

Hm c gi 1 hm DISTANCE tnh ton khong cch gia 2 im (X1,Y1) v (X2,Y2) trong cng 1 mt phng dng h thng cc ca to c th dng cch sau.

Nhm I T04

Trang 103

Tm hiu ngn ng SCL-S7-300

Gi khi V d sau cho nhiu la chn hn cho nhiu cch s dng gi tr hm:

7.4 Tham

S Xc nh Hon Ton

7.4.1 Tham s ng vo EN Mi khi hm v mi hm u c tham s xc nh hon ton EN. EN thuc loi d liu kiu BOOL v c cha trong vng nh khi d liu tm thi. Nu EN l TRUE th khi c thc thi. Ngc li th khng c thc thi. Cung cp gi tr cho tham s EN l ty chn. Tuy nhin nh rng n khng cn khai bo trong vng khai bo ca khi hay hm. Khi EN l tham s ng vo, bn khng th thay th EN trong khi.
Nhm I T04 Trang 104

Tm hiu ngn ng SCL-S7-300

Ch Gi tr tr v ca hm th khng c xc nh nu n khng c gi (EN: FALSE). V d

7.4.2 Tham

S Ng Ra ENO

Mi khi hm v mi hm u c tham s xc nh hon ton ENO. ENO thuc loi d liu kiu BOOL v c cha trong vng nh khi d liu tm thi. Khi khi c thc thi, gi tr hin thi ca c OK th c in vo trong ENO. Ngay sau khi khi c gi, bn c th kim tra gi tr ca ENO xem cc hot ng trong khi chy ng hay c li xy ra khng.

Nhm I T04

Trang 105

Tm hiu ngn ng SCL-S7-300

Phn III: Chng trnh n Giao thng s dng ngn ng SCL M t:

Vng B

n giao thng c 2 ch hot ng l Auto v Manual Trong ch bng tay ngi vn hnh cho cc n v Xanh 2 bn sng ty . Trong ch Auto th thi gian sng cc n nh sau:
Nhm I T04 Trang 106

Xanh B

Tm hiu ngn ng SCL-S7-300

Xanh: 16 giy Vng : 4 giy 20 giy. Gin thi gian:

Xanh A
16s

Vng A
4s

A Xanh B Vng B
20s

Gin Thi Gian


Chng trnh iu khin:
M t chng trnh:

Bn iu khin gm c 4 nt v 4 n bo trng thi: Ban u vo chng trnh c 2 nt chn chc nng l Auto hoc Manual. Nu chn ch no th n tng ng ca ch sng. Sau khi chn ch xong ta nhn nt xc nhn Start th h thng bt u hot ng. Nu nhn stop th h thng s dng li trong bt k thi im no.
Nhm I T04 Trang 107

Tm hiu ngn ng SCL-S7-300

Trong ch t ng: n Xanh sng 16 giy n Vng sng 4 giy n sng 20 giy Trong ch tay: Xanh A V B hoc Xanh B hoc A c thi gian sng do ngi iu chnh. Chng trnh iu khin vit bng ngn ng SCL nh sau:

FUNCTION_BLOCK FB1 VAR_INPUT mytime : TIMER ; set END_VAR VAR_OUTPUT result : BOOL ; END_VAR VAR bcdvalue : S5TIME ; binvalue : WORD ; initialvalue: S5TIME ; END_VAR BEGIN : BOOL;

// khai bao time 1 la 16 s

// gan bien ten timer // bien khoi dong timer

// chuong trinh chinh initialvalue:= T#4S ; // dat thoi gian la 4 giay

bcdvalue := S_ODT ( T_NO := mytime , // so hieu timer S := set , // start timer TV := initialvalue , // Gia tri thoi gian delay = 4s R := false , // ngo reset ta bo qua BI := binvalue , // hien thi thoi gian ma nhi phan Q := M0.1) ; // ngo ra END_FUNCTION_BLOCK
Nhm I T04 Trang 108

Tm hiu ngn ng SCL-S7-300

//-----------------------------------------FUNCTION_BLOCK FB2 VAR_INPUT mytime : TIMER ; set END_VAR VAR_OUTPUT result : BOOL ; END_VAR VAR bcdvalue : S5TIME ; binvalue : WORD ; initialvalue: S5TIME ; END_VAR BEGIN // chuong trinh chinh initialvalue:= T#4S ; bcdvalue := S_ODT ( T_NO := mytime , // so hieu timer S := set , // start timer TV := initialvalue , // Gia tri thoi gian delay = 4s R := false , // ngo reset ta bo qua BI := binvalue , // hien thi thoi gian ma nhi phan Q := M0.2) ; // ngo ra END_FUNCTION_BLOCK //-----------------------------------------FUNCTION_BLOCK FB3 VAR_INPUT mytime : TIMER ; // gan bien ten timer // Khai bao timer 3 la 16 s // dat thoi gian la 4 giay : BOOL; // gan bien ten timer // bien khoi dong timer // Khai bao timer 2 la 4 s

Nhm I T04

Trang 109

Tm hiu ngn ng SCL-S7-300

set END_VAR

: BOOL;

// bien khoi dong timer

VAR_OUTPUT result : BOOL ; END_VAR VAR bcdvalue : S5TIME ; binvalue : WORD ; initialvalue: S5TIME ; END_VAR BEGIN // chuong trinh chinh initialvalue:= T#4S ; bcdvalue := S_ODT ( T_NO := mytime , // so hieu timer S := set , // start timer TV := initialvalue , // Gia tri thoi gian delay = 4s R := false , // ngo reset ta bo qua BI := binvalue , // hien thi thoi gian ma nhi phan Q := M0.3) ; // ngo ra END_FUNCTION_BLOCK //-----------------------------------------FUNCTION_BLOCK FB4 VAR_INPUT mytime : TIMER ; set END_VAR VAR_OUTPUT result : BOOL ; : BOOL; // gan bien ten timer // bien khoi dong timer // Khai bao timer 2 la 4 s // dat thoi gian la 4 giay

Nhm I T04

Trang 110

Tm hiu ngn ng SCL-S7-300

END_VAR VAR bcdvalue : S5TIME ; binvalue : WORD ; initialvalue: S5TIME ; END_VAR BEGIN // chuong trinh chinh initialvalue:= T#4S ; bcdvalue := S_ODT ( T_NO := mytime , // so hieu timer S := set , // start timer TV := initialvalue , // Gia tri thoi gian delay = 4s R := false , // ngo reset ta bo qua BI := binvalue , // hien thi thoi gian ma nhi phan Q := M0.4) ; // ngo ra END_FUNCTION_BLOCK //========================================= ORGANIZATION_BLOCK OB1 // Quy Uoc: Xanh 1 = q5.1 // Quy Uoc: Vng 1 = q5.2 // Quy Uoc: o 1 = q5.3 // Quy Uoc: Xanh 2 = q5.4 // Quy Uoc: Vng 2 = q5.5 // Quy Uoc: o 2 = q5.6 // Quy Uoc: en manual = q4.7 // Quy Uoc: en Auto = q4.6 // Quy Uoc: en Start = q4.4 // Quy Uoc: en Stop = q4.5 BEGIN //--------- Doan chuong trinh chon che do Auto/ Manual -------IF (( i0.7 OR q0.7) AND (NOT i0.6) AND (NOT i0.1))=1 THEN q0.7:=1; ELSE
Nhm I T04 Trang 111

// dat thoi gian la 4 giay

// chuong trinh chinh

Tm hiu ngn ng SCL-S7-300

q0.7:=0; END_IF; IF (( i0.6 OR q0.6) AND (NOT i0.7) AND (NOT i0.1))=1 THEN q0.6:=1; ELSE q0.6:=0; END_IF; //-------------------------IF (( i0.0 OR m4.7 OR q4.4) AND q4.7 AND (NOT i0.1))=1 THEN m4.7:=1; q4.4:=1; ELSE m4.7:=0; q4.4:=0; END_IF; IF (( i0.0 OR m4.6 OR q4.4 ) AND q4.6 AND (NOT i0.1))=1 THEN m4.6:=1; q4.4:=1; ELSE m4.6:=0; q4.4:=0; END_IF; //------- oan chuong trinh chay che do manual ------IF ((i0.5 OR m5.0 OR m5.1 ) AND m4.7 AND ( NOT i0.1))=1 THEN m5.0:=1; m5.1:=1; ELSE m5.0:=0; m5.1:=0; END_IF; //----------------------------------------IF ((i0.4 OR m5.2 OR m5.3 ) AND m4.7 AND ( NOT i0.1))=1 THEN m5.2:=1; m5.3:=1;
Nhm I T04 Trang 112

Tm hiu ngn ng SCL-S7-300

ELSE m5.2:=0; m5.3:=0; END_IF; // ------- chay che do auto --------------//-----------------------------------T1 chay IF (m4.6 AND (NOT m0.4))=1 THEN FB1.DB1(MYTIME:=T1,SET:=1); ELSE FB1.DB1(MYTIME:=T1,SET:=0); END_IF; //-----------------------------------T2 chay IF (m4.6 AND m0.1)=1 THEN FB2.DB2(MYTIME:=T2,SET:=1); ELSE FB2.DB2(MYTIME:=T2,SET:=0); END_IF; //-----------------------------------T3 chay IF (m4.6 AND m0.2)=1 THEN FB3.DB3(MYTIME:=T3,SET:=1); ELSE FB3.DB3(MYTIME:=T3,SET:=0); END_IF; //-----------------------------------T4 chay IF (m4.6 AND m0.3)=1 THEN FB4.DB4(MYTIME:=T4,SET:=1); ELSE FB4.DB4(MYTIME:=T4,SET:=0); END_IF; //----------------------------------IF ((m4.6 AND (NOT m0.1)) OR m5.0 ) =1 THEN q5.1:=1; ELSE q5.1:=0; END_IF; //---------------------------------------------Nhm I T04 Trang 113

Tm hiu ngn ng SCL-S7-300

IF ( m4.6 AND m0.1 AND (NOT m0.2)) = 1 THEN q5.2:= 1; ELSE q5.2:=0; END_IF; //--------------------------------------------IF ((m4.6 AND m0.1 AND m0.2 AND (NOT m0.3)) OR m5.2 ) =1 THEN q5.4:=1; ELSE q5.4:=0; END_IF; IF (m4.6 AND m0.1 AND m0.2 AND m0.3 AND (NOT m0.4))=1 THEN q5.5:=1; // ELSE q5.5:=0; END_IF; q4.5:= (i0.1 OR q4.5) AND (NOT i0.0); // den stop q5.3:= ( q5.4 OR q5.5); // den do A q5.6:= ( q5.1 OR q5.2); // den do B ; END_ORGANIZATION_BLOCK

Qu trnh bin dch chng trnh:

Nhm I T04

Trang 114

Tm hiu ngn ng SCL-S7-300

Sau y l chng trnh dng LAD tng ng: on chng trnh chn ch hot ng

Nhm I T04

Trang 115

Tm hiu ngn ng SCL-S7-300

on chng trnh chy ch Manual:

Chng trnh chnh:

Nhm I T04

Trang 116

Tm hiu ngn ng SCL-S7-300

Nhm I T04

Trang 117

Tm hiu ngn ng SCL-S7-300

Bng m ha :

Nhm I T04

Trang 118

Tm hiu ngn ng SCL-S7-300

Dng chng trnh PLCSim m phng.

Nhm I T04

Trang 119

You might also like