第5章 S7-1200的指令_第1頁(yè)
第5章 S7-1200的指令_第2頁(yè)
第5章 S7-1200的指令_第3頁(yè)
第5章 S7-1200的指令_第4頁(yè)
第5章 S7-1200的指令_第5頁(yè)
已閱讀5頁(yè),還剩82頁(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、第5章 S7-1200的指令,1,2,2,5.1數(shù)據(jù)處理指令,5.1.1比較指令,10/23/2020,3,1.比較指令 2.范圍內(nèi)與范圍外比較指令,10/23/2020,例5-1用接通延時(shí)定時(shí)器和比較指令組成占空比可調(diào)的脈沖發(fā)生器,4,10/23/2020,5,3.OK與NOT_OK指令,10/23/2020,6,5.1.2 使能輸入和使能輸出 1.BCD碼:BCD (Binary-coded Decimal)是二進(jìn)制編碼的十進(jìn)制數(shù)的縮寫(xiě),BCD碼用4位二進(jìn)制數(shù)表示一位十進(jìn)制數(shù),每一位BCD碼允許的數(shù)值范圍為2#00002#1001;對(duì)應(yīng)于十進(jìn)制數(shù)0-9。4位二進(jìn)制數(shù)共有16種組合,有6種組

2、合(2#1010 2#1111)沒(méi)有在BCD碼中使用。 BCD碼的最高位二進(jìn)制數(shù)用來(lái)表示符號(hào)、負(fù)數(shù)為,正數(shù)為0;一般令負(fù)數(shù)和正數(shù)的最高4位二進(jìn)制數(shù)分別為1111和0000。16位BCD碼的范圍為999十999、32位BCD碼的范圍為-999999 +9999999。,-862,10/23/2020,7,撥碼開(kāi)關(guān),譯碼芯片,PLC的四個(gè)輸出點(diǎn) 后接一個(gè)譯碼芯片,用PLC的輸入點(diǎn)讀取撥碼開(kāi)關(guān)的輸出,10/23/2020,8,2.EN與ENO,令MW32=F983,則輸出MW34=-983 下列指令使用EN/ENO:數(shù)學(xué)運(yùn)算指令、傳送與轉(zhuǎn)換指令、位移與循環(huán)指令、字邏輯運(yùn)算指令等。 下列指令不使用EN

3、/ENO:位邏輯指令、比較指令、計(jì)數(shù)器指令、定時(shí)器指令和程序控制指令。,10/23/2020,9,5.1.3數(shù)據(jù)轉(zhuǎn)換指令,1.CONV指令,2.浮點(diǎn)數(shù)轉(zhuǎn)換為雙整數(shù)指令,3.SCAL_X指令 OUT=VALUE(MAX-MIN)+MIN 例如:如果MAX=1000,MIN=200,則 0.4520;1.2 1160,4.NORM_X指令 OUT= (VALUE-MIN)/(MAX-MIN),10/23/2020,10,5.1.4數(shù)據(jù)傳送指令,1.MOV指令,輸入輸出數(shù)據(jù)類(lèi)型可以不一樣,如:MB0MW2低字節(jié)中; MW4MB6,但是如果MW4超過(guò)255,則只傳送低字節(jié)中的數(shù)值。,2.SWAP指令

4、IN和OUT為數(shù)據(jù)類(lèi)型Word時(shí),SWAP指令交換輸入IN的高、低字節(jié)后,保存到OUT指定的地址。 IN和OUT為數(shù)據(jù)類(lèi)型Dword時(shí),交換個(gè)字節(jié)中數(shù)據(jù)的順序,交換后保存到OUT指定的地址。如:16#AABBCCDD16#DDCCBBAA,10/23/2020,11,3.全局?jǐn)?shù)據(jù)塊和數(shù)組 數(shù)組由相同數(shù)據(jù)類(lèi)型的多個(gè)元素組成,數(shù)組元素的數(shù)據(jù)類(lèi)型可以是所有的基本數(shù)據(jù)類(lèi)型。 全局?jǐn)?shù)據(jù)塊的生成方法:演示,10/23/2020,12,4.FILL_BLK與UFILL_BLK指令 FILL BLK指令將輸入?yún)?shù)取設(shè)置的值填充到輸出參數(shù)OUT指定起始地址的目標(biāo)數(shù)據(jù)區(qū)。 IN和OUT必須是D、L(數(shù)據(jù)塊或塊的局

5、部數(shù)據(jù))中的數(shù)組元素,IN還可以是常數(shù)。COUNT為填充的數(shù)組元素的個(gè)數(shù),數(shù)據(jù)類(lèi)型為DInt或常數(shù)。,5.MOVE_BLK與UMOVE_BLK指令,6.塊填充和快傳送指令的實(shí)驗(yàn)(演示),10/23/2020,13,5.1.5位移與循環(huán)位移指令,1.位移指令 移位指令SHR和SHL將輸入?yún)?shù)IN指定的存儲(chǔ)單元的整個(gè)內(nèi)容逐位右移或左移若干位,移位的位數(shù)用輸入?yún)?shù)N來(lái)定義,移位的結(jié)果保存在輸出參數(shù)OUT指定的地址。 無(wú)符號(hào)數(shù)移位和有符號(hào)數(shù)左移后空出來(lái)的位用0填充。有符號(hào)數(shù)右移后空出來(lái)的位用符號(hào)位(原來(lái)的最高位)填充,正數(shù)的符號(hào)位為0.節(jié)負(fù)數(shù)的符號(hào)位為1。,10/23/2020,14,2.循環(huán)移位指令

