在S型LC中使用高級(jí)語(yǔ)言編程_第1頁(yè)
在S型LC中使用高級(jí)語(yǔ)言編程_第2頁(yè)
在S型LC中使用高級(jí)語(yǔ)言編程_第3頁(yè)
在S型LC中使用高級(jí)語(yǔ)言編程_第4頁(yè)
在S型LC中使用高級(jí)語(yǔ)言編程_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、在S7300/400型PLC中使用高級(jí)語(yǔ)言編程S7-SCL是一種類(lèi)似于Pasical、Deliphi的高級(jí)編程語(yǔ)言,其符合國(guó)際標(biāo)準(zhǔn) IEC 61131-3,也就是說(shuō)支持該標(biāo)準(zhǔn)的任意廠家的 PLC均可以使用與之相似的語(yǔ)言編 程。這種語(yǔ)言適合于處理復(fù)雜的邏輯和大量的數(shù)學(xué)運(yùn)算,由于其具有高級(jí)語(yǔ)言的編程結(jié)構(gòu),因此和S7的STL語(yǔ)句表編程方式比較起來(lái)有著更加方便的控制方式, 可以這樣說(shuō),只要是必須使用語(yǔ)句表的地方,我們均可以考慮使用SCL,也許STL 在執(zhí)行時(shí)比SCL更加高效,但事實(shí)上也不一定,首先 SCL可以編譯成STL,同時(shí) SCL設(shè)計(jì)時(shí)可以優(yōu)化編程,而STL若運(yùn)用不當(dāng),可能還會(huì)將低效率。當(dāng)然在目前

2、 的這種系列的PLC上,效率對(duì)于我們來(lái)說(shuō)已是次要的,我們更關(guān)心的是編程結(jié)構(gòu)。 就像在PC機(jī)上,舍棄了匯編語(yǔ)言,而主要米用 C/C+等咼級(jí)語(yǔ)言。總體來(lái)說(shuō), SCL適合于編寫(xiě)標(biāo)準(zhǔn)功能塊,由于在維護(hù)中,它和STL一樣,不象Lad 一樣利于維護(hù),因此這些標(biāo)準(zhǔn)功能塊都應(yīng)該有文檔說(shuō)明,以便用戶了解其功能。下面的內(nèi)容主要是參考西門(mén)子的 S7-SCL文檔,對(duì)SCL進(jìn)行了系統(tǒng)的介紹, 最后給出了示例。這里假設(shè)讀者是學(xué)過(guò)S7-300/400編程,并曾經(jīng)學(xué)過(guò)至少一種計(jì)算機(jī)高級(jí)編 程語(yǔ)言。一、軟件的使用1、創(chuàng)建一個(gè)新的S7-SCL Source文件打開(kāi)工程項(xiàng)目d選擇CPU站d選擇S7 Program d選擇Sourc

3、es在右邊窗口的空白處點(diǎn)右鍵選 Insert New Object d點(diǎn)擊SCL Source雙擊創(chuàng)建的SCL Source文件,進(jìn)入SCL編輯界面。2、塊保護(hù)在SCL Source文件的開(kāi)頭添加關(guān)鍵字:KNOW_HOW_PRO,EC打開(kāi)由其創(chuàng)建的 塊時(shí),只能顯示參數(shù),而看不到內(nèi)容。3、主菜單” Insert ”下的” Block Template ”可用于插入如OB,FB等各種塊的結(jié)構(gòu)?!?Control Structure”菜單可插入各種流程控制結(jié)構(gòu),這些都可以簡(jiǎn)化編程。4、在運(yùn)行程序之前,首先必須對(duì)它進(jìn)行編譯,可以編譯整個(gè)Source文件或者某 個(gè)被選擇的塊,通過(guò)選擇菜單 File Co

4、mpile Selected Blocks 。也可以把幾 個(gè)Source文件一起進(jìn)行編譯,其方法是創(chuàng)建一個(gè) S7-SCL compilation control file.在該文件中依次輸入需要編譯的 SCL Source文件名,然后執(zhí)行編譯即可。二、語(yǔ)法規(guī)則1 編寫(xiě)SCL Source文件的一般規(guī)則 FB, FC, OB, DB以及用戶定義的UDT它們使用的任意數(shù)字號(hào)均可以在 SCL Source中編輯。每種塊類(lèi)型都有它自己的結(jié)構(gòu)。每段落或者每個(gè)變量的聲明以符號(hào)”;”標(biāo)志結(jié)束。不區(qū)分大小寫(xiě)。注釋僅存在于程序文檔中,它不影響程序運(yùn)行。當(dāng)一個(gè)功能塊被調(diào)用時(shí),其背景數(shù)據(jù)塊被自動(dòng)創(chuàng)建,因此它們不需要

