版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
S7-200SMARTPLC的功能指令及使用6.1基本功能指令
6.2程序控制指令
6.3局部變量表與子程序
6.4中斷程序與中斷指令
6.5PID算法與PID回路指令
6.1S7-200PLC的基本功能指令6.1.1數(shù)據(jù)傳送指令
6.1.2數(shù)學(xué)運(yùn)算指令
6.1.3數(shù)據(jù)處理指令6.1.1數(shù)據(jù)傳送指令1.單一數(shù)據(jù)傳送指令2.數(shù)據(jù)塊傳送指令3.交換字節(jié)指令4.字節(jié)傳送立即讀、寫指令
1.單一數(shù)據(jù)傳送指令把輸入(IN)指定的數(shù)據(jù)傳送到輸出(OUT),傳送過程中數(shù)據(jù)值保持不變。輸入輸出允許輸入端允許輸出端數(shù)據(jù)傳送指令按操作數(shù)的數(shù)據(jù)類型分為:
操作數(shù)可為有符號(hào)數(shù)或無(wú)符號(hào)數(shù)
字節(jié)傳送(MOVB)字傳送(MOVW)雙字傳送(MOVDW)實(shí)數(shù)傳送(MOVR)2.數(shù)據(jù)塊傳送指令①字節(jié)塊傳送指令梯形圖:語(yǔ)句表:BMBIN,OUT,N
(N:1~255)功能:當(dāng)EN=1時(shí),把輸入端IN指定地址的N個(gè)字節(jié)的內(nèi)容傳送到OUT指定地址開始的N個(gè)連續(xù)字節(jié)的存儲(chǔ)單元中去數(shù)據(jù)塊傳送指令操作數(shù)均為為無(wú)符號(hào)數(shù)。傳送字節(jié)立即讀、寫指令(物理輸入、輸出點(diǎn))交換字節(jié)指令數(shù)據(jù)塊傳送指令②字塊傳送指令梯形圖:語(yǔ)句表:BMWIN,OUT,N
功能:當(dāng)EN=1時(shí),將從IN開始的N個(gè)字傳送到OUT開始的N個(gè)字型存儲(chǔ)單元。2.數(shù)據(jù)塊傳送指令③雙字塊傳送指令梯形圖:語(yǔ)句表:BMDIN,OUT,N
功能:當(dāng)EN=1時(shí),將從IN開始的N個(gè)雙字傳送到OUT開始的N個(gè)雙字型存儲(chǔ)單元。2.數(shù)據(jù)塊傳送指令3.交換字節(jié)指令梯形圖:語(yǔ)句表:SWAPIN
功能:當(dāng)EN=1時(shí),將IN中的字的高字節(jié)內(nèi)容與低字節(jié)內(nèi)容互相交換,交換的結(jié)果仍存放在IN指定的地址中。例如:原vw100:D6A3執(zhí)行SWAP指令后:A3D6該指令采用脈沖輸入,否則每個(gè)掃描周期都會(huì)執(zhí)行交換.4.字節(jié)傳送立即讀、寫指令①字節(jié)傳送立即讀指令梯形圖:語(yǔ)句表:BIRIN,OUT
功能:當(dāng)EN=1時(shí),讀取IN指定字節(jié)地址的物理輸入點(diǎn)(IB)的值,并傳送到OUT指定的存儲(chǔ)單元,相應(yīng)的輸入映像寄存器并不刷新。②字節(jié)傳送立即寫指令梯形圖:語(yǔ)句表:BIWIN,OUT
功能:當(dāng)EN=1時(shí),將IN中的字節(jié)傳送到OUT指定字節(jié)地址的物理輸出點(diǎn)(QB),同時(shí)刷新相應(yīng)的輸出映像寄存器。運(yùn)算結(jié)果立即輸出到負(fù)載。4.字節(jié)傳送立即讀、寫指令將VB100的值寫入QB1的物理輸出點(diǎn).讀取輸入IB1的物理值,將結(jié)果寫到輸出VB1004.字節(jié)傳送立即讀、寫指令當(dāng)I0.0=1時(shí),執(zhí)行字節(jié)立即讀、寫指令,將IB1的狀態(tài)立即讀入VB40中,將VB30中的值立即輸出到QB1中。5.數(shù)據(jù)傳送指令舉例6.1.2數(shù)學(xué)運(yùn)算指令1.四則運(yùn)算指令
2.數(shù)學(xué)功能指令
3.邏輯運(yùn)算指令:與、或、異或、取反(1)加法指令
(2)減法指令
(3)乘法指令
(4)除法指令
(5)遞增和遞減指令平方根自然對(duì)數(shù)自然指數(shù)三角函數(shù)
將兩個(gè)輸入端(IN1、IN2)指定的有符號(hào)數(shù)相加,結(jié)果送到輸出端(OUT)。1.四則運(yùn)算指令--(1)加法指令加法指令可分為整數(shù)、雙字整數(shù)、實(shí)數(shù)加法指令,它們各自對(duì)應(yīng)的操作數(shù)的數(shù)據(jù)類型分別為有符號(hào)整數(shù)、有符號(hào)雙字整數(shù)、實(shí)數(shù)。整數(shù)加法指令輸入端輸出端整數(shù)、雙整數(shù)、實(shí)數(shù)加法指令
對(duì)應(yīng)的操作數(shù)數(shù)據(jù)類型:
有符號(hào)整數(shù)(INT)有符號(hào)雙字整數(shù)(DINT)實(shí)數(shù)(REAL)
整數(shù)加法雙字整數(shù)加法 實(shí)數(shù)加法
梯形圖:語(yǔ)句表:+IIN1,OUT
功能:當(dāng)EN=1時(shí),將兩個(gè)16位有符號(hào)整數(shù)IN1和IN2相加,結(jié)果為16位有符號(hào)整數(shù)存入OUT
。①整數(shù)加法指令梯形圖:語(yǔ)句表:+DIN1,OUT
功能:當(dāng)EN=1時(shí),將兩個(gè)有符號(hào)雙字整數(shù)IN1和IN2相加,結(jié)果為有符號(hào)雙字整數(shù)存入OUT
。②雙字整數(shù)加法指令梯形圖:語(yǔ)句表:+RIN1,OUT
功能:當(dāng)EN=1時(shí),將兩個(gè)32位實(shí)數(shù)IN1和IN2相加,結(jié)果為32位實(shí)數(shù)存入OUT
。③實(shí)數(shù)加法指令在LAD中,執(zhí)行結(jié)果為IN1+IN2→OUT;在STL中,通常將操作數(shù)IN2與OUT共用一個(gè)地址單元,因而執(zhí)行結(jié)果為IN1+OUT→OUT。
減法指令對(duì)兩個(gè)輸入端(IN1,IN2)指定的有符號(hào)數(shù)進(jìn)行相減操作,結(jié)果送到輸出端(OUT)。(2)減法指令減法指令可分為整數(shù)、雙字整數(shù)、實(shí)數(shù)減法,對(duì)應(yīng)的操作數(shù)分別是有符號(hào)整數(shù)、有符號(hào)雙字整數(shù)、實(shí)數(shù)。梯形圖:語(yǔ)句表:-IIN1,OUT
功能:當(dāng)EN=1時(shí),將兩個(gè)單字長(zhǎng)的有符號(hào)整數(shù)IN1和IN2相減,結(jié)果為單字長(zhǎng)的有符號(hào)整數(shù)存入OUT
。①整數(shù)減法指令輸出端輸入端整數(shù)、雙整數(shù)、實(shí)數(shù)減法指令對(duì)應(yīng)的操作數(shù):
有符號(hào)整數(shù)(INT)有符號(hào)雙整數(shù)(DINT)實(shí)數(shù)(REAL)
整數(shù)減法 雙整數(shù)減法 實(shí)數(shù)減法梯形圖:語(yǔ)句表:-DIN1,OUT
功能:當(dāng)EN=1時(shí),將兩個(gè)雙字長(zhǎng)的有符號(hào)整數(shù)IN1和IN2相減,結(jié)果為雙字長(zhǎng)的有符號(hào)整數(shù)存入OUT
。②雙字整數(shù)減法指令梯形圖:語(yǔ)句表:-RIN1,OUT
功能:當(dāng)EN=1時(shí),將兩個(gè)32位實(shí)數(shù)IN1和IN2相減,結(jié)果為32位實(shí)數(shù)存入OUT
。③實(shí)數(shù)減法指令
在LAD中,執(zhí)行結(jié)果為IN1-IN2→OUT;在STL中,通常將操作數(shù)IN2與OUT共用一個(gè)地址單元,因而執(zhí)行結(jié)果為OUT-IN1→OUT。
如:-RIN1,OUT(3)乘法指令
操作數(shù)的數(shù)據(jù)類型:有符號(hào)整數(shù)(INT)有符號(hào)雙整數(shù)(DITN)實(shí)數(shù)(REAL)
整數(shù)乘法雙整數(shù)乘法 實(shí)數(shù)乘法整數(shù)完全乘法
操作數(shù)IN2與OUT共用一個(gè)地址單元IN1×OUT=OUT
把兩個(gè)輸入端(IN1,IN2)指定的數(shù)相乘,結(jié)果送到輸出端(OUT)指定的存儲(chǔ)單元中去乘法指令對(duì)兩個(gè)輸入端(IN1,IN2)指定的有符號(hào)數(shù)進(jìn)行相乘操作,結(jié)果送到輸出端(OUT)。乘法指令可分為整數(shù)、雙字整數(shù)、實(shí)數(shù)乘法指令和整數(shù)完全乘法指令。前三種指令的操作數(shù)的數(shù)據(jù)類型分別為I、DI、R。(3)乘法指令整數(shù)乘法雙字整數(shù)乘法 實(shí)數(shù)乘法整數(shù)相乘得雙字整數(shù)
梯形圖:語(yǔ)句表:*IIN1,OUT
功能:當(dāng)EN=1時(shí),將兩個(gè)16位的有符號(hào)整數(shù)IN1和IN2相乘,結(jié)果為16位的有符號(hào)整數(shù)存入OUT
。①整數(shù)乘法指令
在LAD中,執(zhí)行結(jié)果為IN1*IN2→OUT;在STL中,通常將操作數(shù)IN2與OUT共用一個(gè)地址單元,因而執(zhí)行結(jié)果為IN1*OUT→OUT。語(yǔ)句表:*IIN1,OUT梯形圖:語(yǔ)句表:*DIN1,OUT
功能:當(dāng)EN=1時(shí),將兩個(gè)雙字長(zhǎng)的有符號(hào)整數(shù)IN1和IN2相乘,結(jié)果為雙字長(zhǎng)的有符號(hào)整數(shù)存入OUT
。②雙字整數(shù)乘法指令
梯形圖:語(yǔ)句表:*RIN1,OUT
功能:當(dāng)EN=1時(shí),將兩個(gè)32位實(shí)數(shù)IN1和IN2相乘,結(jié)果為32位實(shí)數(shù)存入OUT
。③實(shí)數(shù)乘法指令
把輸入端指定的兩個(gè)16位整數(shù)相乘,產(chǎn)生一個(gè)32位雙字整數(shù),并送到輸出端。梯形圖:語(yǔ)句表:MULVW100,VD200
④整數(shù)相乘得雙字整數(shù)的乘法指令
操作數(shù)IN2與OUT的低16位用的是同地址單元VD200除法指令對(duì)兩個(gè)輸入端(IN1,IN2)指定的有符號(hào)數(shù)進(jìn)行相除操作,結(jié)果送到輸出端(OUT)。除法指令可分為整數(shù)、雙字整數(shù)、實(shí)數(shù)除法指令和整數(shù)相除得商和余數(shù)的除法指令。前三種指令各自對(duì)應(yīng)的操作數(shù)分別為有符號(hào)整數(shù)、有符號(hào)雙字整數(shù)、實(shí)數(shù)。(4)除法指令整數(shù)除法 雙字整數(shù)除法 實(shí)數(shù)除法 整數(shù)相除得商和余數(shù)除法
在LAD中,執(zhí)行結(jié)果為IN1/IN2→OUT;在STL中,通常將操作數(shù)IN2與OUT共用一個(gè)地址單元,因而執(zhí)行結(jié)果為OUT/IN1→OUT。語(yǔ)句表:/IIN1,OUT梯形圖:語(yǔ)句表:/IIN1,OUT
功能:當(dāng)EN=1時(shí),將兩個(gè)單字長(zhǎng)的有符號(hào)整數(shù)IN1和IN2相除,結(jié)果為單字長(zhǎng)的有符號(hào)整數(shù)存入OUT
。①整數(shù)除法指令
梯形圖:語(yǔ)句表:/DIN1,OUT
功能:當(dāng)EN=1時(shí),將兩個(gè)雙字長(zhǎng)的有符號(hào)整數(shù)IN1和IN2相除,結(jié)果為雙字長(zhǎng)的有符號(hào)整數(shù)存入OUT
。②雙字整數(shù)除法指令
梯形圖:語(yǔ)句表:/RIN1,OUT
功能:當(dāng)EN=1時(shí),將兩個(gè)32位實(shí)數(shù)IN1和IN2相除,結(jié)果為32位實(shí)數(shù)存入OUT
。③實(shí)數(shù)除法指令
整數(shù)相除得商和余數(shù)指令,把輸入端指定的兩個(gè)16位整數(shù)相除,產(chǎn)生一個(gè)32位結(jié)果,并送到輸出端指定的存儲(chǔ)單元中去。其中高16位是余數(shù),低16位是商。梯形圖:語(yǔ)句表:DIVIN1,OUT
④整數(shù)相除得商和余數(shù)的除法指令
操作數(shù)IN2與OUT的低16位用的是同地址單元VD200DIVVW120,VD200
IN2與OUT的低16位用的是同地址單元④整數(shù)相除得商和余數(shù)的除法指令
四則運(yùn)算舉例:若VW10=100,VW12=15,則執(zhí)行完該段程序后,各存儲(chǔ)單元的數(shù)值為:VW20=115,VW22=85,VW24=1500,VW26=6,VD30=1500,VW40=10,VW42=6。
四則運(yùn)算舉例:IN2與OUT不是同一地址單元加法、減法、乘法指令遇到上述情況,也可作類似的處理。(5)遞增(加1)指令①字節(jié)遞增指令
梯形圖:語(yǔ)句表:INCBOUT
功能:當(dāng)EN=1時(shí),將8位的無(wú)符號(hào)輸入數(shù)IN加1,結(jié)果為8位的無(wú)符號(hào)數(shù)存入OUT
。②字遞增指令
梯形圖:語(yǔ)句表:INCWOUT
功能:當(dāng)EN=1時(shí),將16位的有符號(hào)整數(shù)IN加1,結(jié)果為16位有符號(hào)整數(shù)存入OUT
。(5)遞增(加1)指令③雙字遞增指令
梯形圖:語(yǔ)句表:INCDOUT
功能:當(dāng)EN=1時(shí),將32位的有符號(hào)雙字整數(shù)IN加1,結(jié)果為32位有符號(hào)雙字整數(shù)存入OUT
。(5)遞增(加1)指令(6)遞減(減1)指令①字節(jié)遞減指令
梯形圖:語(yǔ)句表:DECBOUT
功能:當(dāng)EN=1時(shí),將8位無(wú)符號(hào)輸入字節(jié)IN減1,結(jié)果為8位無(wú)符號(hào)數(shù)存入OUT
。②字遞減指令
梯形圖:語(yǔ)句表:DECWOUT
功能:當(dāng)EN=1時(shí),將16位的有符號(hào)整數(shù)IN減1,結(jié)果為16位有符號(hào)整數(shù)存入OUT。(6)遞減(減1)指令③雙字遞減指令
梯形圖:語(yǔ)句表:DECDOUT
功能:當(dāng)EN=1時(shí),將32位的有符號(hào)雙字整數(shù)IN減1,結(jié)果為有符號(hào)雙字整數(shù)存入OUT
。(6)遞減(減1)指令遞增、遞減指令的使用舉例:若VW10=50,AC0=100,各存儲(chǔ)單元的最終數(shù)值為:VW10=52,AC0=98。2.數(shù)學(xué)功能指令(1)平方根指令
(2)自然對(duì)數(shù)指令
(3)自然指數(shù)指令
(4)正弦、余弦、正切指令(1)平方根指令梯形圖:語(yǔ)句表:SQRTIN,OUT
功能:當(dāng)EN=1時(shí),將實(shí)數(shù)IN開平方,結(jié)果為實(shí)數(shù)存入OUT
。(2)自然指數(shù)指令梯形圖:語(yǔ)句表:EXPIN,OUT
功能:當(dāng)EN=1時(shí),將實(shí)數(shù)IN取e為底的指數(shù),結(jié)果為實(shí)數(shù)存入OUT
。(3)自然對(duì)數(shù)指令梯形圖:語(yǔ)句表:LNIN,OUT
功能:當(dāng)EN=1時(shí),將實(shí)數(shù)IN取自然對(duì)數(shù),結(jié)果為實(shí)數(shù)存入OUT
。(4)正弦、余弦、正切指令①正弦指令梯形圖:語(yǔ)句表:SININ,OUT
功能:當(dāng)EN=1時(shí),將實(shí)數(shù)IN(弧度值)取正弦,結(jié)果為實(shí)數(shù)存入OUT
。②余弦指令梯形圖:語(yǔ)句表:COSIN,OUT
功能:當(dāng)EN=1時(shí),將實(shí)數(shù)IN(弧度值)取余弦,結(jié)果為實(shí)數(shù)存入OUT
。(4)正弦、余弦、正切指令③正切指令梯形圖:語(yǔ)句表:TANIN,OUT
功能:當(dāng)EN=1時(shí),將實(shí)數(shù)IN(弧度值)取正切,結(jié)果為實(shí)數(shù)存入OUT
。(4)正弦、余弦、正切指令數(shù)學(xué)功能指令的使用舉例:[例1]求75°的余弦值,并將結(jié)果置于AC1中。[例2]求以10為底,150的常用對(duì)數(shù),150存于VD100,結(jié)果放到AC1(應(yīng)用對(duì)數(shù)的換底公式求解)。
當(dāng)求解以10為底的常用對(duì)數(shù)時(shí),用實(shí)數(shù)除法指令將自然對(duì)數(shù)除以2.302585即可。(LN10≈2.302585)
LDI0.1//使能輸入LNVD100,AC1//自然對(duì)數(shù)LN10.0,VD200//自然對(duì)數(shù)/RVD200,AC1//實(shí)數(shù)除法[例3]
求65o的正切值
LDNI0.0//使能輸入MOVR3.14159,AC0//π裝入AC0/R180.0,AC0//得π/1800弧度
*R65.0,AC0//將角度轉(zhuǎn)化為弧度
TANAC0,AC1
//求正切,結(jié)果存放到AC13.邏輯運(yùn)算指令(1)邏輯“與”指令
(2)邏輯“或”指令
(3)邏輯“異或”指令
(4)取反指令對(duì)無(wú)符號(hào)的邏輯數(shù)按位進(jìn)行邏輯處理,與、或、異或、取反等(1)邏輯“與”指令①字節(jié)“與”指令梯形圖:語(yǔ)句表:ANDBIN1,OUT
功能:當(dāng)EN=1時(shí),將輸入字節(jié)IN按位進(jìn)行相“與”操作,結(jié)果存入OUT
。②其他“與”指令梯形圖:語(yǔ)句表:ANDWIN1,OUTANDDIN1,OUT
(2)邏輯“或”指令①字節(jié)“或”指令梯形圖:語(yǔ)句表:ORBIN1,OUT
功能:當(dāng)EN=1時(shí),將輸入字節(jié)IN按位進(jìn)行“或”操作,結(jié)果存入OUT
。②其他“或”指令梯形圖:語(yǔ)句表:ORWIN1,OUTORDIN1,OUT
(3)邏輯“異或”指令①字節(jié)“異或”指令梯形圖:語(yǔ)句表:XORBIN1,OUT
功能:當(dāng)EN=1時(shí),將輸入字節(jié)IN按位進(jìn)行“異或”操作,結(jié)果存入OUT
。②其他“異或”指令梯形圖:語(yǔ)句表:XORWIN1,OUTXORDIN1,OUT
(4)邏輯“取反”指令①字節(jié)“取反”指令梯形圖:語(yǔ)句表:INVBOUT功能:當(dāng)EN=1時(shí),將輸入字節(jié)IN按位進(jìn)行“取反”操作,結(jié)果存入OUT
。②其他“取反”指令梯形圖:語(yǔ)句表:INVWOUT
INVDOUT
6.1.3數(shù)據(jù)處理指令1.移位和循環(huán)移位指令
2.數(shù)據(jù)轉(zhuǎn)換指令
3.表功能指令4.讀、寫實(shí)時(shí)時(shí)鐘指令(自學(xué))1.移位和循環(huán)移位指令(1)移位指令
(2)循環(huán)移位指令(1)右移位指令
把輸入端(IN)指定的數(shù)據(jù)右移N位,結(jié)果存入OUT。多位操作,移走后留下的空位補(bǔ)0。字節(jié)右移 字右移 雙字右移
舉例:空位自動(dòng)補(bǔ)零(1)右移位指令
字節(jié)、字、雙字移位指令的實(shí)際最大可移位數(shù):8、16、32;移位后溢出位(SM1.1)的值就是最后一次移出的位值。
STL中,移位指令通常將操作數(shù)IN和OUT共用一個(gè)地址單元。(1)右移位指令
(2)左移位指令
字節(jié)左移 字左移 雙字左移
自學(xué)(3)循環(huán)右移指令
字節(jié)循環(huán)右移 字循環(huán)右移 雙字循環(huán)右移
把輸入端(IN)指定的數(shù)據(jù)循環(huán)右移(Rotate)N位,結(jié)果存入OUT舉例:最后移出的位存入:溢出位SM1.1(3)循環(huán)右移指令
字節(jié)、字、雙字循環(huán)移位指令的實(shí)際移動(dòng)位數(shù)
字節(jié)、字、雙字循環(huán)移位指令,如果所需移位次數(shù)N大于或等于8、16、32,那么在執(zhí)行循環(huán)移位前,先對(duì)N取以8、16、32為底的模,其結(jié)果0~7、0~15、0~31為實(shí)際移動(dòng)位數(shù)。
例:字節(jié)循環(huán)移位,N除以8取余數(shù),可得到實(shí)際循環(huán)移位位數(shù)。(4)循環(huán)左移指令
字節(jié)循環(huán)左移 字循環(huán)左移 雙字循環(huán)左移
自學(xué)舉例:移位和循環(huán)移位舉例:移位和循環(huán)移位2.數(shù)據(jù)轉(zhuǎn)換指令(1)BCD碼與整數(shù)的轉(zhuǎn)換指令
(2)雙字整數(shù)與實(shí)數(shù)的轉(zhuǎn)換指令
(3)雙字整數(shù)與整數(shù)的轉(zhuǎn)換指令
(4)字節(jié)與整數(shù)的轉(zhuǎn)換指令
(5)譯碼、編碼指令
(6)段碼指令
(7)ASCII碼與十六進(jìn)制數(shù)的轉(zhuǎn)換指令
(8)整數(shù)、雙字整數(shù)、實(shí)數(shù)轉(zhuǎn)換為ASCII碼指令BCD碼每四位表示一個(gè)十進(jìn)制數(shù)。比如二進(jìn)制數(shù)01111111,它對(duì)應(yīng)的十進(jìn)制數(shù)是127,
1對(duì)應(yīng)的BCD碼(四位)為0001,2對(duì)應(yīng)的BCD碼為0010,7對(duì)應(yīng)的BCD碼為0111.合起來(lái)
127對(duì)應(yīng)的BCD碼就是000100100111。(1)BCD碼與整數(shù)(16位)的轉(zhuǎn)換范圍:0~9999BCD至整數(shù)指令(BCDI)將BCD碼轉(zhuǎn)換為整數(shù),并將結(jié)果載入OUT。IN的有效范圍是0到9999的BCD碼。例:BCDIBCD:16#1234(0001001000110100)整數(shù):1234梯形圖:語(yǔ)句表:BCDIOUT
功能:當(dāng)EN=1時(shí),將IN指定的整數(shù)轉(zhuǎn)換成BCD碼,并將結(jié)果存放到OUT,輸入數(shù)據(jù)的范圍是0~9999的整數(shù)
。整數(shù)轉(zhuǎn)換為BCD碼指令例:IBCD整數(shù):1234BCD:16#1234(0001001000110100)舉例:當(dāng)AIW16輸入的BCD碼數(shù)據(jù)大于VW100的實(shí)際值時(shí),輸出Q0.0接通。(2)雙字整數(shù)與實(shí)數(shù)的轉(zhuǎn)換32bit→32bitDINT→REAL
REAL→DINTREAL→DINT
32位有符號(hào)雙字整數(shù)轉(zhuǎn)換成32位實(shí)數(shù)+101→+101.0實(shí)數(shù)轉(zhuǎn)換成雙字整數(shù),取整:四舍五入256.54→257取整:舍去小數(shù)部分256.54→256若實(shí)數(shù)太大或無(wú)效,用整數(shù)無(wú)法表示,則SM1.1=1,輸出不變(3)雙字整數(shù)與整數(shù)的轉(zhuǎn)換有效的雙字整數(shù)DINTINT若轉(zhuǎn)換的數(shù)太大,溢出位被置位,輸出不變有符號(hào)的整數(shù)轉(zhuǎn)換為雙字整數(shù)時(shí),符號(hào)位被擴(kuò)展到高位字?!镎麛?shù)轉(zhuǎn)換為實(shí)數(shù),如何進(jìn)行?
ITDDTRINT→DINT→REAL(4)字節(jié)與整數(shù)的轉(zhuǎn)換有效的整數(shù)轉(zhuǎn)換成字節(jié),范圍:0~255,否則溢出,輸出不變字節(jié)是無(wú)符號(hào)的,轉(zhuǎn)換成整數(shù),無(wú)符號(hào)擴(kuò)展問題轉(zhuǎn)換指令編程舉例IN2與OUT不是同一地址注意!本例將單位英寸轉(zhuǎn)換為厘米。若VB0=101(in),各存儲(chǔ)單元的最終數(shù)值為:VW2=101(in),VD4=101(in),VD10=101.0(in),VD14=256.54(cm),VD20=257(cm),VW24=257(cm)。轉(zhuǎn)換指令編程舉例將模擬量輸入端采樣值由整數(shù)轉(zhuǎn)換為雙字整數(shù),然后由雙字整數(shù)轉(zhuǎn)換為實(shí)數(shù),再除以一個(gè)比例因子得到PLC允許范圍內(nèi)的值(0.0~1.0)。例:模擬量控制程序中數(shù)據(jù)類型轉(zhuǎn)換:將AIW16中的值轉(zhuǎn)換為PLC能處理的值。(5)解碼、編碼指令解碼:DECO根據(jù)輸入字節(jié)的低4位的二進(jìn)制數(shù)對(duì)應(yīng)的十進(jìn)制數(shù),置OUT的相應(yīng)位為1,其余位置0。(BYTEWORD)3210舉例:DECOAC2,VW40
輸入字節(jié)AC2:00000011(3)VW40:0000000000001000DECO指令相當(dāng)于自動(dòng)電話交換機(jī)的功能,源操作數(shù)的最低4位為電話號(hào)碼,交換機(jī)根據(jù)它接通對(duì)應(yīng)的電話機(jī)(將目標(biāo)操作數(shù)的對(duì)應(yīng)位置為1)。編碼:ENCO(與譯碼相反)將IN的最低有效位(值為1)的位號(hào)編碼成4位二進(jìn)制數(shù),寫入OUT的低4位(半個(gè)字節(jié))(WORDBYTE)舉例:ENCOAC2,VB10AC2:1000001000000000
執(zhí)行后:VB10:000010019876543210將IN指定的字節(jié)低4位的對(duì)應(yīng)的十六進(jìn)制數(shù)轉(zhuǎn)換成七段顯示碼,送入OUT指定的字節(jié)地址。例:
SEGVB10,AC1VB10:000001015要亮5
f,g,c,d,a均為1AC1:01101101adecgbf(6)段碼(SEG)指令舉例:1.若要顯示25,可用整數(shù)的完全除法DIV,除以10,得到32位的結(jié)果VD100,高16位VW100是余數(shù)5,低16位VW102是商2,將高16位和低16位分別SEG,送給QB0和QB1。2.或先使用I_BCD(思考)其他轉(zhuǎn)換指令A(yù)THASC碼轉(zhuǎn)換成16進(jìn)制HTA
16進(jìn)制轉(zhuǎn)換成ASC碼ITA
整數(shù)轉(zhuǎn)換成ASC碼DTA
雙字整數(shù)轉(zhuǎn)換成ASC碼RTA
實(shí)數(shù)轉(zhuǎn)換成ASC碼自學(xué)填表、查表指令先進(jìn)先出、后進(jìn)先出指令存儲(chǔ)器填充指令3、表功能指令(1)、填表ATT向表TBL中增加DATA指定的一個(gè)字0006000254318942VW200202204206208TL(最大填表數(shù))TL最大=100EC(實(shí)際填表數(shù))
16#1234將字填充到原表最后一個(gè)數(shù)據(jù)的后面,EC+1EC****例:ATT16#1234,VW200(2)、查表FND在表TBL中尋找符合條件的數(shù)據(jù)STL:FND=TBL,PATRN,INDX
表給定數(shù)據(jù)符合數(shù)據(jù)編號(hào)
命令參數(shù)CMD1~4:=,<>,<,>例:FND=VW402,16#3451,AC0
到表中查#3451,(表以VW402打頭)查表前,AC0=0,查到符合條件的數(shù)據(jù),該數(shù)的編號(hào)2給AC0;為查找下一個(gè)符合條件的數(shù)據(jù),激活指令前AC0+1AC0,繼續(xù)查找,如沒有符合條件的數(shù)據(jù),則AC0=6,表示表已經(jīng)查完注意:ATT,F(xiàn)IFO,LIFO都需要最大填表數(shù)(TL),如表格首地址:VW200而FND不需要TL,則操作數(shù)的地址比其他高兩個(gè)字節(jié),如VW202即FND從VW404開始就是數(shù)據(jù),F(xiàn)ND指令的操作數(shù)TBL的首地址是EC(3)、先進(jìn)先出指令FIFO從表(TBL)中移走第一個(gè)數(shù)據(jù),并將此數(shù)輸出到DATA,剩余數(shù)據(jù)依次上移一個(gè)位置注意:每執(zhí)行一次FIFO,EC-1EC(4)、后進(jìn)先出指令LIFO移走最后一個(gè)數(shù)據(jù),并將此數(shù)輸出到DATAEC-1EC執(zhí)行FILL指令后,VW400~VW418的區(qū)域被清零。
FILLIN,OUT,N用輸入值(IN)填充從輸出單元(OUT)開始的N個(gè)字
的內(nèi)容。(5)存儲(chǔ)器填充指令FILL舉例:
將從VW100開始的256個(gè)字節(jié)(128個(gè)字)的存儲(chǔ)單元清零。
NETWORK1LDI0.0
FILL+0,VW100,128指令執(zhí)行結(jié)果:從VW100開始的256個(gè)字節(jié)(VW100~VW354)的存儲(chǔ)單元全部清零。
6.2程序控制指令6.2.1有條件結(jié)束指令
6.2.2暫停指令
6.2.3監(jiān)視定時(shí)器復(fù)位指令
6.2.4跳轉(zhuǎn)與標(biāo)號(hào)指令
6.2.5循環(huán)指令
6.2.1有條件結(jié)束指令梯形圖:語(yǔ)句表:
END
舉例:當(dāng)前面的邏輯關(guān)系成立,終止當(dāng)前掃描周期,只能在主程序中使用END指令;如果不寫,系統(tǒng)自動(dòng)在主程序結(jié)束時(shí)加上一個(gè)無(wú)條件結(jié)束;注意:END不能在子程序或中斷程序中使用,如果使用,系統(tǒng)將終止整個(gè)程序的執(zhí)行6.2.2有條件停止指令梯形圖:語(yǔ)句表:
STOP
舉例:用在主程序中,終止主程序執(zhí)行,CPU由RUN模式轉(zhuǎn)到STOP模式用在中斷程序中,執(zhí)行STOP,則該中斷立即終止,忽略所有等待執(zhí)行的中斷,繼續(xù)掃描主程序的剩余部分,主程序執(zhí)行結(jié)束時(shí),CPU從RUN模式轉(zhuǎn)換到STOP模式。SM5.0出現(xiàn)I/O錯(cuò)誤時(shí),為1有條件結(jié)束和暫停指令的應(yīng)用舉例當(dāng)I0.0接通時(shí),Q0.0有輸出,當(dāng)I0.1接通,執(zhí)行END指令,終止用戶程序,END指令下面的程序不會(huì)繼續(xù)執(zhí)行,返回主程序的起點(diǎn),Q0.0仍然保持接通。若I0.1斷開,接通I0.2,則Q0.1有輸出,若將I0.3接通,則執(zhí)行STOP指令,立即終止程序的執(zhí)行,CPU轉(zhuǎn)為STOP模式,Q0.0和Q0.1輸出均為0。6.2.3監(jiān)視定時(shí)器復(fù)位指令梯形圖:語(yǔ)句表:WDR
功能:對(duì)CPU系統(tǒng)的監(jiān)視定時(shí)器WDT進(jìn)行復(fù)位操作??撮T狗WDT:1、CPU處于RUN模式時(shí),默認(rèn)狀態(tài)下,主掃描的持續(xù)時(shí)間限制為500毫秒。如果主掃描的持續(xù)時(shí)間超過500毫秒,則CPU會(huì)自動(dòng)切換為STOP模式;2、可以在程序中執(zhí)行看門狗復(fù)位(WDR)指令來(lái)延長(zhǎng)主掃描的持續(xù)時(shí)間。每次執(zhí)行WDR指令時(shí),掃描看門狗超時(shí)時(shí)間都會(huì)復(fù)位為500毫秒。但是,主掃描的最大持續(xù)時(shí)間為5秒。如果當(dāng)前掃描持續(xù)時(shí)間達(dá)到5秒,CPU會(huì)無(wú)條件切換為STOP模式。若用戶程序過長(zhǎng),希望掃描時(shí)間>500ms,或出現(xiàn)中斷使得掃描時(shí)間>500ms,可使用WDR指令來(lái)重新觸發(fā)WDT,擴(kuò)展允許掃描的周期;使用WDR指令時(shí),下列操作只有在掃描周期結(jié)束時(shí)才能執(zhí)行:通信(自由端口方式除外)、I/O更新(立即I/O除外)、強(qiáng)制更新、SM位更新、運(yùn)行時(shí)間診斷、中斷程序中的STOP等6.2.4跳轉(zhuǎn)與標(biāo)號(hào)指令①跳轉(zhuǎn)指令梯形圖:語(yǔ)句表:JMPn
(n=0~255)功能:當(dāng)輸入端邏輯為1時(shí),程序跳轉(zhuǎn)到同一程序中的標(biāo)號(hào)n處執(zhí)行。②標(biāo)號(hào)指令梯形圖:語(yǔ)句表:LBLn
功能:用以標(biāo)記跳轉(zhuǎn)目的地的具體位置。注意:兩者成對(duì)出現(xiàn),并且只能在同一個(gè)程序中(主、子、中斷程序不能互跳)可以多個(gè)跳轉(zhuǎn)指令使用同一標(biāo)號(hào),但不允許一個(gè)跳轉(zhuǎn)指令對(duì)應(yīng)多個(gè)標(biāo)號(hào);同一程序中也不允許存在相同的標(biāo)號(hào);在SCR指令中,JMP和LBL只能在同一個(gè)SCR段中使用;一般,將LBL放在JMP后面,減少程序的執(zhí)行時(shí)間。SM0.2:當(dāng)RAM中保存的數(shù)據(jù)丟失時(shí),SM0.2=1一個(gè)掃描周期本程序:當(dāng)保存的數(shù)據(jù)沒有丟失,則跳轉(zhuǎn)到標(biāo)號(hào)4處,往LBL=4的下方執(zhí)行程序舉例:用增減計(jì)數(shù)器進(jìn)行計(jì)數(shù),如果當(dāng)前值小于500,則程序按原順序執(zhí)行,若當(dāng)前值超過500,則跳轉(zhuǎn)到從標(biāo)號(hào)10開始的程序執(zhí)行。程序?qū)嵗?516---------當(dāng)操作方式選擇開關(guān)閉合時(shí),I0.0的常開觸點(diǎn)閉合,跳過手動(dòng)程序段不執(zhí)行;I0.0常閉觸點(diǎn)斷開,選擇自動(dòng)方式的程序段執(zhí)行;而操作方式選擇開關(guān)斷開時(shí)的情況與此相反,跳過自動(dòng)方式程序段不執(zhí)行,選擇手動(dòng)方式的程序段執(zhí)行.移位寄存器指令實(shí)現(xiàn)順序起動(dòng)和順序停止6.2.5循環(huán)指令梯形圖:語(yǔ)句表:FORINDX,INIT,FINALNEXT
功能:FOR標(biāo)記循環(huán)體的開始;NEXT標(biāo)記循環(huán)體的結(jié)束,無(wú)操作數(shù);兩者成對(duì)出現(xiàn),包括中間的程序,表示一個(gè)循環(huán)FOR指定三個(gè)值:INDX、INIT、FINAL
當(dāng)前循環(huán)記數(shù)、初值、終值
FINAL>INDX循環(huán)
FINAL=INDX順序向下執(zhí)行,不循環(huán)FINAL<INDX循環(huán)不執(zhí)行當(dāng)FOR指令的邏輯條件滿足時(shí)反復(fù)執(zhí)行循環(huán)體指令。循環(huán)嵌套指令的使用舉例1.若初值為1,終值為100,則循環(huán)100次。循環(huán)允許后,將初值1拷貝到指針值,當(dāng)前循環(huán)計(jì)數(shù)為1,然后每執(zhí)行依次循環(huán)體,當(dāng)前計(jì)數(shù)值+1,并將結(jié)果與終值100比較,直到=終值。若想變化循環(huán)次數(shù),則在循環(huán)執(zhí)行過程中可以修改參數(shù)2.FOR/NEXT的循環(huán)嵌套可達(dá)8層3.循環(huán)程序是在一個(gè)掃描周期內(nèi)執(zhí)行的,如果循環(huán)次數(shù)很大,循環(huán)程序的執(zhí)行時(shí)間很長(zhǎng),可能使監(jiān)控定時(shí)器(看門狗)動(dòng)作;4.循環(huán)程序一般使用信號(hào)的上升沿調(diào)用。[例]循環(huán)、跳轉(zhuǎn)指令應(yīng)用程序:6.3局部變量表與子程序6.3.1局部變量
6.3.2子程序6.3.1局部變量1.局部變量的名稱及類型
2.局部變量的地址分配及增加新變量I、Q、M、SM、AI、AQ、V、S、T、C、HC地址區(qū)中的變量稱為全局變量,在符號(hào)表中定義的上述地址區(qū)中的符號(hào)稱為全局符號(hào)。在子程序中,盡量使用局部變量。1.局部變量的名稱及類型局部變量用局部變量表來(lái)定義。打開變量表窗口方法:?jiǎn)螕簟耙晥D”菜單的“窗口”區(qū)域中的“組件”按鈕,再打開下拉菜單“變量表”,將出現(xiàn)程序編輯器下面。1.局部變量的名稱及類型用局部變量表定義局部變量,需為各個(gè)變量命名。局部變量名又稱符號(hào)名,最多23個(gè)字符,首字符不能是數(shù)字。選用合適的變量名可方便編程,并增強(qiáng)程序的可讀性。局部變量表中的變量類型區(qū)定義的變量有:輸入?yún)?shù)(IN)、輸入輸出子程序參數(shù)(IN/OUT)、輸出子程序參數(shù)(OUT)、臨時(shí)變量(TEMP)4種類型。IN類型:將指定位置的參數(shù)傳入子程序。IN/OUT類型:將指定位置的參數(shù)傳到子程序,從子程序來(lái)的結(jié)果值被返回到同樣的地址。OUT類型:從子程序的結(jié)果值(數(shù)據(jù))傳入到指定參數(shù)位置。TEMP類型:局部存儲(chǔ)器只用作子程序內(nèi)部的暫時(shí)存儲(chǔ)器,不能用來(lái)傳遞參數(shù)。以上順序不能變。1.局部變量的名稱及類型2.局部變量表的地址分配及增加新變量
在局部變量表中定義局部變量時(shí),只需指定局部變量的類型(IN、IN/OUT、OUT和TEMP)和數(shù)據(jù)類型,不用指定存儲(chǔ)器地址,程序編輯器自動(dòng)為各個(gè)局部變量分配地址;起始地址為L(zhǎng)B0,1~8個(gè)連續(xù)的位參數(shù)分配一個(gè)字節(jié),字節(jié)中位地址為L(zhǎng)x.0~Lx.7
(x為字節(jié)地址).若要增加變量,鼠標(biāo)右鍵單擊已有的行,菜單“插入”→“行”命令。6.3.2子程序1.子程序的創(chuàng)建
2.子程序調(diào)用指令、子程序返回指令
3.帶參數(shù)調(diào)用子程序1.子程序的創(chuàng)建可采用下列方式創(chuàng)建子程序:①打開程序編輯器,在“編輯”下拉菜單“對(duì)象”→“子程序”;②在程序編輯器視窗中單擊鼠標(biāo)右鍵,在彈出菜單中執(zhí)行命令“插入”→“子程序”;③用鼠標(biāo)右鍵單擊指令樹上的“程序塊”圖標(biāo),在彈出菜單中執(zhí)行命令“插入”→“子程序”,程序編輯器將自動(dòng)生成并打開新的子程序,在程序編輯器底部出現(xiàn)標(biāo)有新的子程序的標(biāo)簽。單擊項(xiàng)目樹中子程序的圖標(biāo),可以重新命名子程序。2.子程序調(diào)用指令、子程序返回指令梯形圖:語(yǔ)句表:CALLSBR_nCALLSBR_n,IN,IN_OUT,OUTCRET功能:當(dāng)EN=1時(shí),調(diào)用子程序SBR_n
。CRET:子程序返回子程序:優(yōu)化程序結(jié)構(gòu),減少掃描時(shí)間主程序把程序控制權(quán)交給子程序
結(jié)束后,必須返回主程序
無(wú)條件子程序返回指令(RET)有條件子程序返回指令(CRET)CRET指令RET指令Micro/WIN為每個(gè)子程序自動(dòng)加入無(wú)條件返回指令子程序返回之處注意:中斷程序和子程序也可以調(diào)用子程序;允許子程序遞歸調(diào)用(子程序調(diào)用自己),但在進(jìn)行遞歸調(diào)用時(shí)應(yīng)非常慎重;主程序嵌套調(diào)用子程序,最大嵌套深度為8層;中斷程序嵌套調(diào)用子程序,嵌套深度為4層;子程序中不能用end;不能用jmp指令跳入或跳出子程序;主程序和子程序共用累加器,調(diào)用時(shí)不需要重新存儲(chǔ)或重裝。3.帶參數(shù)調(diào)用子程序子程序可帶參數(shù)調(diào)用,使得子程序調(diào)用更為靈活方便,程序結(jié)構(gòu)更為緊湊清晰。子程序的調(diào)用過程如果存在數(shù)據(jù)的傳遞,則在調(diào)用指令中應(yīng)包含相應(yīng)的參數(shù)。參數(shù)在子程序的局部變量表中定義,最多可以傳遞16個(gè)參數(shù)。先在子程序中設(shè)置好參數(shù),然后到主程序中調(diào)用,就出現(xiàn)帶參數(shù)調(diào)用的指令??蠢泳植孔兞勘碇械淖兞坑蠭N、OUT、IN/OUT和TEMP等4種類型。EN和IN1的輸入為布爾型能流輸入地址參數(shù)&VB100是將一個(gè)雙字輸入子程序調(diào)用時(shí),輸入?yún)?shù)被拷貝到局部存儲(chǔ)器。子程序完成時(shí),從局部存儲(chǔ)器拷貝輸出參數(shù)到指定的輸出參數(shù)地址。例:子程序調(diào)用指令的使用舉例要求將以度為單位的角度值保存在MD20中,通過子程序求取其余弦值并存放在VD20中。子程序中變量名稱前面的“#”不是局部變量,是編程軟件自動(dòng)加上去的,不用鍵入“#”號(hào)。4.子程序中的定時(shí)器停止調(diào)用子程序時(shí),子程序內(nèi)的線圈的ON/OFF狀態(tài)保持不變。如果停止調(diào)用SBR-2,該子程序中的定時(shí)器正在定時(shí),100ms定時(shí)器將停止計(jì)時(shí),當(dāng)前值保持不變,重新調(diào)用子程序時(shí)繼續(xù)定時(shí)。但是1ms定時(shí)器T32和10ms定時(shí)器T33將繼續(xù)定時(shí),定時(shí)時(shí)間到,它們?cè)谧映绦蛑獾挠|點(diǎn)也會(huì)動(dòng)作。SBR-2MAIN6.4中斷程序與中斷指令6.4.1中斷程序
6.4.2中斷指令6.4.1中斷程序中斷是使系統(tǒng)暫時(shí)中斷現(xiàn)在正在執(zhí)行的程序,而轉(zhuǎn)到中斷服務(wù)子程序,去處理那些急需處理的中斷事件,處理后返回原程序時(shí),恢復(fù)當(dāng)時(shí)的程序執(zhí)行狀態(tài)并繼續(xù)執(zhí)行。中斷程序是由用戶編寫處理中斷事件的程序,但不是由用戶程序調(diào)用,而是在中斷事件發(fā)生時(shí)由操作系統(tǒng)調(diào)用。處理后返回原程序中斷指令使系統(tǒng)暫時(shí)中斷現(xiàn)在正在執(zhí)行的程序,而轉(zhuǎn)到中斷服務(wù)程序去處理那些急需處理的事件。中斷處理提供了對(duì)特殊的內(nèi)部或外部事件的快速響應(yīng)。6.4.2中斷指令1.中斷事件
2.中斷優(yōu)先級(jí):
3.中斷指令通信口中斷I/O中斷時(shí)基中斷高低1.中斷事件通信口中斷PLC的串行通信口可由用戶程序來(lái)控制,接收字符、接受完成、發(fā)送完成都可以產(chǎn)生中斷事件;事件號(hào):8、9、23~26(2)I/O中斷可用輸入點(diǎn)(I0.0~I(xiàn)0.3以及數(shù)字量輸入信號(hào)板的標(biāo)準(zhǔn)CPU的輸入通道I7.0和I7.1)的上升沿或下降沿產(chǎn)生中斷、高速計(jì)數(shù)器中斷(計(jì)數(shù)器當(dāng)前值等于預(yù)設(shè)值發(fā)生中斷,響應(yīng)高速事件)、脈沖串輸出中斷(指定脈沖數(shù)輸出已完成,典型應(yīng)用是步進(jìn)電機(jī)控制);事件號(hào):0~7、12~20、27~33(3)時(shí)基中斷包括定時(shí)中斷和定時(shí)器中斷(T32/T96);定時(shí)中斷:可以按指定的周期時(shí)間循環(huán)產(chǎn)生周期性中斷事件(定時(shí)中斷0和1);常用定時(shí)中斷以固定的事件間隔去控制模擬量的采集和執(zhí)行PID回路程序;比如以1ms為增量,周期時(shí)間1~255ms,時(shí)間放在特殊存儲(chǔ)器SMB34、SMB35中;定時(shí)中斷0和1對(duì)應(yīng)的事件號(hào):10和11。(3)時(shí)基中斷
包括定時(shí)中斷和定時(shí)器中斷;定時(shí)器中斷(T32/T96):在給定時(shí)間間隔到達(dá)時(shí)產(chǎn)生中斷;只能是1ms分辨率的定時(shí)器;在中斷允許后,當(dāng)定時(shí)器的當(dāng)前值等于設(shè)定值時(shí)產(chǎn)生中斷。對(duì)應(yīng)的中斷事件號(hào):21、22。按優(yōu)先級(jí)排列的中斷事件按優(yōu)先級(jí)排列的中斷事件2.中斷優(yōu)先級(jí)中斷按以下固定的次序來(lái)決定優(yōu)先級(jí):通訊(最高優(yōu)先級(jí))I/O中斷(中等優(yōu)先級(jí))時(shí)基中斷(最低優(yōu)先級(jí))優(yōu)先級(jí)高的先處理,其他中斷事件排隊(duì)等候各型號(hào)CPU所能保存的最大中斷事件個(gè)數(shù):圖6-24
SM4.0,SM4.1,SM4.2:通信口中斷、I/O中斷、定時(shí)中斷的中斷隊(duì)列溢出標(biāo)志位,只在中斷程序中使用,隊(duì)列變空或控制返回到主程序時(shí),該標(biāo)志位復(fù)位。3.中斷指令(1)中斷連接、中斷分離指令
(2)全局中斷允許、全局中斷禁止指令
(3)中斷返回指令(1)中斷連接、中斷分離指令①中斷連接指令梯形圖:語(yǔ)句表:ATCHINT,EVNT功能:當(dāng)EN=1時(shí),建立中斷事件EVNT和中斷程序INT之間的聯(lián)系,并允許這個(gè)中斷事件?!裼脕?lái)建立某個(gè)中斷事件(EVNT)和某個(gè)中斷程序(INT)之間的聯(lián)系。●并允許這個(gè)中斷事件●該中斷事件發(fā)生時(shí)執(zhí)行相關(guān)的中斷程序中斷事件中斷程序多個(gè)中斷事件可調(diào)用同一個(gè)中斷程序;一個(gè)中斷事件不能同時(shí)與多個(gè)中斷程序建立連接,否則,系統(tǒng)默認(rèn)執(zhí)行這些中斷程序中的最后一個(gè)。梯形圖:語(yǔ)句表:DTCHEVNT
功能:當(dāng)EN=1時(shí),解除某個(gè)中斷事件EVNT和中斷程序之間的聯(lián)系。②中斷分離指令截?cái)嗄硞€(gè)中斷事件和所有中斷程序之間的聯(lián)系單獨(dú)禁止某中斷事件,使中斷回到不激活或無(wú)效狀態(tài)SM5.0:監(jiān)測(cè)I/O狀態(tài),若有錯(cuò)誤則SM5.0=1若發(fā)現(xiàn)I/O錯(cuò)誤,禁止I0.0上升沿中斷I/O中斷程序,說(shuō)明DTCH指令的使用(2)全局中斷允許、禁止指令梯形圖:語(yǔ)句表:ENI
DISI功能:全局允許中斷/全局禁止中斷。執(zhí)行DISI指令后,出現(xiàn)的中斷事件就進(jìn)入中斷隊(duì)伍排隊(duì)等候,直到全局中斷允許指令(ENI)重新允許中斷。全局地允許所有被連接的中斷事件
全局地禁止處理所有中斷事件當(dāng)CPU進(jìn)入RUN模式時(shí)自動(dòng)禁止了中斷。在RUN模式執(zhí)行全局中斷允許指令(ENI)后,允許所有中斷。
(3)清除中斷事件指令從中斷隊(duì)列中清除所有編號(hào)為EVNT的中斷事件。例如用來(lái)清除由于機(jī)械振動(dòng)造成的高速計(jì)數(shù)器產(chǎn)生的錯(cuò)誤中斷。如果該指令用于清除假的中斷事件,則應(yīng)在執(zhí)行CEVNT之前分離該中斷事件。否則,執(zhí)行該指令后,由于錯(cuò)誤繼續(xù)存在,還會(huì)向隊(duì)列中添加新的事件。語(yǔ)句表:CEVNTEVNT(4)中斷返回指令梯形圖:語(yǔ)句表:CRETI
功能:從中斷程序中有條件返回。有條件中斷返回指令(CRETI),根據(jù)控制的條件從中斷程序中返回到主程序中斷程序入口
編程軟件自動(dòng)在中斷程序結(jié)尾加上無(wú)條件中斷返回指令(RETI)優(yōu)化中斷程序:使其簡(jiǎn)短,減少中斷程序的執(zhí)行時(shí)間。在執(zhí)行某特殊的任務(wù)后立即返回主程序,否則有可能引起主程序控制設(shè)備的異常操作。中斷程序中不能使用:全局中斷禁止指令DISI全局中斷允許指令ENI定義高速計(jì)數(shù)器指令HDEF順序控制繼電器指令LSCR有條件結(jié)束指令END。通訊口中斷I/O中斷
時(shí)基中斷自學(xué)定時(shí)中斷定時(shí)器中斷舉例:定時(shí)中斷按指定的周期時(shí)間循環(huán)執(zhí)行中斷程序必須用ATCH指令,建立中斷程序與定時(shí)中斷事件的連接。事件10是定時(shí)中斷0例:每隔100ms,采集模擬量值并送到VW100中。事件10是定時(shí)中斷0定時(shí)中斷的周期時(shí)間周期增量:1ms
定時(shí)中斷周期時(shí)間:1~255ms。定時(shí)中斷0/1的周期時(shí)間SMB34/35改變周期時(shí)間:修改SMB34/35中的值,必須重新建立中斷程序與定時(shí)中斷事件的連接。定時(shí)中斷事件中斷程序當(dāng)定時(shí)中斷設(shè)定的周期時(shí)間到,即定時(shí)中斷事件(10/11)發(fā)生,則執(zhí)行相應(yīng)的中斷程序。定時(shí)中斷一旦允許就連續(xù)地運(yùn)行,按指定的時(shí)間間隔反復(fù)執(zhí)行被連接的中斷程序。常用定時(shí)中斷以固定的時(shí)間間隔去控制模擬量的采集和執(zhí)行PID回路程序。如果退出RUN模式或分離定時(shí)中斷,則定時(shí)中斷被禁止。定時(shí)中斷的應(yīng)用常用定時(shí)中斷以固定的時(shí)間間隔去控制模擬量的采集(AIW16)和執(zhí)行PID回路程序(定時(shí)中斷0/1)AIW16中斷指令舉例例:用定時(shí)中斷0,每100ms將VB0加1,VB0到100時(shí)關(guān)閉定時(shí)中斷,并將Q0.0置1,設(shè)計(jì)主程序和中斷程序【例6-26】使用定時(shí)器中斷控制8路彩燈。彩燈初始狀態(tài)是最右邊1、2兩路亮,然后每隔2s循環(huán)左移1位,即2、3兩路亮,依次循環(huán)。使用定時(shí)器T32中斷,主程序與中斷程序見下圖。6.5PID指令及應(yīng)用6.5.1PID算法
6.5.2PID回路指令PID調(diào)節(jié)系統(tǒng)的組成在閉環(huán)系統(tǒng)中,PID控制器根據(jù)給定值和過程變量的偏差調(diào)節(jié)回路輸出值,使得偏差為0,使系統(tǒng)達(dá)到穩(wěn)定狀態(tài).用PLC實(shí)現(xiàn)模擬量閉環(huán)控制系統(tǒng)PLCc(t)M(t)SP(n)e(n)M(n)pv(n)pv(t)6.5.1PID算法(1)比例項(xiàng)
(2)積分項(xiàng)
(3)微分項(xiàng)PID回路的輸出變量M(t)可看作比例項(xiàng)、積分項(xiàng)、微分項(xiàng)之和:連續(xù)系統(tǒng)的PID算法(PID回路輸出的初值)PID比例調(diào)節(jié)(P)是按比例反應(yīng)系統(tǒng)的偏差,系統(tǒng)一旦出現(xiàn)偏差,立即產(chǎn)生調(diào)節(jié)作用以減少偏差。比例作用越大,可加快調(diào)節(jié)時(shí)間,但過大的比例,使系統(tǒng)的穩(wěn)定性下降,甚至造成系統(tǒng)不穩(wěn)定。積分調(diào)節(jié)(I)作用是使系統(tǒng)消除穩(wěn)態(tài)誤差,提高誤差度。積分作用的強(qiáng)弱取決于積分時(shí)間常數(shù)Ti,Ti越小,積分作用就越強(qiáng);反之積分作用弱。加入積分使得系統(tǒng)動(dòng)態(tài)響應(yīng)變慢。(PI或PID)微分調(diào)節(jié)作用反映系統(tǒng)偏差信號(hào)的變化率具有預(yù)見性,能遇見偏差變化的趨勢(shì),因此能產(chǎn)生超前的控制作用,在偏差沒有形成之前,已被微分調(diào)節(jié)作用消除。因此,微分可改善系統(tǒng)的動(dòng)態(tài)性能。微分對(duì)噪聲干擾有放大作用,因此過強(qiáng)的微分對(duì)系統(tǒng)抗干擾不利。PID控制器調(diào)節(jié)回路輸出。為使系統(tǒng)達(dá)到穩(wěn)定狀態(tài),應(yīng)讓偏差(e)趨于零。
偏差(e)=給定值(SP)-過程變量(PV)PID控制器的輸出量M(t).比例項(xiàng)積分項(xiàng)初始值微分項(xiàng)隨時(shí)間t連續(xù)變化的模擬量PID回路的增益6.5.1PID算法將連續(xù)函數(shù)離散化,第n次采樣時(shí)控制器的輸出為:
Mn——在第n采樣時(shí)刻PID回路輸出的計(jì)算值;en——在第n次采樣時(shí)刻的偏差值;en-1——在第n-1采樣時(shí)刻的偏差值(偏差前值);KI——積分項(xiàng)的系數(shù);KD——微分項(xiàng)的系數(shù);計(jì)算中,只需保留積分項(xiàng)前值(MX),即:從第一個(gè)采樣周期到當(dāng)前采樣周期的所有誤差的累積值比例項(xiàng)、積分項(xiàng)、微分項(xiàng)比例項(xiàng)
MPn=KC·(SPn-PVn-) 積分項(xiàng)
MIn=KC·TS/TI·(SPn-PVn)+MX 微分項(xiàng)
MDn=KC·TD/TS·(PVn-1-PVn)
9個(gè)參數(shù)KIKD進(jìn)行PID運(yùn)算的9個(gè)參數(shù):過程變量當(dāng)前值PVn給定值SPn增益KC采樣時(shí)間TS積分時(shí)間TI微分時(shí)間TD積分項(xiàng)前值MX過程變量前值PVn-1
輸出值Mn6.5.2PID回路指令1.PID回路指令格式與說(shuō)明
2.控制方式
3.回路輸入/輸出變量的數(shù)值轉(zhuǎn)換
4.變量和范圍
5.選擇回路控制類型
6.報(bào)警與出錯(cuò)1.PID回路指令格式與說(shuō)明①指令格式梯形圖:語(yǔ)句表:PIDTBL,LOOP
功能:當(dāng)EN=1時(shí),運(yùn)用回路表TBL中輸入和配置的信息,在回路號(hào)LOOP指定的回路中進(jìn)行PID運(yùn)算。PID回路指令運(yùn)用回路表中的輸入信息和組態(tài)信息,進(jìn)行PID運(yùn)算,編程極其簡(jiǎn)便。(組態(tài)編程,即填表式編程)
回路號(hào)0-7回路表的起始地址限用VB區(qū)域1.PID回路指令格式與說(shuō)明TBL是回路表起始地址,只能使用字節(jié)VB區(qū)域;LOOP是回路號(hào),為字節(jié)常量0~7;程序中可使用八條PID指令,不可重復(fù)使用同一個(gè)回路號(hào);如果兩條或多條PID指令使用相同的回路號(hào)(即使它們的表格地址不同),PID計(jì)算會(huì)互相干擾,結(jié)果難以預(yù)料。1.進(jìn)行PID運(yùn)算的前提條件1邏輯堆棧棧頂值必須為1.②回路表格式存儲(chǔ)九個(gè)參數(shù),用于控制和監(jiān)控循環(huán)運(yùn)算,包括過程變量、給定值、輸出、增益、采樣時(shí)間、積分時(shí)間、微分時(shí)間及積分相前值(偏差)及過程變量前值。連續(xù)的36個(gè)字節(jié)
9個(gè)參數(shù)VB100注意回路表中:1.數(shù)據(jù)類型:實(shí)數(shù),4個(gè)字節(jié)2.偏移地址:VD3.數(shù)據(jù)標(biāo)準(zhǔn)化4.回路表中的值進(jìn)行組態(tài):置給定值=過程變量置過程變量前值=過程變量當(dāng)前值置積分項(xiàng)前值=輸出值輸出值為PID計(jì)算值注意:要以一定的采樣頻率進(jìn)行PID運(yùn)算,采樣時(shí)間必須輸入到回路表,且PID回路指令必須編入定時(shí)發(fā)生的中斷程序中;或者在主程序中由定時(shí)器控制PID回路指令的執(zhí)行頻率。周期地進(jìn)行PID運(yùn)算2.控制方式
當(dāng)允許輸入端(EN)檢測(cè)到一個(gè)正跳變信號(hào),PID回路就從手動(dòng)方式無(wú)擾動(dòng)地切換到自動(dòng)方式。無(wú)擾動(dòng)切換時(shí),系統(tǒng)把手動(dòng)方式的當(dāng)前輸出值填入回路表中的Mn欄,用來(lái)初始化輸出值Mn,且進(jìn)行一系列的操作,對(duì)回路表中的值進(jìn)行組態(tài):置給定值SPn=過程變量PVn置過程變量前值PVn-1=過程變量當(dāng)前值PVn置積分項(xiàng)前值MX=輸出值Mn
自動(dòng)手動(dòng)為了能從手動(dòng)方式順利向自動(dòng)方式切換,系統(tǒng)必須把手動(dòng)方式的當(dāng)前輸出值填入回路表中的Mn欄,用來(lái)初始化輸出值Mn,且進(jìn)行一系列操作對(duì)回路表中的值進(jìn)行組態(tài):置給定值(SPn)=過程變量(PVn)置過程變量前值(PVn-1)=過程變量當(dāng)前值(PVn)置積分項(xiàng)前值(MX)=輸出值(Mn)變量名過程變量(PVn)給定值(SPn)輸出值(Mn)增益(KC)采樣時(shí)間(TS)積分時(shí)間(Ti)微分時(shí)間(TD)積分項(xiàng)前值(MX)過程變量前值(PVn-1)=給定值(SPn)=輸出值(Mn)=過程變量當(dāng)前值(PVn)偏移地址048121620242832輸出值為PID計(jì)算值置給定值(SPn)=過程變量(PVn)置過程變量前值(PVn-1)=過程變量當(dāng)前值(PVn)置積分項(xiàng)前值(MX)=輸出值(Mn)3.回路輸入/輸出變量的數(shù)值轉(zhuǎn)換(1)回路輸入變量的轉(zhuǎn)換和標(biāo)準(zhǔn)化(2)回路輸出值轉(zhuǎn)換成刻度整數(shù)值偏移地址變量名數(shù)據(jù)類型變量類型描述4給定值(SPn)實(shí)數(shù)輸入必須在0.0~1.0之間8輸出值(Mn)實(shí)數(shù)輸入/輸出必須在0.0~1.0之間一個(gè)PID回路有兩個(gè)輸入變量,設(shè)定值和過程變量設(shè)定值和過程變量是實(shí)際物理量,PID指令操作之前,必須轉(zhuǎn)換成標(biāo)準(zhǔn)的浮點(diǎn)型實(shí)數(shù)。第一步:將實(shí)際物理數(shù)值從16位整數(shù)值轉(zhuǎn)換為浮點(diǎn)型實(shí)數(shù).程序:
MOVWAIW16,AC0ITDAC0,AC0//轉(zhuǎn)換輸入整數(shù)到雙字整數(shù)DTRAC0,AC0//轉(zhuǎn)換32位雙字整數(shù)到實(shí)數(shù)(1)回路輸入變量的轉(zhuǎn)換和標(biāo)準(zhǔn)化3.回路輸入變量的轉(zhuǎn)換和標(biāo)準(zhǔn)化
執(zhí)行PID指令前必須把給定值和過程變量轉(zhuǎn)換成標(biāo)準(zhǔn)的浮點(diǎn)型實(shí)數(shù)。
AIW16pv(t)pv(n)Sp(n)將過程變量PVn輸入值標(biāo)準(zhǔn)化為(0.0~1.0)的實(shí)數(shù),填入表中(VD100):INT→REAL→(0.0~1.0)回路輸入變量的數(shù)據(jù)轉(zhuǎn)換
INT→REAL
XORD AC0,AC0,清空累加器MOVW AIW16,AC0,把待變換的AIW16的模擬量(INT)存入累加器。LDW>= AC0,0 如果模擬量為正JMP 0 則直接轉(zhuǎn)成實(shí)數(shù)NOT 否則ORD 16#FFFF0000,AC0 先對(duì)AC0中的值進(jìn)行符號(hào)擴(kuò)展LBL 0 ITD AC0,AC0把16位整數(shù)轉(zhuǎn)換成雙字整數(shù)DTR AC0,AC0把雙字整數(shù)轉(zhuǎn)成實(shí)數(shù)第二步:
實(shí)數(shù)轉(zhuǎn)換為標(biāo)準(zhǔn)化的0.0和1.0之間的數(shù)值。下列公式用于標(biāo)準(zhǔn)化設(shè)定值或過程變量值:RNorm=(RRaw/Span+Offset)RNorm
:標(biāo)準(zhǔn)化的實(shí)數(shù)值RRaw
:未標(biāo)準(zhǔn)化的實(shí)數(shù)值Span(擴(kuò)展):是最大可能的數(shù)值減去最小可能的數(shù)值:對(duì)于單極數(shù)值(典型)=27648
對(duì)于雙極數(shù)值(典型)=55296Offset(偏移量):對(duì)單極性數(shù)值是0.0,對(duì)雙極性數(shù)值是0.5回路輸入變量的數(shù)據(jù)轉(zhuǎn)換與標(biāo)準(zhǔn)化
REAL→(0.0~1.0)
雙極性實(shí)數(shù)標(biāo)準(zhǔn)化的程序:(Span=55296)/R
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025咨詢服務(wù)的合同模板
- 箱變殼體合同范例
- 網(wǎng)絡(luò)經(jīng)營(yíng)咨詢合同范例
- pc構(gòu)建合同范例
- 借款合同范例示例范例
- 旅游招商引資合同范例
- 承攬合同中復(fù)制合同范例
- 銅陵職業(yè)技術(shù)學(xué)院《面向?qū)ο蠹夹g(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 銅陵職業(yè)技術(shù)學(xué)院《城市民族問題專題》2023-2024學(xué)年第一學(xué)期期末試卷
- 銅陵學(xué)院《英語(yǔ)教學(xué)法》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024-2025學(xué)年上海市虹口區(qū)高三一模地理試卷(含答案)
- 企業(yè)管理制度-薪酬管理制度
- 4.1.1陸地水體間的相互關(guān)系課件高中地理湘教版(2019)選擇性必修一
- 【MOOC】大學(xué)生心理學(xué)-中央財(cái)經(jīng)大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 外墻真石漆施工方案
- 計(jì)劃崗位培訓(xùn)課件
- 中藥涂擦治療
- 2024年廣西普法云平臺(tái)考試答案
- 2023-2024學(xué)年廣東省深圳市福田區(qū)八年級(jí)(上)期末英語(yǔ)試卷
- IATF16949體系推行計(jì)劃(任務(wù)清晰版)
- 2021年高考數(shù)學(xué)試卷(上海)(春考)(解析卷)
評(píng)論
0/150
提交評(píng)論