6、 循環(huán)移位指令ROR和ROL將輸入?yún)?shù)IN指定的存儲(chǔ)單元的整個(gè)內(nèi)容逐位循環(huán)右移或循環(huán)左移若干位,即移出來(lái)的位又送回存儲(chǔ)單元另一端空出來(lái)的位,原始的位不會(huì)丟失。N為移位的位數(shù),移位的結(jié)果保存在輸出參數(shù)OUT指定的地址。,10/23/2020,15,3.使用循環(huán)移位指令的彩燈控制器,10/23/2020,16,5.2 數(shù)學(xué)運(yùn)算指令 5.2.1數(shù)學(xué)運(yùn)算指令 數(shù)學(xué)運(yùn)算包括數(shù)學(xué)運(yùn)算指令、浮點(diǎn)數(shù)函數(shù)運(yùn)算指令、邏輯運(yùn)算指令。,1四則運(yùn)算指令,10/23/2020,17,數(shù)學(xué)運(yùn)算指令中的ADD、SUB、MUL和DIV分別是加、減、乘、除指令、它們執(zhí)行的操作數(shù)的數(shù)據(jù)類(lèi)型可選SInt, Int, DInt, US

7、Int, UInt, UDInt和Real, IN1和IN2可以是常數(shù)。IN1、IN2和OUT的數(shù)據(jù)類(lèi)型應(yīng)該相同。,10/23/2020,18,【例】壓力變送器的量程為010MPa,輸出信號(hào)為010V,被CPU集成的模擬量輸入的通道0(地址為IW64)轉(zhuǎn)換為027648的數(shù)字。假設(shè)轉(zhuǎn)換后的數(shù)字為N,試求以kPa為單位的壓力值。 解:010MPa(010000kPa)對(duì)應(yīng)于轉(zhuǎn)換后的數(shù)字027648,轉(zhuǎn)換公式為 P=(10000N)/27648 (kPa) 注意:在運(yùn)算時(shí)一定要先乘后除,否則會(huì)損失原始數(shù)據(jù)的精度。,10/23/2020,19,10/23/2020,20,【例】使用浮點(diǎn)數(shù)運(yùn)算計(jì)算上例

8、以kPa為單位的壓力值。將上例改寫(xiě)為: p=(10000 x N)27648=0.361690 X N (kPa),10/23/2020,21,2其它整數(shù)數(shù)學(xué)運(yùn)算指令 (1)MOD指令 用MOD指令來(lái)求除法的余數(shù)。 (2)NEG指令 NEG (negation)將輸入IN的值的符號(hào)取反后,保存在輸出OUT中,IN和OUT的數(shù)據(jù)類(lèi)型可以是SInt, Int, DInt和Real,輸入IN還可以是常數(shù)。 (3)INC與DEC指令 執(zhí)行指令I(lǐng)NC與DEC時(shí),參數(shù)IN/OUT的值分別被加1和減1。IN/OUT的數(shù)據(jù)類(lèi)型可選SInt, USInt, Int, UInt, DInt和UDInt(有符號(hào)或無(wú)

9、符號(hào)的整數(shù))。,10/23/2020,22,(4)絕對(duì)值指令A(yù)BS ABS指令用來(lái)求輸入IN中的有符號(hào)整數(shù)(SInt, Int寧DInt或?qū)崝?shù)(Real) 的絕對(duì)值,將結(jié)果保存在輸出OUT中。IN和OUT的數(shù)據(jù)類(lèi)型應(yīng)相同。 (5) MIN與MAX指令 MIN (minimum)指令比較輸入IN1和IN2的值,將其中較小的值送給輸出OUT。 MAX(maximum )指令比較輸入IN1和IN2的值,將其中較大的值送給輸出OUT。 INI和IN2的數(shù)據(jù)類(lèi)型相同才能執(zhí)行指定的操作。,10/23/2020,23,(6)LIMIT指令 LIMIT指令檢查輸入IN的值是否在參數(shù)MIN和MAX指定的范圍內(nèi),

10、如果IN的值沒(méi)有超出該范圍,將它直接保存在OUT指定的地址中。如果IN的值小于MIN的值或大于MAX的值,將MIN或MAX的值送給輸出OUT。,10/23/2020,24,3.浮點(diǎn)數(shù)函數(shù)運(yùn)算指令 浮點(diǎn)數(shù)(實(shí)數(shù))數(shù)學(xué)運(yùn)算指令的操作數(shù)IN和OUT的數(shù)據(jù)類(lèi)型為Real。 浮點(diǎn)數(shù)自然指數(shù)指令EXP和浮點(diǎn)數(shù)自然對(duì)數(shù)指令LN中的指數(shù)和對(duì)數(shù)的底數(shù)為2.71828。 浮點(diǎn)數(shù)開(kāi)平方指令SQRT和LN指令的輸入值如果小于0。輸出OUT返回一個(gè)無(wú)效的浮點(diǎn)數(shù)。 浮點(diǎn)數(shù)三角函數(shù)指令和反三角函數(shù)指令中的角度均為以弧度為單位的浮點(diǎn)數(shù)。如果輸入值是以度為單位的浮點(diǎn)數(shù),使用三角函數(shù)指令之前應(yīng)先將角度值乘以/180.0,轉(zhuǎn)換為弧

11、度值。 浮點(diǎn)數(shù)反正弦函數(shù)指令A(yù)SIN和浮點(diǎn)數(shù)反余弦函數(shù)指令A(yù)COS的輸入值的允許范圍為 -1.01.0, ASIN和ATAN的運(yùn)算結(jié)果的取值范圍為-/2+/2弧度,ACOS的運(yùn)算結(jié)果的取值范圍為0弧度。 求以10為底的對(duì)數(shù)時(shí),需要將自然對(duì)數(shù)值除以2.302585(10的自然對(duì)數(shù)值)。 例如:lg100=ln100/2.3025854.605170/2.302585=2。,10/23/2020,25,10/23/2020,26,10/23/2020,27,【例】測(cè)量遠(yuǎn)處物體的高度時(shí),已知被測(cè)物體到測(cè)量點(diǎn)的距離L和以度為單位的夾角,求被測(cè)物體的高度H, H= Ltan ,角度的單位為度。假設(shè)以度為