5、被編輯。 DB0有特定用途,因此在程序中不能創(chuàng)建 DB0.2、編寫(xiě)塊的先后次序被調(diào)用的塊必須位于調(diào)用塊之前。 UDT的定義必須位于其被使用的位置之前。共享數(shù)據(jù)塊必須位于那些使用它的所有塊之前。三、數(shù)據(jù)類(lèi)型1、數(shù)據(jù)類(lèi)型預(yù)覽I、基本數(shù)據(jù)類(lèi)型組數(shù)據(jù)類(lèi)型儻數(shù)辭釋Bit Data TypesBOOL BYTEWORD DWORD1616P依次位、8位、1b僅、32檢Character TypesCHARASCIi 宇符Nurieric TypesINTDINTREAL163232數(shù)值糞型,依次為16位、32位、衛(wèi)位Time TypesTIME(T)DATE(D)TIME OF DAY (TQD) SST

6、lbtE(S5T)32163216S7中的預(yù)設(shè)時(shí)間數(shù)聊姍翹DATE AND TIME (OT)定畑齟8個(gè)宇和 肝借和期樹(shù)間,1S7SCL中的儺沁STRING最多可存儲(chǔ)跖的字符餉字符串ARRAY肝獻(xiàn)各種繩元素般蛆smurj白呱義結(jié)構(gòu)變童數(shù)嗾型|位數(shù)解程TIMER2鐘肝聲就定時(shí)器作為麺COUNTER2鉀肝剛把計(jì)數(shù)器作為總BLOCS|湃f(wàn)fiFCs, F0&. DBS 以及 SDBsft為參數(shù)POINTER6字節(jié)把一個(gè)內(nèi)再區(qū)域作為蓼數(shù)ANY10?節(jié)把任意姍類(lèi)型的地址作為參數(shù)2、補(bǔ)充Bytes|存儲(chǔ)內(nèi)容范閨0Year1990-20891Month01-122Davim3Hnin0-23lPMinuie

7、0-59506961 2 MSD (mostskmificantdecade) of ms五997 (4 MSB)LSD flEastsignifi加nt血口de) of ms497 (4 LS0)星陰1-7、DATE_AND_TIME Data Type其值的范圍:DT#1990-01-01-0:0:0.0DT#2089-12-31-23:59:59.999該類(lèi)型以BCD碼形式存儲(chǔ)。例如 20/Oct./1995 12:20:30 and 10 milliseconds顯示如下:DATE_AND_TIME#1995-10-20-12:20:30.10DT#1995-10-20-12:20:3

8、0.10 STRING e.g.聲明VARTextl : String 123; /該字符串的最大容量為123個(gè)字符Text2 : Stri ng; /該字符串的默認(rèn)容量為254個(gè)字符END_VAR初始化:x : STRING7:=Address; / 在使用STRING前,必須對(duì)它賦值FUNCTION Test : STRING45VAR_TEMPx : STRING45;END_VARx := a;x := con cat (in1 := x, in2 := x);Test := x; / 返回值END_FUNCTION數(shù)組類(lèi)型e.g.VARCONTROLLER1 : /聲明3行、4列的二

9、位整數(shù)數(shù)組,并對(duì)其初始化ARRAY1.3,1.4 OF INT:= -54, 736, -83, 77,-1289, 10362, 385, 2,60, -37, -7, 103 ;CONTROLLER2 : ARRAY1.1O OF REAL ; / 聲明 10 個(gè)數(shù)的一維實(shí)數(shù)數(shù)組END_VAR注:數(shù)組的最大維數(shù)為6維,數(shù)組的索引范圍為-32768 - 32767 之間的任意 整數(shù)。所有的基本數(shù)據(jù)類(lèi)型均可用于數(shù)組。數(shù)組可以使用變量進(jìn)行索引,例如:arrn ame_1 i := arrn ame_2 j ;STRUC 類(lèi)型e.g.聲明一個(gè)結(jié)構(gòu)MOTO中包含另一個(gè)結(jié)構(gòu)DATA對(duì)結(jié)構(gòu)聲明時(shí),可以初

