119
 Tìm hiể u ngôn ngữ  SCL-S7-300 Nhóm I – TĐ04 Trang 1 BÁO CÁO CHUYÊN ĐỀ 2: Đề tài: Tìm hiu ngôn ng SCL trong S7-300. Ứ ng dng vi ết chương tr ình điu khin đèn giao thông. Phn 1: Gi ớ i Thiu:  Ngôn ng SCL trong STEP7 ng d ng cho dòng PLC S7-300 c a Siemens là mt ngôn ng l p trình s dng câu lnh để viết. Nó có cu trúc gn ging vớ i ngôn ng dng STL nhưng đượ c phát trin nhiu hơn, gn g i ng vớ i các ngôn ng bc cao như Pascal làm cho ngườ i l p trình d thao tác hơn và thân thin như ngôn ng l p t rình có cu trúc. Ngôn ng SCL da trên nn ca Pascal chính vì vy cách khai báo hay nhng câu l nh gn ging như trong Pascal.  Bài báo cáo nhóm em gm 3 phn. Phn I chúng em xin giớ i thiu v phn cng h S7- 300 và cách cài đặt các thành phn và thông s cho 1 tr m Phn II là phn tìm hiu v ngôn ng SCL. Phn này là phn tìm hiu các thành phn, cu trúc chương tr ình, các câu lnh … trong ngôn ng SCL Phn III chúng em xin trình bày chương tr ình l p trình ng d ng đèn giao thông s dng ngôn ng SCL.

Tim Hieu Ngon Ngu Scl

Embed Size (px)

Citation preview

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-300Khc 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 SCLPhn 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 SCLMt 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 PhNhng 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 chngtrnh

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 mNhm 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 KhiTng 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 voNhm 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 vngNhm 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 raHnh 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 ngunKhi 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 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_programNhm 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 tNhm 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 tTrang 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 TpSCL 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 dVAR 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 dx : 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 dFUNCTION 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 thutNhm I T04 Trang 26

Tm hiu ngn ng SCL-S7-300

Miu t chiu ca ARRAY: V dVAR 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 boNhm 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 dVAR 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 conNhm 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 UDT10TYPE MEASVALUES

Bng c im k thut T nhn dng UDT theo bi bng c im. Hm STRUCTSTRUCT : 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 dngNhm 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 DFUNCTION 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 ANYVAR_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 thngNhm I T04 Trang 33

Tm hiu ngn ng SCL-S7-300

4.1.1 Thit Lp Tn Cho Hng SBn 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 bitHng 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 ;// binaryDW#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 $ $< Controller; // chi trong hexadecimal: MESSAGE1:= $41$4E (*character string AN*);

4.1.3.6 Hng S Dng Ngy ThngMt 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 Phnkhi 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 dVALUE1 : 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 phpNhm I T04 Trang 46

Tm hiu ngn ng SCL-S7-300

V dVALUE :REAL := 20.25;

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

V dVAR // 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 dVAR_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 dSupply1 : 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 nhBin 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 dVAR 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 TmBin 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 phpNhm 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 dVAR_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. KhiNhm 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 dVAR_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 trnhNhm 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 ThiH 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 CaseCu 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 For1 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 weekNhm 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_VARNhm 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 Continue1 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