12、單位的實(shí)數(shù)角度值在MD116,乘以/180=0.0174533得角度的弧度值,運(yùn)算的中間結(jié)果保存在數(shù)據(jù)類(lèi)型為Real的臨時(shí)局部變量Tempt中。L的實(shí)數(shù)值在MD128,運(yùn)算結(jié)果在MD132。,10/23/2020,28,5.2.2邏輯運(yùn)算指令 1邏輯運(yùn)算指令 邏輯運(yùn)算指令對(duì)兩個(gè)輸入IN1和IN2逐位進(jìn)行邏輯運(yùn)算。邏輯運(yùn)算的結(jié)果存放在輸出OUT指定的地址。 “與”(AND)運(yùn)算時(shí)兩個(gè)操作數(shù)的同一位如果均為1,運(yùn)算結(jié)果的對(duì)應(yīng)位為1,否則為0。 “或”(OR)運(yùn)算時(shí)兩個(gè)操作數(shù)的同一位如果均為0,運(yùn)算結(jié)果的對(duì)應(yīng)位為0,否則為1。,10/23/2020,29,“異或 (XOR)運(yùn)算時(shí)兩個(gè)操作數(shù)的同一位如

13、果不相同,運(yùn)算結(jié)果的對(duì)應(yīng)位為1,否則為0。 以上指令的操作數(shù)IN1、IN2和OUT的數(shù)據(jù)類(lèi)型為十六進(jìn)制的Byte, Word和Dword。 取反指令I(lǐng)NV將輸入IN中的二進(jìn)制整數(shù)逐位取反,即各位的二進(jìn)制數(shù)由0變1,由1變0,運(yùn)算結(jié)果存放在輸出OUT指定的地址。,10/23/2020,30,解碼與編碼指令 假設(shè)輸入?yún)?shù)IN的值為,解碼(譯碼)指令DECO(Deode)將輸出參數(shù)OUT的第位置位為,其余各位置0,相當(dāng)于數(shù)字電路中譯碼電路的功能。利用解碼指令,可以用輸入IN的值來(lái)控制OUT中某一位的狀態(tài)。 如果輸入IN的值大于31,將取的值除以32以后,用余數(shù)來(lái)進(jìn)行解碼操作。 IN的數(shù)據(jù)類(lèi)型為UIn

14、t,OUT的數(shù)據(jù)類(lèi)型可選yte、Word和Word。 IN的值為-7(位二進(jìn)制數(shù))時(shí),輸出的數(shù)據(jù)類(lèi)型為位的字節(jié)。 IN的值為-15(位二進(jìn)制數(shù))時(shí),輸出OUT的數(shù)據(jù)類(lèi)型為16位的字。 IN的值為-31(位二進(jìn)制數(shù))時(shí),輸出OUT的數(shù)據(jù)類(lèi)型為位的雙字。 例如IN的值為時(shí),輸出為00100000(1620),僅第位為。,10/23/2020,31,編碼指令ENCO(Ericode)與解碼指令相反,將IN中為的最低位的位數(shù)送給輸出參數(shù)OUT指定的地址,IN的數(shù)據(jù)類(lèi)型可選Byte、Word和Dword,OUT的數(shù)據(jù)類(lèi)型為INT。,10/23/2020,32,SEL與MUX指令 指令SEL(Select

15、)的Bool輸入?yún)?shù)為時(shí)選中IN0,為時(shí)選中IN1,并將它們保存到輸出參數(shù)OUT指定的地址。 指令MUX(Multiplex,多路開(kāi)關(guān)選擇器)根據(jù)輸入?yún)?shù)的值,選中某個(gè)輸入數(shù)據(jù),并將它傳送到輸出參數(shù)OUT指定的地址。如=時(shí),將選中輸入?yún)?shù)INm。如果的值超過(guò)允許的范圍,將選中輸入?yún)?shù)ELSE。 參數(shù)的數(shù)據(jù)類(lèi)型為Uint; Inn、ELSE、OUT可以取12種數(shù)據(jù)類(lèi)型,它們的數(shù)據(jù)類(lèi)型應(yīng)相同。,10/23/2020,33,5.3程序控制指令 5.3.1程序控制指令 1跳轉(zhuǎn)與標(biāo)簽指令 沒(méi)有執(zhí)行跳轉(zhuǎn)指令時(shí),各個(gè)程序段按從上到下的先后順序執(zhí)行,這種執(zhí)行方式稱為線性掃描。JMP跳轉(zhuǎn)指令中止程序的線性掃描跳

16、轉(zhuǎn)到指令中的地址標(biāo)簽所在的目的地址。跳轉(zhuǎn)時(shí)不執(zhí)行跳轉(zhuǎn)指令與標(biāo)簽之間的程序,跳到目的地址后,程序繼續(xù)按線性掃描的方式順序執(zhí)行。 跳轉(zhuǎn)指令可以往前跳,也可以往后跳。 只能在同一個(gè)代碼塊內(nèi)跳轉(zhuǎn),即跳轉(zhuǎn)指令與對(duì)應(yīng)的跳轉(zhuǎn)目的地址應(yīng)在同一個(gè)代碼塊內(nèi)。在一個(gè)塊內(nèi),同一個(gè)跳轉(zhuǎn)目的地址只能出現(xiàn)一次。 JMPN指令的線圈斷電時(shí),將跳轉(zhuǎn)到指令給出的標(biāo)簽處,執(zhí)行標(biāo)簽之后的第一條指令。,10/23/2020,34,2.返回指令RET RET指令的線圈通電時(shí),停止執(zhí)行當(dāng)前的塊,不再執(zhí)行該指令后面的指令,返回調(diào)用它的塊后,執(zhí)行調(diào)用指令之后的指令。RET指令的線圈斷電時(shí),繼續(xù)執(zhí)行它下面的指令。RET線圈的上面是塊的返回值,數(shù)

17、據(jù)類(lèi)型為Bool。如果當(dāng)前的塊是OB,返回值被忽視。,10/23/2020,35,5.3.2擴(kuò)展指令中的程序控制指令,1RE_TRIGR指令 監(jiān)控定時(shí)器又稱看門(mén)狗(Watchdog),每次掃描循環(huán)它都被自動(dòng)復(fù)位一次,正常工作時(shí)最大掃描循環(huán)時(shí)間小于監(jiān)控定時(shí)器的時(shí)間設(shè)定值,它不會(huì)起作。 以下情況掃描循環(huán)時(shí)間可能大于監(jiān)控定時(shí)器的設(shè)定時(shí)間,監(jiān)控定時(shí)器將會(huì)起作用: 1)用戶程序很長(zhǎng); 2)一個(gè)掃描循環(huán)內(nèi)執(zhí)行中斷程序的時(shí)間很長(zhǎng); 3)循環(huán)指令執(zhí)行的時(shí)間太長(zhǎng)。 可以在程序中的任意位置使用指令RE_TRIGR(重新觸發(fā)循環(huán)時(shí)間監(jiān)視),來(lái)復(fù)位監(jiān)控定時(shí)器。,10/23/2020,36,2.STP指令 STP指令的