10、始化 元素,也可以在使用之前再初始化。VARMOTOR : STRUCTDATA:STRUCTLOADCURR:REAL ;VOLTAGE : INT := 5 ;END_STRUCT;END_STRUCT;END_VAR結(jié)構(gòu)以WOR的形式結(jié)尾,否則系統(tǒng)自動(dòng)把丟失的字節(jié)補(bǔ)到結(jié)構(gòu)中去。用戶定義類(lèi)型UDT (使用關(guān)鍵字TYPEPOINTE類(lèi)型e.g./定義功能塊FC100FUNCTION FC100 : VOID /VOID表明該功能不返回值VAR_IN_OUT /定義FC100的輸入輸出型參數(shù)N_out : INT;out : POINTER; / 定義POINTERS數(shù)據(jù)類(lèi)型,參數(shù)均為臨時(shí)變量

11、END_VARVAR_TEMP /定義臨時(shí)變量 ret : INT;END_VARBEGIN /進(jìn)入函數(shù)主體/ .ret := SFC79(N := N_out, SA := out);END_FUNCTION/定義功能塊FB100FUNCTION_BLOCK FB100VAR /定義靜態(tài)變量,即離開(kāi)塊后仍舊保存狀態(tài)的變量ii : INT;aa : ARRAY1.1000 OF REAL;END_VARBEGIN/ .FC100(N_out := ii, out :=:aa); II調(diào)用FC10Q使用指針的方式傳遞整個(gè)數(shù)組/ .END_FUNCTION_BLOCKANY類(lèi)型e.g.VAR_IN

12、PUT 輸入型變量 iANY : ANY; / 定義為 ANY END_VARVAR_TEMP pANY : ANY; / 定義為 ANYEND VARCASE ii OF /CASE 分支語(yǔ)句1:pANY := MW4; / 將 MW4勺地址賦給 pANY/ of MW43.5: / 等于3,4,5的情況下pANY:= alNTii; / pANY contains the address/ of the ii th/ element of the aINT field;100:pANY := iANY; / pANY con tai ns the value/ of the iANY in

13、 put variableELSEpANY := NIL; / pANY contains the value/ of the NIL poi nterEND_CASE;SFCxxx(IN := pANY);四、局部變量和參數(shù)的聲明1、變量靜態(tài)變量:用于保持塊的數(shù)據(jù),該數(shù)據(jù)存在背景數(shù)據(jù)塊中臨時(shí)變量:僅在塊運(yùn)行過(guò)程中存在。若多個(gè)變量的數(shù)據(jù)類(lèi)型一致,可用如下方式:VALUE2, VALUE3,VALUE4,.: INT;聲明時(shí)可以初始化:VALUE :REAL := 20.25;數(shù)組的初始化有兩種方式:CONTROLLER1 : ARRAY 1.2, 1.2 OF INT := -54, 736,

14、 -83, 77;當(dāng)把相鄰的數(shù)組元素賦相同的值時(shí),例如,把A32到A311的值設(shè)為100.0 :A3 : ARRAY1.12 OF REAL := 0.0, 10(100.0), 1.0;2、塊參數(shù)輸入?yún)?shù):用于接收當(dāng)塊被調(diào)用時(shí)的輸入值,他們是只讀的。輸出參數(shù):傳輸當(dāng)前值到這個(gè)調(diào)用塊,在被調(diào)用塊中應(yīng)該對(duì)該參數(shù)賦值輸入/輸出參數(shù):用于接收當(dāng)塊被調(diào)用時(shí)的輸入值,并可以把結(jié)果返回到調(diào)用塊。3、使用多重背景聲明方式如下:Supply1 : FB10; / Supply1 為 FB10的背景 DBSupply2,Supply3,Supply4 : FB100; / 為 FB100聲明多個(gè)背景 DBMot

15、or1 : Motor ; / Motor 為某個(gè) FB 的符號(hào)名4、變量的聲明變量類(lèi)型聲明方式FBOB靜態(tài)變壁VAREND W?Vi if llEND VAR7JV1綸入?yún)?shù)VAR_INPUTEND WH44輪出播數(shù)VAR_OUTFUTEND VARV4輸入略出夢(mèng)數(shù)vaRjn g :Tl! END_VAR47五、常量S7-SCL常量分位常量、數(shù)字常量、字符常量、時(shí)間常量,使用CONST END_CONST 聲明。e.g.CONSTNumber := 10 ; /整數(shù)常量TIMEOFDAY1 := TIME#1D_1H_10M_22S_2MS ;時(shí)間常量NAME := SIEMENS ; /

