西門(mén)子S7-1200PLC模塊湖北代理商

西門(mén)子S7-300/400的數(shù)據(jù)比較指令
比較指令用來(lái)比較兩個(gè)具有相同數(shù)據(jù)類(lèi)型的數(shù),指令助記符中的I、D、R分別表示比較整數(shù)、雙整數(shù)和浮點(diǎn)數(shù)。表3-12中的“?”可以取==、<>、>、<、>=和<=。被比較數(shù)的數(shù)據(jù)類(lèi)型為I、Q、M、L、D或常數(shù)。
表3-12 比較指令
梯形圖中的方框比較指令(見(jiàn)圖3-92)相當(dāng)于一個(gè)常開(kāi)觸點(diǎn),可以與其他觸點(diǎn)串聯(lián)和并聯(lián)。比較指令框的使能輸入和使能輸出均為BOOL變量,可以取I、Q、M、L和D或常數(shù)。在使能輸入信號(hào)為1時(shí),比較IN1和IN2輸入的兩個(gè)操作數(shù)。如果被比較的兩個(gè)數(shù)滿(mǎn)足指令的條件,比較結(jié)果為“真”,等效觸點(diǎn)閉合。
圖3-92中的T0是接通延時(shí)定時(shí)器,I0.0的常開(kāi)觸點(diǎn)接通時(shí),T0開(kāi)始定時(shí),其剩余時(shí)間值從預(yù)置時(shí)間值2s開(kāi)始遞減。減至0時(shí),T0的Q輸出變?yōu)?/span>1狀態(tài),它的常閉觸點(diǎn)斷開(kāi),使它的Q輸出變?yōu)?/span>0狀態(tài),T0的常閉觸點(diǎn)閉合,又從預(yù)置時(shí)間值開(kāi)始定時(shí)。
T0的十六進(jìn)制剩余時(shí)間(單位為10ms)被寫(xiě)入MW14后,與常數(shù)80比較。剩余時(shí)間大于等于80(800 ms)時(shí),比較指令等效的觸點(diǎn)閉合,Q4.0的線圈通電,通電的時(shí)間為1. 2s(見(jiàn)圖3-93)。剩余時(shí)間小于80時(shí),比較指令等效的觸點(diǎn)斷開(kāi),Q4.0的線圈斷電0.8 s。
圖3-93 方波發(fā)生器的波形圖
語(yǔ)句表中的比較指令用于比較累加器1與累加器2中的數(shù)據(jù)大小,被比較的兩個(gè)數(shù)的數(shù)據(jù)類(lèi)型應(yīng)該相同=如果比較的條件滿(mǎn)足,則RLO為1,否則為0。狀態(tài)字的CC0和CC1位用來(lái)表示兩個(gè)數(shù)的大于、小于和等于關(guān)系。下面是圖3-92中的程序段3對(duì)應(yīng)的語(yǔ)句表程序:
L MW 14 //MW10中的整數(shù)裝入累加器1
L 80 //累加器1中的數(shù)據(jù)自動(dòng)裝入累加器2,80裝入累加器1
>=I //比較累加器1和累加器2的值
= Q 4.0 //如果MW10>=80,則Q4.0為1。
數(shù)據(jù)轉(zhuǎn)換指令將累加器1中的數(shù)據(jù)進(jìn)行數(shù)據(jù)類(lèi)型的轉(zhuǎn)換,轉(zhuǎn)換的結(jié)果仍然在累加器1。數(shù)據(jù)轉(zhuǎn)換指令見(jiàn)表3-13。
表3-13 數(shù)據(jù)轉(zhuǎn)換指令
語(yǔ)句表 | 梯形圖 | 描 述 |
BTI ITB BTD DTB DTR ITD RND RND + RND - TRUNC | BCD_I I_BCD BCD_DI DI_BCD DI_R I_DI ROUND CEIL FLOOR TRUNC | 將累加器1低字的3位BCD碼轉(zhuǎn)換成整數(shù) 將累加器1低字的整數(shù)轉(zhuǎn)換成3位BCD碼 將累加器1的7位BCD碼轉(zhuǎn)換成雙整數(shù) 將累加器1的雙整數(shù)轉(zhuǎn)換成7位BCD碼 將累加器1的雙整數(shù)轉(zhuǎn)換成浮點(diǎn)數(shù) 將累加器1低字的整數(shù)轉(zhuǎn)換成雙整數(shù) 將浮點(diǎn)數(shù)轉(zhuǎn)換為四舍五入的雙整數(shù) 將浮點(diǎn)數(shù)轉(zhuǎn)換為大于等于它的小雙整數(shù) 將浮點(diǎn)數(shù)轉(zhuǎn)換為小于等于它的大雙整數(shù) 將浮點(diǎn)數(shù)轉(zhuǎn)換為截位取整的雙整數(shù) |
CAW CAD | - - | 交換累加器1低字中兩個(gè)字節(jié)的位置 交換累加器1中4個(gè)字節(jié)的順 |
如果需要重復(fù)執(zhí)行若干次同樣的任務(wù),可以使用循環(huán)指令。循環(huán)指令LOOP <jump label>用累加器的低字作循環(huán)計(jì)數(shù)器,每次執(zhí)行LOOP指令時(shí)累加器低字的值減1,若減1后累加器的低字非0,將跳轉(zhuǎn)到LOOP指令的標(biāo)號(hào)處,在跳步目標(biāo)處又恢復(fù)線性程序掃描。跳步目標(biāo)號(hào)應(yīng)是的,跳步只能在同一個(gè)邏輯塊內(nèi)進(jìn)行。
【實(shí)例】 用循環(huán)指令和間接尋址求從MW60開(kāi)始存放的5個(gè)字的累加和。累加的結(jié)果用MD50保存,用臨時(shí)局部變量LD24作地址指針,LW32作循環(huán)次數(shù)計(jì)數(shù)器。
L L#0 //32位雙整數(shù)0裝入累加器1
1 MD 50 //將保存累加和的雙字清零
L P#60.0
T LD 24 //起始地址送地址指針
L 5 //將循環(huán)次數(shù)(需要累加的字的個(gè)數(shù))裝入累加器1的低字
BACK:T LW 32 //暫存循環(huán)計(jì)數(shù)值
L MW[LD 24] //取數(shù)據(jù),*次循環(huán)取的是MW60
ITD //轉(zhuǎn)換為雙整數(shù)
L MD 50 //取累加和
+D //累加
T MD 50 //保存累加和
L LD 24 //取地址指針值
L L#16
+D //地址值增加兩個(gè)字節(jié)(16位),指針指到下一個(gè)字
T LD 24 //保存地址指針值
L LW 32 //循環(huán)計(jì)數(shù)器值裝入累加器
LOOP BACK //若循環(huán)計(jì)數(shù)器值的內(nèi)容減1后非0,跳轉(zhuǎn)到標(biāo)號(hào)BACK
NOP 0
每次累加完成后,為了使地址指針指向下一個(gè)字,地址指針的值應(yīng)加16或加P#2.0(1個(gè)字由16位組成)。上面程序中的指令“L L#16”可改為“L P#2.0”,表示地址指針將增加兩個(gè)字節(jié)。如果是對(duì)字節(jié)進(jìn)行操作,每次循環(huán)地址指針應(yīng)加8或加P#1.0。如果是對(duì)雙字進(jìn)行操作,每次循環(huán)地址指針應(yīng)加32或加P#4.0。
圖3-91是用于驗(yàn)證程序的變量表,MD50中是MW60開(kāi)始的5個(gè)字的值的累加和:
圖3-91 變量表
西門(mén)子S7-1200PLC模塊湖北代理商