18、EN輸入為1狀態(tài)時(shí),使PLC進(jìn)入STOP模式。 STP指令使CPU集成的輸出、信號(hào)板和信號(hào)模塊的數(shù)字量輸出或模擬量輸出進(jìn)入組態(tài)時(shí)設(shè)置的安全狀態(tài)??梢允馆敵鰞鼋Y(jié)在最后的狀態(tài),或用替代值設(shè)置為安全狀態(tài)。 默認(rèn)的數(shù)字量輸出狀態(tài)為FALSE,默認(rèn)的模擬量輸出值為0。 3. GET_ERROR與GET_ERR_ID指令 GET_ERROR指令用來(lái)提供有關(guān)程序塊執(zhí)行錯(cuò)誤的信息, 用輸出參數(shù)ERROR顯示發(fā)生的程序塊執(zhí)行錯(cuò)誤,并且將詳細(xì)的錯(cuò)誤信息填入預(yù)定義的ErrorStruct(錯(cuò)誤結(jié)構(gòu))數(shù)據(jù)類(lèi)型??梢杂贸绦騺?lái)分析錯(cuò)誤信息,并作出適當(dāng)?shù)捻憫?yīng)。第一個(gè)錯(cuò)誤消失時(shí),指令輸出下一個(gè)錯(cuò)誤的信息。 GET_ERR_I

19、D指令用來(lái)報(bào)告錯(cuò)誤的ID(標(biāo)識(shí)符)。如果塊執(zhí)行時(shí)出現(xiàn)錯(cuò)誤,且指令的EN輸入為1狀態(tài),出現(xiàn)的第一個(gè)錯(cuò)誤的標(biāo)識(shí)符保存在指令的輸出參數(shù)“ID”中,ID的數(shù)據(jù)類(lèi)型為Word。第一個(gè)錯(cuò)誤消失時(shí),指令輸出下一個(gè)錯(cuò)誤的ID。,10/23/2020,37,4.ErrorStruct數(shù)據(jù)類(lèi)型,10/23/2020,38,10/23/2020,39,10/23/2020,40,5.4字符串指令 5.4.1字符串轉(zhuǎn)換指令 1字符串的結(jié)構(gòu) STRING(字符串)數(shù)據(jù)有2B的頭部,后面是最多254B的ASCII字符代碼。字符串的首字節(jié)是字符串的最大長(zhǎng)度,第2個(gè)字節(jié)是當(dāng)前長(zhǎng)度,即當(dāng)前實(shí)際使用的字符數(shù)。當(dāng)前長(zhǎng)度必須小于等于

20、最大長(zhǎng)度。字符串占用的字節(jié)數(shù)為最大長(zhǎng)度加2。字符串默認(rèn)的最大長(zhǎng)度為254個(gè)字符,定義字符串的長(zhǎng)度可以減少它占用的存儲(chǔ)空間。 2.定義字符串 執(zhí)行字符串指令之前,首先應(yīng)定義字符串。 不能在變量表中定義字符串,只能在代碼塊的界面區(qū)或全局?jǐn)?shù)據(jù)塊中定義它。,10/23/2020,41,3.使用S_CONV指令將字符串轉(zhuǎn)換為數(shù)值 S_CONY指令用于將輸入的字符串轉(zhuǎn)換為對(duì)應(yīng)的數(shù)值,或?qū)?shù)值轉(zhuǎn)換為對(duì)應(yīng)的字符串。 需要在指令方框中設(shè)置轉(zhuǎn)換前后的操作數(shù)IN和OUT的數(shù)據(jù)類(lèi)型。 使用S_CONV將字符串轉(zhuǎn)換為數(shù)值時(shí),輸入?yún)?shù)取的數(shù)據(jù)類(lèi)型為String,輸出參數(shù)OUT的數(shù)據(jù)類(lèi)型可以是SInt, Int, DInt

21、,USInt,Uintl,UDInt和Real。 允許轉(zhuǎn)換的字符包括0-9,加減號(hào)和小數(shù)點(diǎn)對(duì)應(yīng)的字符。字符串IN的轉(zhuǎn)換從第一個(gè)字符開(kāi)始,直到最后一個(gè)字符。如果遇到允許的字符之外的字符,轉(zhuǎn)換停止,ENO被設(shè)置為0。 轉(zhuǎn)換后的數(shù)值用參數(shù)OUT指定的地址保存。如果輸出的數(shù)值超出OUT的數(shù)據(jù)類(lèi)型允許的范圍,OUT為0 ,ENO被置為0狀態(tài)。反之,OUT內(nèi)為有效的值,ENO被置為1狀態(tài)。,10/23/2020,42,輸入字符串的格式規(guī)則: 1)如果字符串IN使用了十進(jìn)制數(shù)的小數(shù)點(diǎn),應(yīng)使用字符“.”。 2)允許使用分隔每3位十進(jìn)制數(shù)的逗號(hào)字符“,”轉(zhuǎn)換時(shí)忽略它。 3)忽略字符前面的空格。 4)只支持定點(diǎn)表