16、字符串常量NUMBER2 := 2 * 5 + 10 * 4 ;NUMBER3 := 3 + NUMBER2 ;END_CONST1、位常量Bool#false 位的值為 TRUE或者 FALSE8#177777 8 進(jìn)制DW#16#0000_0000 1進(jìn)制2、整數(shù)常量,它有多種表達(dá)方式15 10進(jìn)制值為152#1111 2進(jìn)制值為1516#F 16進(jìn)制值為15Value_2:=2#0101; / 2進(jìn)制值為 5Value_3:=8#17; / 10進(jìn)制值為 14Value_4:=16#F; / 16進(jìn)制值為 15Value_5:=INT#16#3f_ff / 16進(jìn)制值,類(lèi)型被定義3、Re

17、al常量NUM4:= -3.4 ;NUM5:= 4e2 ;NUM6:= real#1.5;4、字符常量(單個(gè)字符)Charac_1 := B;Charac_2 := char#43;Charac_3 := char#B; / 字符BCHARACTER := $41 ; / 字符A5、字符串常量NAME:= SIEMENS;6日期常量TIMEVARIABLE1:= DATE#1995-11-11 ;TIMEVARIABLE2:= D#1995-05-05 ;7、時(shí)間常量Interval1:= TIME#10.5S ;In terval2:= T#3D_2S_3MS ;8、Time-of-Day

18、常量TIMEOFDAY1:= TIME_OF_DAY#12:12:12.2 ;TIMEOFDAY2:= TOD#11:11:11 ;9、Date and Time 常量TIMEOFDAY1:= DATE_AND_TIME#1995-01-01-12:12:12.2 ;TIMEOFDAY2:= DT#1995-02-02-11:11:11;六、CPU的內(nèi)存區(qū)域1、可以直接操作字節(jié)、字、位STATUSBYTE :=IB10;STATUS_3 :=I1.1;MEASVAL :=IW20;2、可以通過(guò)索引對(duì)位、字、字節(jié)操作,該索引可以是變量MEASVAL_1 :=IWCOUNTER; /若 C0UNT

19、ER=5則 MEASVALJ6值為 IW5OUTLABEL :=IBYTENO, BITNO; / 若 BYTEN0=3BITN0=1 貝U OUTLABEL=I3.1注:當(dāng)獲取的數(shù)據(jù)類(lèi)型是 BYTE, WORD or DWOR時(shí)”使用一個(gè)索引參數(shù),當(dāng)獲 取的數(shù)據(jù)類(lèi)型為BOOL寸,必須使用兩個(gè)索引參數(shù),分別指定字節(jié)號(hào)和位號(hào)。3、對(duì)數(shù)據(jù)塊的操作STATUS 5:= DB11.DX1JA;Variable M matching typeSize preFixCB kJer.tiferSTATUSBYTE :=DB101.DB10; / 字節(jié)操作STATUS_2:= DB12.DXWNO, BITN

20、O; / 位操作,支持索引STATUSBYTE :=Status_data.DWCOUNTER; / 字操作,支持索弓 IMEASVAL :=Measdata.DW20;STATUS_1 :=WORD_TO_BLOCK_DB(INDEX).DW1O;注:和Lad及STL語(yǔ)言比較起來(lái),SCL在對(duì)數(shù)據(jù)塊中的字、字節(jié)等操作時(shí),少一個(gè)”B字符七、表達(dá)式、操作符和地址1、操作符預(yù)覽莢別功能符號(hào)優(yōu)先級(jí)賦值操作符賦13-=1n算術(shù)蘇岳Poweri加+3黴3 *4/4兩數(shù)相除取余數(shù)MOD4兩數(shù)相除視商DIV45*5比較指令小于=尊于=7不等于7邏輯操作符謖輯非NOT3邏輯與AND or &3XORgOR10參

21、數(shù)參數(shù)01八、控制流程1、IF選擇語(yǔ)句IF con dition THENELSIF con diti on THEN / ELSIF語(yǔ)句可以不使用,或者使用一個(gè)或者多個(gè)ELSE / ELSE語(yǔ)句可以不使用END_IF ;e.g.IF ARRAYINDEX = INDEX THENCONTINUE ;END_IF ;2、CASE選擇語(yǔ)句CASE in tVaria nt OF1 : DISPLAYS OVEN_TEMP;2 : DISPLAY:= MOTOR_SPEED;3.10: DISPLAY:= INT_TO_DINT (TW); /可以指定連續(xù)的值QW4:= 16#0004;11,13

22、,19: DISPLAYS 99; /也可以把一系列值列出來(lái)QW4:= 16#0005;ELSE: / ELSE:可以省略DISPLAY:= 0;TW_ERROR:= 1;END_CASE;3、FOF循環(huán)語(yǔ)句FUNCTION_BLOCK FOR_EXAVARINDEX: INT ;IDWORD: ARRAY 1.50 OF STRING;END_VARBEGINFOR INDEX := 1 TO 50 BY 2 DO / 從 1 至U 50,增量為 2IF IDWORD INDEX = KEY THENEXIT; /退出循環(huán)END_IF;END_FOR;END_FUNCTION_BLOCK注:

23、一些關(guān)鍵字EXIT退出其所在的循環(huán)。CONTINUED止當(dāng)前循環(huán)的執(zhí)行,控制程序進(jìn)入下一循環(huán)。RETURN1出當(dāng)前正在被執(zhí)行的塊。4、WHILE循環(huán)WHILE INDEX = 50 AND IDWORDINDEX KEY DO 兩個(gè)條件均滿足才執(zhí)行 循環(huán)INDEX := INDEX + 2;END_WHILE ;5、REPEA循環(huán)REPEATINDEX := INDEX + 2 ; / 該語(yǔ)句與 WHILE的區(qū)別是UNTIL之前的語(yǔ)句總是先執(zhí) 行一次UNTIL INDEX 50 OR IDWORDINDEX = KEY / 這兩條件之一若滿足,則退出 循環(huán)END_REPEAT;6 GOTOft

24、轉(zhuǎn)語(yǔ)句IF A B THENGOTO LAB1 ; /若條件滿足,則跳到LAB1處ELSIF A C THENGOTO LAB2 ;END_IF ;/LAB1: INDEX := 1 ;GOTO LAB3 ;LAB2: INDEX := 2 ;7、調(diào)用塊絕對(duì)地址調(diào)用,例如:FB10.DB20(X1:=5,X2:=78,);/參數(shù)可以任意排列FC31 (X1:=5, Q1:=Checksum);符號(hào)地址調(diào)用,例如:DRIVE.ON (X1:=5,X2:=78,);DISTANCE (X1:=5, Q仁:Checksum);每一個(gè)功能塊有一個(gè)輸入隱藏參數(shù) EN,和一個(gè)輸出隱藏參數(shù)ENO這兩個(gè)參數(shù)是

25、 系統(tǒng)設(shè)定的,均為BOOL型,不需要聲明,但在編程中可以使用,例如:/若MY_ENABL為FALSE則FC85不會(huì)被執(zhí)行,只有為T(mén)RUE才會(huì)執(zhí)行Result := FC85(EN:= MY_ENABLE, PAR_1:= 27);FB30.DB30 (Parameter supply);IF ENO THEN /若FB30的調(diào)用沒(méi)有問(wèn)題,貝U/ELSE/END_IF;九、定時(shí)器和計(jì)數(shù)器1、計(jì)數(shù)器s_cu增計(jì)數(shù)器S_CD減計(jì)數(shù)器S_CUD增/減計(jì)數(shù)器e.g.S_CUD (C_N=C12, /絕對(duì)調(diào)用定時(shí)器,指定計(jì)數(shù)器號(hào)CD:=IO.O,CU:=IO.1,S:=I0.2 & 10.3, /置位條件

26、PV:=120, /設(shè)定計(jì)數(shù)器值R:=FALSE, /復(fù)位條件CV:=bi nV al, / 輸出參數(shù),二進(jìn)制計(jì)數(shù)值Q:=actFlag); / 輸出參數(shù),計(jì)數(shù)器的狀態(tài)FUNCTION_BLOCK COUNTVAR_INPUTCou nt: ARRAY 1.4 of STRUCTC_N INT;PV : WORD;END_STRUCT;END_VARFOR I:= 1 TO 4 DO / 動(dòng)態(tài)調(diào)用計(jì)數(shù)器S_CD(C_N=Cou ntl.C_NO, S:=true, PV:= Cou ntl.PV);END_FOR;FUNCTION_BLOCK COUNTERVAR_INPUTMYCou nte