22、示法,不會(huì)將字符e和E視為指數(shù)計(jì)數(shù)法。 使用S_CONY指令將數(shù)值轉(zhuǎn)換為字符串 可以用指令S_CONY將參數(shù)IN指定的整數(shù)、無(wú)符號(hào)整數(shù)或浮點(diǎn)數(shù)轉(zhuǎn)換為輸出OUT對(duì)應(yīng)的字符串。轉(zhuǎn)換執(zhí)行之前,應(yīng)定義參數(shù)OUT指定的字符串。輸入數(shù)據(jù)值可以是有符號(hào)和無(wú)符號(hào)的整數(shù)以及實(shí)數(shù)。 各種數(shù)據(jù)類(lèi)型需要的最大的字符串長(zhǎng)度,10/23/2020,43,輸出字符串的格式規(guī)則如下: 1)輸出的正數(shù)沒(méi)有符號(hào)位,字符串IN的十進(jìn)制數(shù)小數(shù)點(diǎn)使用字符“.”。 2)只支持定點(diǎn)表示法,不使用指數(shù)計(jì)數(shù)法。 3)參數(shù)IN為數(shù)據(jù)類(lèi)型Real時(shí),使用英支的句號(hào)作十進(jìn)制數(shù)的小數(shù)點(diǎn)。 5.復(fù)制字符串 如果S_CONV指令輸入、輸出的數(shù)據(jù)類(lèi)型均為S

23、tring,輸入IN指定的字符串將復(fù)制到輸出OUT指定的地址。如果字符串IN的實(shí)際長(zhǎng)度超過(guò)了字符串OUT的最大長(zhǎng)度,只復(fù)制OUT允許的部分,ENO將被設(shè)置為0狀態(tài)。 6.使用STRG_VAL指令將字符串轉(zhuǎn)換為數(shù)值 STRG_VAL指令將數(shù)值字符串轉(zhuǎn)換為對(duì)應(yīng)的整數(shù)或浮點(diǎn)數(shù)。從參數(shù)IN指定的字符串的第P個(gè)字符開(kāi)始轉(zhuǎn)換,直到字符串結(jié)束。允許的字符包括數(shù)字0-9、加減號(hào)、英語(yǔ)的逗號(hào)或小數(shù)點(diǎn)、字符e和E。遇到非法的字符時(shí)將停止轉(zhuǎn)換,ENO被設(shè)置為0。,10/23/2020,44,表示:從字符串“ZZ”的第第P個(gè)字符開(kāi)始轉(zhuǎn)換,輸出MD164中的數(shù)值用定點(diǎn)數(shù)表示法,用英文的句號(hào)做小數(shù)點(diǎn)。 參數(shù)P是要轉(zhuǎn)換的第

24、一個(gè)字符的編號(hào),其參數(shù)類(lèi)型為IN/OUT,數(shù)據(jù)類(lèi)型為Ulnt,P為1時(shí),從字符串的第一個(gè)字符開(kāi)始轉(zhuǎn)換。 參數(shù)FORMAT是輸出格式選項(xiàng),數(shù)據(jù)類(lèi)型為Word,、第0位r為1和0時(shí)分別為指數(shù)表示法和定點(diǎn)數(shù)表示法。第1位f為1和0時(shí),分別用英語(yǔ)的逗號(hào)和句號(hào)作十進(jìn)制數(shù)的小數(shù)點(diǎn),高位為0。,10/23/2020,45,STRG_VAL指令的轉(zhuǎn)換規(guī)則: 1)如果使用英語(yǔ)的句號(hào)作十進(jìn)制數(shù)的小數(shù)點(diǎn),允許使用英語(yǔ)的逗號(hào)作分隔每3位十進(jìn)制數(shù)的字符,轉(zhuǎn)換時(shí)忽略它。 2)忽略字符前面的空格。,7.使用VAL_STRG指令將數(shù)值轉(zhuǎn)換為字符串 VAL_STRG將輸入?yún)?shù)IN中的整數(shù)、無(wú)符號(hào)整數(shù)或浮點(diǎn)數(shù)轉(zhuǎn)換為輸出參數(shù)OUT

25、中對(duì)應(yīng)的字符串。 被轉(zhuǎn)換的字符串將取代OUT字符串從參數(shù)P提供的字符偏移量開(kāi)始、到參數(shù)SIZE指定的字符數(shù)結(jié)束的字符。如果參數(shù)P和SIZE指定的替代字符超過(guò)OUT允許的最大字符數(shù)的范圍,ENO為0狀態(tài)。如果輸出值小于指定的長(zhǎng)度,寫(xiě)入字符串的字符采用“右對(duì)齊”的方式,字符左邊空出來(lái)的位添加空格字符。,10/23/2020,46,7.使用VAL_STRG指令將數(shù)值轉(zhuǎn)換為字符串 允許的字符包括數(shù)字。0-9、加減號(hào)、英語(yǔ)的逗號(hào)或小數(shù)點(diǎn)、字符e和E。遇到非法的字符時(shí)將停止轉(zhuǎn)換,ENO被設(shè)置為0。 參數(shù)FORMAT的數(shù)據(jù)類(lèi)型、第0位r和第1位f的意義與指令STRG_VAL的相同。第2位s是符號(hào)字符,為1和

26、為0時(shí),分別對(duì)應(yīng)于符易字符+和-。 參數(shù)PREC用來(lái)設(shè)置精度或字符串的小數(shù)部分的位數(shù)。如果參數(shù)IN的值為整數(shù),PREC指定小數(shù)點(diǎn)的位置。實(shí)數(shù)類(lèi)型支持最高精度為7位有效數(shù)字。 例如:數(shù)據(jù)值為12345和PREC為2時(shí),轉(zhuǎn)換結(jié)果為字符串123.45。,10/23/2020,47,5.4.2字符串指令 LEN指令(求字符串長(zhǎng)度) 指令LE用輸出參數(shù)OUT:(整數(shù))提供輸入?yún)?shù)IN指定的字符串的當(dāng)前長(zhǎng)度,空字符串()的長(zhǎng)度為0。,2. CONCAT指令(合并字符串) 指令CONCAT將輸入?yún)?shù)IN1和IN2指定的兩個(gè)字符串連接在一起,然后用參數(shù)OUT輸出連接后的字符串。合并后字符串IN1和IN2分別是

27、連接后的字符串的左部分和右部分。如果連接后的字符串的長(zhǎng)度大于允許的最大長(zhǎng)度,則將它限制在最大長(zhǎng)度,并將ENO設(shè)置為0。,10/23/2020,48,3. LEFT指令(左子字符串): 指令LEFT用參數(shù)OUT指定的字符串來(lái)輸出參數(shù)IN指定的字符串的前L個(gè)字符、L的數(shù)據(jù)類(lèi)型為Int。執(zhí)行圖中的LEFT指令后,輸出OUT中是IN輸入的字符串左邊的個(gè)字符。,4. RIGHT指令(右子字符串): 指令RIGHT用參數(shù)OUT指定的字符串輸出字符串IN的最后L個(gè)字符。L的數(shù)據(jù)類(lèi)型為Int。執(zhí)行圖中的RIGHT指令后,輸出OUT中是IN輸入的字符串右邊的4個(gè)字符。,10/23/2020,49,5. MID指

28、令(提供字符串的中間部分): 指令MID用參數(shù)OUT指定的字符串輸出字符串IN從第P個(gè)字符開(kāi)始的個(gè)字符。執(zhí)行圖中的MID指令后,輸出OUT中是IN輸入的字符串從第個(gè)字符開(kāi)始的中間個(gè)字符。,6. DELETE指令(刪除子字符串) 指令DELETE從字符串加中第個(gè)字符開(kāi)始,刪除L個(gè)字符。參數(shù)OUT輸出剩余的子字符串。執(zhí)行圖中的DELETE指令后,IN輸入的字符串被刪除從第3個(gè)字符開(kāi)始的2個(gè)字符后,然后輸出到OUT指定的字符串。,10/23/2020,50,7. INSERT指令(插入字符串) 指令I(lǐng)NSERT將字符串IN2插入到字符串INl中第P個(gè)字符之后。執(zhí)行圖中的INSERT指令后,IN2指定

29、的字符串ABC被插入到INI指定的字符串a(chǎn)bode第個(gè)字符之后。,8. REPLACE指令(子字符串替換) 指令REPLACE用字符串IN2替換字符串INl中從字符位置P開(kāi)始的L個(gè)字符,替換的結(jié)果用參數(shù)OUT輸出。執(zhí)行圖中的REPLACE指令后,字符串INl中從第3個(gè)字符開(kāi)始的3個(gè)字符(CDE)被IN2指定的字符串1234代替。,9. FIND指令(查找子字符串) 指令FIND提供字符串IN2在字符串IM中的位置。查找從字符串IN1的左側(cè)開(kāi)始,輸出參數(shù)OUT(整數(shù))返回第一次出現(xiàn)字符串IN2的位置。如果在字符串IN1中未找到字符串IN2,則返回零。 執(zhí)行圖中的FIND指令后,查找到IN2指定的

30、字符串DEF從IN1指定的字符串ABCDEFGHP的第4個(gè)字符開(kāi)始。,10/23/2020,51,5.5高速脈沖輸出與高速計(jì)數(shù)器 5.5.1高速脈沖輸出 脈沖寬度與脈沖周期之比稱為占空比,脈沖列輸出(PTO)功能提供占空比為50%的方波脈沖列輸出。 脈沖寬度調(diào)制(PWM)功能提供連續(xù)的、脈沖寬度可以用程序控制的脈沖列輸出。 每個(gè)CPU有兩個(gè)PTO/PWM發(fā)生器,分別通過(guò)CPU集成的QO.O-Q0.3或信號(hào)板上的Q4.0-Q4.3輸出PTO或PWM脈沖。,10/23/2020,52,2PWM的組態(tài) PWM功能提供可變占空比的脈沖輸出,時(shí)間基準(zhǔn)可以設(shè)置為us或ms。 脈沖寬度為0時(shí)占空比為0,沒(méi)有

31、脈沖輸出,輸出一直為0狀態(tài)。脈沖寬度等于脈沖周期時(shí),占空比為100%,沒(méi)有脈沖輸出,輸出一直為1狀態(tài)。 PWM的高頻輸出波形經(jīng)濾波后得到與占空比成正比的模擬量輸出電壓,可以用來(lái)控制變頻器的轉(zhuǎn)速和閥門(mén)的開(kāi)度等物理量。 使用PWM之前,首先應(yīng)對(duì)脈沖發(fā)生器組態(tài),具體步驟: 1)打開(kāi)PLC的設(shè)備視圖,選中其中的CPU。 2)打開(kāi)下面的巡視窗口的“屬性”選項(xiàng)卡,選中左邊的PTO1/PWM1 (Pulse 1)”中的“常規(guī)”參數(shù)組,用復(fù)選框選中右邊窗口的復(fù)選框“允許使用該脈沖發(fā)生器”,激活該脈沖發(fā)生器。,10/23/2020,53,3)選中左邊窗口的“參數(shù)分配”組,在右邊的窗口可以設(shè)置下列參數(shù): 使用“脈

32、沖發(fā)生器用作”下拉式列表,可選脈沖發(fā)生器為PWM或PTO。 使用“輸出源”下拉式列表,可選“板載CPU輸出”(CPU集成的輸出點(diǎn))或“信號(hào)板輸出”。 使用“時(shí)基”(時(shí)間基準(zhǔn))下拉式列表,可選毫秒或微秒。 使用“脈沖寬度格式”下拉式列表,可選4種脈沖寬度格式:百分?jǐn)?shù)、千分?jǐn)?shù)(0-1000)、萬(wàn)分?jǐn)?shù)(0-10000)和S7模擬量格式(0-27648)。 用輸入域“循環(huán)時(shí)間”設(shè)置脈沖的周期為2ms,采用“時(shí)基”選擇的時(shí)間單位。 用輸入域“初始脈沖寬度”,設(shè)置脈沖的占空比為50%,即脈沖周期為2ms,脈沖寬度為lms。脈沖寬度采用“脈沖寬度格式”設(shè)置的單位(百分?jǐn)?shù)。 4)選中左邊窗口的“IO地址硬件標(biāo)