27、r:COUNTER;END_VARCurrVal:=S_CD(C_N=MyCounter,.);/動(dòng)態(tài)調(diào)用計(jì)數(shù)器2、定時(shí)器定時(shí)器有 5 種,依次為:S_PULSE S_PEXT S_ODT S_ODTS S_OFFDTVARCurrTime : S5time;BiVal : word;ActFlag : bool;END_VAR/在調(diào)用定時(shí)器時(shí),部分參數(shù)可以省略,但左邊的賦值變量一定不能省略。CurrTime:=S_ODT(T_N=T1O, /絕對(duì)調(diào)用,制定定時(shí)器號(hào)S:=TRUE, /置位條件TV:=T#1s, /設(shè)定定時(shí)器值R:=FALSE, /復(fù)位條件BI:=biVal,Q:=actFla

28、g);FUNCTION_BLOCK TIMEVAR_INPUTMY_TIMER: ARRAY 1.4 of STRUCTT_N INT;TV : WORD;END_STRUCT;END_VARFOR I:= 1 TO 4 DOCurrTime:= S_ODT(T_N=MY_TIMERI.T_NO, S:=true,MY_TIMERI.TV);END_FOR;FUNCTION_BLOCK TIMERVAR_INPUTmytimer:TIMER;END_VARCurrTime:=S_ODT(T_N=mytimer,.);十、S7-SCL中的標(biāo)準(zhǔn)功能1、數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù)隱式轉(zhuǎn)換,其依照的順序?yàn)椋築O

29、OL BYTE WORD DWORDINT DINT REALe.g.VARPID_CTRLLER_1 : BYTE ;PID_CTRLLER_2 : WORD ;END_VARIF (PID_CTRLLER_1 PID_CTRLLER_2) THEN . / 此時(shí) PID_CTRLLER_被轉(zhuǎn) 換成WORD當(dāng)然,也可以使用以下功能顯示的轉(zhuǎn)換:BOOL_TO_BYT、BOOL_TO_DWORD3OOL_TO_WORD3YTE_TO_DWORDBYTE_TO_WORDCHAR_TO_STRING DINT_TO_REAL INT_TO_DINT、 INT_TO_REAL WORD_TO_DWOR