33、識(shí)符”參數(shù)組,在右邊的窗口可以看到PWM1的起始地址、結(jié)束地址和硬件標(biāo)識(shí)符。可以修改其起始地址,在運(yùn)行時(shí)用這個(gè)地址來(lái)修改脈沖寬度。,10/23/2020,54,PWM的編程 將右邊的“擴(kuò)展指令”窗口的文件夾“脈沖”中的CTR卜少WM指令拖放到OB1,點(diǎn)擊出現(xiàn)的“調(diào)用選項(xiàng)”對(duì)話框中的“確定”按鈕,生成該指令的背景數(shù)據(jù)塊。 點(diǎn)擊參數(shù)PWM左邊的問(wèn)號(hào),再點(diǎn)擊出現(xiàn)的按鈕,用下拉式列表選中Pulse _1”,其硬件標(biāo)識(shí)符(HW ID)為9。 IN輸入信號(hào)為1狀態(tài)時(shí),用參數(shù)ENABLE (10.4)來(lái)啟動(dòng)或停止脈沖發(fā)生器,用PWM1的輸出地址來(lái)修改脈沖寬度。 6.5.2編碼器 高速計(jì)數(shù)器一般與增量式編碼器

34、一起使用,后者每圈發(fā)出一定數(shù)量的計(jì)數(shù)脈沖和一個(gè)復(fù)位脈沖,作為高速計(jì)數(shù)器的輸入。,10/23/2020,55,編碼器有以下幾種類(lèi)型: 1增量式編碼器 光電增量式編碼器的碼盤(pán)上有均勻刻制的光柵考碼盤(pán)旋轉(zhuǎn)時(shí),輸出與轉(zhuǎn)角的增量成正比的脈沖,需要用計(jì)數(shù)器來(lái)計(jì)脈沖數(shù)。有3種增量式編碼器: 1)單通道增量式編碼器內(nèi)部只有1對(duì)光耦合器,只能產(chǎn)生一個(gè)脈沖列。 2)雙通道增量式編碼器又稱為A/B一相型編碼器內(nèi)部有兩對(duì)光耦合器,輸出相位差為900的兩組獨(dú)立脈沖列。正轉(zhuǎn)和反轉(zhuǎn)時(shí)兩路脈沖的超前、滯后關(guān)系相反,如果使用A、B相型編碼器,PLC可以識(shí)別出轉(zhuǎn)軸旋轉(zhuǎn)的方向。,正轉(zhuǎn),反轉(zhuǎn),10/23/2020,56,A/B相正交

35、計(jì)數(shù)可以選擇倍速模式和4倍速模式,1倍速模式在時(shí)鐘脈沖的每一個(gè)周期計(jì)一次數(shù),倍速模式在對(duì)鐘脈沖的每一個(gè)周期計(jì)4次數(shù)。,1倍速正交模式操作舉例 4倍速正交模式操作舉例,10/23/2020,3)三通道增量式編碼器內(nèi)部除了有雙通道增量式編碼器的兩對(duì)光耦合器外,在脈沖碼盤(pán)的另外一個(gè)通道內(nèi)還有一個(gè)透光段,每轉(zhuǎn)圈輸出一個(gè)脈沖,該脈沖稱為相零位脈沖,用于系統(tǒng)清零信號(hào),或作為坐標(biāo)的原點(diǎn),以減少測(cè)量的積累誤差。 、絕對(duì)式編碼器 N位絕對(duì)式編碼器有個(gè)碼道,最外層的碼道對(duì)應(yīng)于編碼的最低位。每一丫碼道有一個(gè)光耦合器,用來(lái)讀取該碼道的0、數(shù)據(jù)。絕對(duì)式編碼器輸出的位二進(jìn)制數(shù)反映了運(yùn)動(dòng)物體所處的絕對(duì)位置,根據(jù)位置的變化情

36、況,可以判別出旋轉(zhuǎn)的方向。,57,10/23/2020,58,5.5.3高速計(jì)數(shù)器 高速計(jì)數(shù)器的功能 S7-1200PLC集成有個(gè)高速計(jì)數(shù)器(HSC)。HSC1HSC3的最高計(jì)數(shù)頻率為100KHz。 CPU1211C可以使用HSC1HSC3 ,CPU1212C可以使用HSC1HSC4 ,使用信號(hào)板DI2DO2后,它們還可以使用HSC5。 CPU1212C可以使用HSC1HSC6 。 在用戶程序使用HSC之前,應(yīng)為HSC組態(tài),設(shè)置HSC的計(jì)數(shù)模式。大多數(shù)HSC的參數(shù)只能在項(xiàng)目的設(shè)備組態(tài)中設(shè)置,某些HSC的參數(shù)在設(shè)備組態(tài)中初始化,以后可以用程序來(lái)修改。 HSC有種工作模式:內(nèi)部方向控制的單相計(jì)數(shù)器

37、,外部方向控制的單相計(jì)數(shù)器,兩路計(jì)數(shù)脈沖輸入的計(jì)數(shù)器和A/相計(jì)數(shù)器。 高速計(jì)數(shù)器有兩種功能:頻率測(cè)量功能和計(jì)數(shù)功能。,10/23/2020,59,高速計(jì)數(shù)器使用的輸入點(diǎn) 表給出了用于高速計(jì)數(shù)器的計(jì)數(shù)脈沖、方向控制和復(fù)位的輸入點(diǎn)的地址。同一個(gè)輸入點(diǎn)不能同時(shí)用于兩種不同的功能,但是高速計(jì)數(shù)器當(dāng)前模式未使用的輸入點(diǎn)可以用于其他功能。 高速計(jì)數(shù)器的輸入點(diǎn),10/23/2020,60,HSC1和HSC2可以分別用來(lái)監(jiān)視脈沖列輸出PTO1和PTO2。 HSC1HSC6的實(shí)際計(jì)數(shù)的數(shù)據(jù)類(lèi)型為Dint,默認(rèn)地址為ID1000 ID1020,可以在組態(tài)時(shí)修改地址。 3.高速計(jì)數(shù)器的組態(tài)步驟 1)打開(kāi)PLC的設(shè)備