30、DBYTE_TO_BOQL Copies the least sig nifica nt bitDINT_TO_TOD Copies the bit string YDINT_TO_BOOL DWORD_TO_BOOL(DINT_TO_DWORD(x) YDINT_TO_BYTE DWORD_TO_BYTE(DINT_TO_DWORD(x) YDINT_TO_STRING DI_STRNG YDINT_TO_BCD(x)DINT_TO_BCD_DWORD(x)2、ROUN和 TRUNCROUND()將 REAL數(shù)四舍五入取整返回 DINTTRUNC():舍棄REAL數(shù)的小數(shù)部分取整返回DINT

31、3、一般數(shù)學(xué)函數(shù)例子:RESULT := ABS (-5) ; 5RESULT := SQRT (81.0); 9RESULT := SQR (23); 11529RESULT := EXP (4.1); /60.340 .RESULT := EXPD (3); /1_000PI := 3. 141 592 ;RESULT := SIN (PI / 6) ; /0.5&移位函數(shù)ROL ROR SHL SHR例子:RESULT := ROL (IN:=BYTE#2#1101_0011, N:=5); 2#0111_1010 ,左移 5 位, 移出的填充到右邊空位RESULT := ROR (IN

32、:=BYTE#2#1101_0011, N:=2); /2#1111_0100 ,右移 2 位, 移出的填充到左邊空位RESULT := SHL (IN:=BYTE#2#1101_0011, N:=3); /2#1001_1000 ,左移 3 位, 空余部分用0填充RESULT := SHR (IN:=BYTE#2#1101_0011, N:=2); /2#0011_0100 ,右移 2 位, 空余部分用0填充7、字符串函數(shù)由于PLC編程中字符、字符串的使用比較少,這里不詳敘,感興趣的可以參考西 門(mén)子文檔中的 14.4 Fun cti ons for Process ing Stri ngs(

33、 P293-P303)8、選值函數(shù)最大值函數(shù)/用于獲取這些參數(shù)中的最大值,參數(shù)最多可以有32個(gè),其參數(shù)類(lèi)型除了 S5TIME 以外,任意其他數(shù)子類(lèi)型均可以,但所有的參數(shù)數(shù)據(jù)類(lèi)型必須一致。A:=MAX(IN1:=a, IN2:=b, IN3:=c, IN4:=d.);最小值函數(shù)/用于獲取這些參數(shù)中的最小值,參數(shù)最多可以有32個(gè),其參數(shù)類(lèi)型除了 S5TIME 以外,任意其他數(shù)子類(lèi)型均可以,但所有的參數(shù)數(shù)據(jù)類(lèi)型必須一致。A:=MIN(IN1:=a, IN1:=b, IN1:=c, IN1:=d);極限值函數(shù)A:=LIMIT(MN:=5, IN:= Execution steps, MX:= 10);

34、MUXS 數(shù)A:=MUX(K:=SELECT, IN0:= Steps, IN1:=Number, IN2:=Total);9、系統(tǒng)功能/功能塊、標(biāo)準(zhǔn)庫(kù)SCL像其他語(yǔ)言一樣,可以調(diào)用各種功能塊,包括系統(tǒng)功能、功能塊SFC/SFB十一、示例(均在PLC-SIM上測(cè)試通過(guò))1、編寫(xiě)位偏移程序傳遞M變量的起始字節(jié)和位、偏移量,然后根據(jù)偏移量,算出當(dāng)前M變量的字節(jié) 和地址。例如針對(duì)M5.4,若給定偏移量1,則當(dāng)前還是M5.4,若給定2,則為M5.5, 依次類(lèi)推,若給定偏移量6,則為M6.1/根據(jù)偏移量來(lái)設(shè)定字節(jié)和位FUNCTION FC200: voidVAR_INPUT 輸入變量byteNINT;

35、/指定M起始字節(jié)號(hào)bitNINT; /指定起始位號(hào)bitNum:INT; / 指定位數(shù)END_VARVAR_OUTPUT輸出變量currBit:INT; / 當(dāng)前位currByte:INT; / 當(dāng)前字節(jié)VAR TEMPEND_VARtmp:INT;END_VARBEGINtmp:=(bitNo+bitNum-1)DIV 8;currByte:=byteNo+tmp;currBit:=bitNo+bitNum-(8*tmp+1);END_FUNCTION2、功能選擇程序假設(shè)某個(gè)機(jī)床有若干過(guò)手動(dòng)功能,使用兩個(gè)按鈕”+”和”-“,按一次” +”,功能號(hào)加一,然后相應(yīng)的功能選擇指示燈被點(diǎn)亮,譬如,當(dāng)

36、前功能3被選中,與之對(duì)應(yīng)的指示燈亮,這時(shí)按一次按鈕”+”,則功能4被選中,與之對(duì)應(yīng)的指示燈亮,而與功能3對(duì)應(yīng)的指示燈滅,同時(shí),當(dāng)功能號(hào)到達(dá)最大值時(shí),若再按一次 按鈕” +”,則功能號(hào)轉(zhuǎn)到1,重新開(kāi)始循環(huán),按鈕”-“與” +”正好相反,用 于控制功能號(hào)遞減。同時(shí)要求,當(dāng)按住某個(gè)按鈕超過(guò)1s時(shí),則功能號(hào)每過(guò)200ms 鐘加一或者減一。/主要控制功能FC10/FUNCTION FC10: VOIDVAR_INPUT 輸入變量fnAdd:BOOL; / 接收+按鈕fnSub:BOOL; / 接收-按鈕byteNINT; /指定M起始字節(jié)號(hào),這些M位與相應(yīng)得某個(gè)功能對(duì)應(yīng)。bitNINT; /指定起始位號(hào)bitNum:INT; /指定總的位數(shù)END_VARVAR /靜態(tài)變量 pus1:BOOL; /記錄按鈕+的脈沖pus2:B00L; /記錄按鈕-的脈沖 butt on:BOOL; /確定按鈕+或者按鈕-被按下 currNINT; / 記錄當(dāng)前的功能號(hào)currBit:INT; / 當(dāng)前位currByte:INT; / 當(dāng)前字節(jié)/定時(shí)器輸出p1:BOOL;p2:BOOL;p11

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論