38、視圖,選中其中的CPU。 2)選中巡視窗口的“屬性”選項(xiàng)卡左邊的高速計(jì)數(shù)器HSC1的“常規(guī)”參數(shù)組,用復(fù)選框選中“允許使用該高速計(jì)數(shù)器”,激活該HSC。 如果激活了脈沖發(fā)生器PTO1或PT02,它們分別使用HSC1和HSC2的“運(yùn)動(dòng)軸”模式,來(lái)監(jiān)視硬件輸出。如果組態(tài)HSC1或HSC2用于其他任務(wù),它們不能被脈沖發(fā)生器PTO1或PT02使用。 3)選中左邊的“功能”參數(shù)組,在右邊的窗口可以設(shè)置參數(shù)。 4)選中窗口的“重置為初始值”參數(shù)組,可以設(shè)置“初始計(jì)數(shù)器值”和“初始參考值”。,10/23/2020,61,5)選中窗口的設(shè)置高速計(jì)數(shù)器的初始值與復(fù)位信號(hào)“事件組態(tài)”參數(shù)組,可以用右邊窗口的復(fù)選框

39、激活下列事件出現(xiàn)時(shí)是否產(chǎn)生中斷:計(jì)數(shù)值等于參考值、出現(xiàn)外部復(fù)位事件和出現(xiàn)計(jì)數(shù)方向變化事件。 6)選中窗口的“硬件輸入”參數(shù)組,可以看到該HSC使用的硬件輸入點(diǎn)和可用的最高頻率。 7)選中窗口的“I/O地址標(biāo)識(shí)符參數(shù)組,可以在右邊窗口修改HSC的起始地址。 5.5.4高速脈沖輸出與高速計(jì)數(shù)器的計(jì)數(shù)實(shí)驗(yàn) 1.實(shí)驗(yàn)的基本要求 用高速脈沖輸出功能產(chǎn)生周期為2ms,占空比為50的PWM脈沖列,送給高速計(jì)數(shù)器HSC1計(jì)數(shù)。通過(guò)設(shè)置不同的參考值,在計(jì)數(shù)值分別為2000, 3000和1500時(shí)產(chǎn)生中斷。在中斷程序中修改計(jì)數(shù)值、參考值和計(jì)數(shù)方向,同時(shí)改變Q0.4-Q0.6的狀態(tài)。,10/23/2020,62,2

40、.硬件接線,高速計(jì)數(shù)器的實(shí)際計(jì)數(shù)值波形圖 硬件接線圖,10/23/2020,63,3.PWM的組態(tài)和編程 組態(tài)PTO1/PWMl產(chǎn)生PWM脈沖,輸出源為信號(hào)板上的輸出點(diǎn),時(shí)間單位為ms,脈沖寬度的格式為百分?jǐn)?shù),脈沖的周期為2ms;初始脈沖寬度為50。 在OB1中調(diào)用CTRL_PWM指令,用10.4啟動(dòng)脈沖發(fā)生器。 4.高速計(jì)數(shù)器的組態(tài) 組態(tài)時(shí)設(shè)置HSC1的工作方式為單相脈沖計(jì)數(shù),使用CPU集成的輸入點(diǎn)10.0,通過(guò)用戶程序改變計(jì)數(shù)的方向。設(shè)置HSC的初始狀態(tài)為加計(jì)數(shù),初始計(jì)數(shù)值為0,初始計(jì)數(shù)參考值為2000。出現(xiàn)計(jì)數(shù)值等于參考值的事件時(shí),調(diào)用硬件中斷組織塊OB200。HSC默認(rèn)的地址為ID10

41、00,在運(yùn)行時(shí)可以用該地址監(jiān)視HSC的計(jì)數(shù)。 5.高速計(jì)數(shù)器控制指令 CTRL_HSC是高速計(jì)數(shù)器控制指令。輸入?yún)?shù)HSC為高速計(jì)數(shù)器的硬件標(biāo)識(shí)符(HW ID)。EN為1時(shí),參數(shù)BUSY為1,STATUS是執(zhí)行指令的狀態(tài)代碼。 DIR為1時(shí),計(jì)數(shù)方向NEW_DIR被裝載;CV為1時(shí),32位計(jì)數(shù)值NEW_CV被裝載到HSC。,10/23/2020,64,10/23/2020,65,10/23/2020,66,10/23/2020,67,10/23/2020,68,10/23/2020,69,10/23/2020,70,10/23/2020,71,10/23/2020,72,10/23/2020,

42、73,10/23/2020,74,10/23/2020,75,5.5.5用高速計(jì)數(shù)器測(cè)量頻率的實(shí)驗(yàn) 1項(xiàng)目簡(jiǎn)介 在STEP 7 Basic中生成項(xiàng)目“頻率測(cè)量例程”,CPU為繼電器輸出的CPU 1215C。為了輸出高頻脈沖,使用了一塊2DI/2D0信號(hào)板。用信號(hào)板的輸出點(diǎn)Q4.0發(fā)出PWM脈沖,送給HSC1的高速脈沖輸入點(diǎn)10.0測(cè)量頻率。 2. PWM的組態(tài)與編程 打開(kāi)PLC的設(shè)備視圖,選中其中的CPU。打開(kāi)下面的巡視窗口的“屬性”選項(xiàng)卡,選中左邊的PTO1/PWMl (Pulse_1)文件夾中的“常規(guī),選中右邊窗口的復(fù)選框“允許使用該脈沖發(fā)生器”。 高速計(jì)數(shù)器的組態(tài) 設(shè)置HSCI的工作方式為“頻率”(頻率測(cè)量),使用CPU集成的輸入點(diǎn)10.0。在組態(tài)時(shí)設(shè)置HSC的初始狀態(tài)為加計(jì)數(shù),頻率測(cè)量周期為1.0s。 HSCI默認(rèn)的地址為ID 1000,在運(yùn)行時(shí)可以用該地址監(jiān)視HSC的頻率測(cè)量值。,10/23/2020,76,10/23/2020,77,5.6 其它指令與庫(kù) 5.6.1實(shí)時(shí)時(shí)鐘指令 打開(kāi)在線與診斷視圖,可以設(shè)置實(shí)時(shí)時(shí)鐘的時(shí)間值。也可以用時(shí)鐘指令來(lái)讀、寫(xiě)實(shí)時(shí)時(shí)鐘。 1、日期時(shí)間的數(shù)據(jù)類(lèi)型 1)數(shù)據(jù)類(lèi)型Time的長(zhǎng)度為4B;取值范圍為T(mén)#-24d_20h_31m_23S_648ms T#24d_20h_31m_ 23s_6

溫馨提示

  • 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)論