PLC(即Programmable Logic Controller的簡稱),又稱可編程邏輯控制器,是以微處理器、嵌入式芯片為基礎(chǔ),綜合了計(jì)算機(jī)技術(shù)、自動控制技術(shù)和通信技術(shù)發(fā)展而來的一種新型工業(yè)控制裝置,是工業(yè)控制的主要手段和重要的基礎(chǔ)設(shè)備之一。
在西門子工廠自動化系統(tǒng)中,最核心的就是PLC,它通過在現(xiàn)場層、控制層和管理層分別部署PLC的硬件產(chǎn)品和對應(yīng)軟件,實(shí)現(xiàn)了管理控制一體化。西門子目前主流的PLC產(chǎn)品為S7系列PLC,包括S7-200SMART、S7-1200、S7-300、S7-400、S7-1500等,具有外觀輕巧、速度敏捷、標(biāo)準(zhǔn)化程度高等特點(diǎn),同時借助優(yōu)秀的網(wǎng)絡(luò)通信能力和標(biāo)準(zhǔn),可以構(gòu)成復(fù)雜多變的控制系統(tǒng)。
本文主要介紹的就是S7-1200的一些基本指令應(yīng)用。
1.西門子S7-1200 PLC
如圖1-1所示,西門子S7-1200 PLC模塊包括CPU、電源、輸入信號處理回路、輸出信號處理回路、存儲區(qū)、RJ45端口和擴(kuò)展模塊接口。
圖1-1 S7-1200 PLC模塊
根據(jù)PLC的定義,S7-1200 PLC的本質(zhì)為一臺計(jì)算機(jī),負(fù)責(zé)系統(tǒng)程序的調(diào)度、管理、運(yùn)行和PLC的自診斷,負(fù)擔(dān)將用戶程序作出編譯解釋處理以及調(diào)度用戶目標(biāo)程序運(yùn)行的任務(wù)。
與之前西門子S7-200系列PLC模塊最大的區(qū)別在于它標(biāo)準(zhǔn)配置了以太網(wǎng)接口RJ45,并可以采用一根標(biāo)準(zhǔn)網(wǎng)線與安裝有博途軟件的PC進(jìn)行編程組態(tài)和工程應(yīng)用。
S7-1200 PLC系統(tǒng)的基本構(gòu)成
圖1-2所示為S7-1200 PLC系統(tǒng),它包括CPU模塊、SM信號模塊、CM通信模塊、電源模塊和其他附件。
圖1-2 S7-1200 PLC系統(tǒng)
2. S7-1200基本指令應(yīng)用
2.1位邏輯指令
位邏輯指令是實(shí)現(xiàn)PLC控制的基本指令,即按照一定的控制要求對“0”、“1” 兩個布爾操作數(shù)(BOOL)進(jìn)行邏輯組合,可以構(gòu)成“與”、“或”、“異或”等基本邏輯操作,也可以構(gòu)成“置位”、“復(fù)位”、“上升沿檢測”、“下降沿檢測”等復(fù)雜邏輯操作,并將其結(jié)果送入存儲器狀態(tài)字的邏輯操作結(jié)果(RLO)。
表2-1所示為常見的位邏輯指令匯總,主要包括觸點(diǎn)和線圈指令,具體說明如下:
(1)取反指令
取反指令(-| NOT|-、-( / )-)改變能流輸入的狀態(tài),將RLO的當(dāng)前值由0變1,或由1變0。如圖2-1中,左右母線是一個直流電源的正負(fù)極,左母線是接正極,右母線接負(fù)極,能流(電流)沿著梯形圖,從左母線流到右母線,形成一條回路。如果采用-( / )-線圈取反指令,如圖2-2所示,則輸出結(jié)果與圖2-1剛好相反。
圖2-1能流的概念
圖2-2 線圈取反指令
(2)邊沿檢測指令
邊沿信號在PLC程序中比較常見,如電動機(jī)的起動、停止、故障等信號的捕捉都是通過邊沿信號實(shí)現(xiàn)的。如圖2-3所示,上升沿檢測指令檢測每一次0 到1的正跳變,讓能流接通一一個掃描周期;下降沿檢測指令檢測每一次1到0的負(fù)跳變,讓能流接通一一個掃描周期。
圖2-3邊沿檢測示意
(3)置位/復(fù)位指令
當(dāng)觸發(fā)條件滿足(即RL0= 1)時,置位指令將一一個線圈置1;當(dāng)觸發(fā)條件不再滿足(即RLO=0)時,線圈值保持不變,只有觸發(fā)復(fù)位指令時才能將線圈值復(fù)位為0。單獨(dú)的復(fù)位指令也可以對定時器、計(jì)數(shù)器的值進(jìn)行清零。梯形圖編程指令中RS、SR觸發(fā)器帶有觸發(fā)優(yōu)先級,當(dāng)置位、復(fù)位信號同時為1時,將觸發(fā)優(yōu)先級高的動作,如RS觸發(fā)器,S (置位在后)優(yōu)先級高。
表2-1 位邏輯指令匯總
【實(shí)例2-1】用自鎖實(shí)現(xiàn)輸送帶起停控制
采用S7-1200 CPU1215C DC/DC/DC來進(jìn)行輸送帶啟停控制電路的設(shè)計(jì),即用啟動按鈕SB1控制輸送帶電動機(jī)運(yùn)行,帶動BOX物品從右向左運(yùn)行,當(dāng)達(dá)到到最右側(cè)的接近開關(guān)附近時,接近開關(guān)感應(yīng)到物品,輸送帶電動機(jī)停止;急停按鈕可以隨時按下來停止輸送帶電動機(jī);指示燈的運(yùn)行和停止指示與電動機(jī)的動作一致。請用自鎖控制來進(jìn)行梯形圖編程,并進(jìn)行程序編輯與下載。
圖2-4 輸送帶起??刂剖疽?/p>
1.[STEP1] 定義輸入輸出元件
輸送帶啟??刂粕婕鞍粹o、接近開關(guān)、電動機(jī)和指示燈等元件,表2-2所示為本實(shí)例的輸入輸出元件及控制功能。
表2-2 輸入輸出元件及控制功能
PLC軟元件 | 元件符號/名稱 | |
輸入 | I0.0 | SB1/啟動按鈕 |
I0.1 | SQ1/接近開關(guān) | |
I1.0 | SB2/急停按鈕(緊急停止) | |
輸出 | Q0.0 | KM/接觸器 |
Q0.1 | HL1/運(yùn)行指示 | |
Q0.2 | HL2/停止指示 |
2.[STEP2] 電氣接線
本實(shí)例采用S7-1200 PLC中的CPU1215C DC/DC/DC,具體接線圖如圖2-5所示。為了更加直觀反映輸入輸出情況,將電源部分略作修改后的接線圖如圖2-6所示(本書后續(xù)實(shí)例主要采用這種畫法)。
圖2-5 【實(shí)例2-1】接線圖
圖2-6 【實(shí)例2-1】接線簡化圖
3.[STEP3] PLC梯形圖編程
PLC的梯形圖編程方法可以采用傳統(tǒng)的“繼電器—接觸器”思路,如本實(shí)例中的“自鎖控制”方法,當(dāng)按下按鈕I0.0后,Q0.0線圈閉合;此時Q0.0的觸點(diǎn)動作,持續(xù)接通Q0.0線圈,形成自鎖控制。當(dāng)I1.0緊急停止動作或I0.1接近開關(guān)動作,Q0.0線圈斷開,自鎖失效。在編程中,還需要注意Q0.2輸出和Q0.1剛好相反,可以采用取反線圈實(shí)現(xiàn)。
圖2-7 輸送帶起停梯形圖
4.[STEP4] PLC調(diào)試
將圖2-7所示的梯形圖程序經(jīng)編譯下載到PLC后,可以進(jìn)行在線監(jiān)控如圖2-8所示。需要注意的是SB2急停按鈕在接線上是常閉觸電,因此在梯形圖編程中畫的是常開,正常情況實(shí)際的在線監(jiān)控也是接通的,只有當(dāng)按下急停按鈕后,I1.0信號才斷開。
圖2-8 在線監(jiān)控示意
2.2定時器與時鐘存儲器
2.2.1定時器種類
使用定時器指令用以創(chuàng)建可編程的延遲時間,表2-3所示為S7-1200的定時器指令,最常用的為如下4種定時器:
1)TP:脈沖定時器可生成具有預(yù)設(shè)寬度時間的脈沖。
2)TON:接通延遲定時器,輸出Q在預(yù)設(shè)的延時過后設(shè)置為ON。
3)TOF:關(guān)斷延遲定時器,輸出 Q在預(yù)設(shè)的延時過后重置為OFF。
4)TONR:保持型接通延遲定時器,輸出在預(yù)設(shè)的延時過后設(shè)置為ON。在使用 R 輸入重置經(jīng)過的時間之前,會跨越多個定時時段一直累加經(jīng)過的時間。
表2-3 定時器指令
2.2.2TON指令
TON指令就是接通延遲定時器輸出Q在預(yù)設(shè)的延時過后設(shè)置為ON,其指令形式如圖2-9所示,參數(shù)及其數(shù)據(jù)類型如表2-4所示。參數(shù)IN 從0 跳變?yōu)? 將啟動定時器TON。
圖2-9 TON指令
表2-4 TON參數(shù)及數(shù)據(jù)類型
PT(預(yù)設(shè)時間)和ET(經(jīng)過的時間)值以表示毫秒時間的有符號雙精度整數(shù)形式存儲在存儲器中(表2-5所示)。TIME 數(shù)據(jù)使用T# 標(biāo)識符,可以簡單時間單元“T#200ms”或復(fù)合時間單元“T#2s_200ms(或T#2s200ms)”的形式輸入。
表2-5 TIME數(shù)據(jù)類型
如圖2-10所示,在指令窗口中選擇“定時器操作”中的TON指令,并將之拖入到程序段中(圖2-11),這時就會跳出一個“調(diào)用數(shù)據(jù)塊”窗口,選擇自動編號,則會直接生成DB1數(shù)據(jù)塊;也可以選擇手動編號,根據(jù)用戶需要生成DB數(shù)據(jù)塊。
圖2-10 選擇TON定時器操作
圖2-11 TON指令調(diào)用數(shù)據(jù)塊
在項(xiàng)目樹的“程序塊”中,可以看到自動生成的IEC_Timer_0_DB[DB1]數(shù)據(jù)塊,生成后的TON指令調(diào)用如圖2-12所示。
圖2-12 TON指令調(diào)用示意
2.2.3TOF定時器
TOF關(guān)斷延時定時器指令的參數(shù)與TON相同,區(qū)別在于IN從1跳變?yōu)?將啟動定時器。
2.2.4TP脈沖定時器
TP脈沖定時器指令雖然參數(shù)格式與TON、TOF一致,但含義跟接通延時和斷電延時不同,它是在IN輸入從0跳變到1之后,立即輸出一個脈沖信號,其持續(xù)長度受PT值控制。
圖2-13 TP指令應(yīng)用
圖2-14所示為TP指令時序圖,從圖中可以看到:即使TON的IN信號還處于“1”狀態(tài),TP指令輸出Q在完成PT時長后,就不再保持為“1”;即使TON的IN信號為多個“脈沖”信號,輸出Q也能完成PT時長的脈沖寬度。
圖2-14 TP指令時序圖
2.2.5TONR時間累加器
TONR指令如圖2-15所示,與TON、TOF、TP相比增加了參數(shù)R,相關(guān)的參數(shù)及數(shù)據(jù)類型見表2-7。
圖2-15 TONR指令
表2-7 TONR參數(shù)及數(shù)據(jù)類型
圖2-16所示為TONR的時序圖,當(dāng)IN信號不連續(xù)輸入時,定時器ET的值一直在累計(jì),直到定時時間PT到,ET的值保持為PT值;當(dāng)R信號ON時,ET的值復(fù)位為零。
圖2-16 TONR時序圖
2.2.6系統(tǒng)和時鐘存儲器的選用
在報(bào)警指示中經(jīng)常會碰到“閃爍”的頻率概念,用TON等定時器可以完成,但更便捷的方式就是采用博途軟件自帶的PLC“系統(tǒng)和時鐘存儲器”。
在圖2-17中,選中PLC屬性中所示的“系統(tǒng)和時鐘存儲器",點(diǎn)擊右邊窗口的復(fù)選框“啟用系統(tǒng)存儲器字節(jié)”和“啟用時鐘存儲器字節(jié)”,采用默認(rèn)的MB1、MB0作為系統(tǒng)存儲器字節(jié)、時鐘存儲器字節(jié),也可以修改該2字節(jié)的地址。
圖2-17系統(tǒng)和時鐘存儲器
將MB1設(shè)置為系統(tǒng)存儲器字節(jié)后,該字節(jié)的M1.0~M1.3的意義如下:
● M1.0(FirstScan): 僅在進(jìn)入RUN模式的首次掃描時為1狀態(tài),以后為0狀態(tài)。
● M1.1(DiagStatusUpdate): 診斷狀態(tài)已更改。
● M1.2(Always TRUE): 總是為1狀態(tài),其常開觸點(diǎn)總是閉合或高電平。
● M1.3(Always FALSE); 總是為0狀態(tài),其常閉觸點(diǎn)總是閉合或低電平。
時鐘脈沖是一個周期內(nèi)0狀態(tài)和1狀態(tài)所占的時間各為50%的方波信號,以M0.5為例,其時鐘脈沖的周期為1s,如果用它的觸點(diǎn)來控制接在某輸出點(diǎn)的指示燈,指示燈將以1Hz的頻率閃動,亮0.5s、熄滅0.5s。
因?yàn)橄到y(tǒng)存儲器和時鐘存儲器不是保留的存儲器,用戶程序或通信可能改寫這些存儲單元,破壞其中的數(shù)據(jù)。應(yīng)避免改寫這兩個M字節(jié),保證它們的功能正常運(yùn)行。指定了系統(tǒng)存儲器和時鐘存儲器字節(jié)后,這些字節(jié)不能再作它用,否則將會使用戶程序運(yùn)行出錯,甚至造成設(shè)備損壞或人身傷害。
【實(shí)例2-2】用TON指令延時啟動電動機(jī)
某電動機(jī)在啟動按鈕SB1動作后10s之后才啟動,在停止按鈕SB2動作后立即停止,請用TON指令進(jìn)行編程。
1.[STEP1] 定義輸入輸出元件和電氣接線
表2-6所示的輸入元件包括SB1啟動按鈕和SB2停止按鈕,均采取常開觸點(diǎn)接線;輸出元件包括接觸器KM1。具體電氣接線如圖2-18所示。
表2-6 輸入輸出元件及控制功能
PLC軟元件 | 元件符號/名稱 | |
輸入 | I0.0 | SB1/啟動按鈕 |
I0.1 | SB2/停止按鈕 | |
輸出 | Q0.0 | KM/接觸器 |
圖2-18延時啟動電動機(jī)電氣接線
2.[STEP2] PLC梯形圖編程
圖2-19所示延時啟動電動機(jī)PLC梯形圖編程示意。
程序段1:對中間變量M10.1電動機(jī)起動信號定時10s,輸出為Q0.0。
程序段2:采用啟動按鈕和停止按鈕的SR觸發(fā)器,輸出為M10.1電動機(jī)起動信號,停止按鈕復(fù)位優(yōu)先。
需要注意的是:程序段1和2的位置對于本實(shí)例來說其先后次序不影響程序的正確執(zhí)行。
圖2-19 延時起動電動機(jī)梯形圖
3.[STEP3]調(diào)試
為了更好地理解TON指令,圖2-20所示為程序下載后的實(shí)時監(jiān)控,即在DB1中實(shí)時讀取當(dāng)前的延時時間,如T#3S_110MS。
圖2-20 TON指令實(shí)時監(jiān)控
【實(shí)例2-3】用TONR指令統(tǒng)計(jì)設(shè)備運(yùn)行時間
某設(shè)備所用的電動機(jī)在運(yùn)行100分鐘后要進(jìn)行計(jì)時到指示,以便于維護(hù)人員進(jìn)行停機(jī)檢查。請用TONR指令進(jìn)行編程。
1.[STEP1]定義輸入輸出元件和電氣接線
表2-8所示為統(tǒng)計(jì)設(shè)備運(yùn)行時間的輸入輸出元件及控制功能,包括3個輸入信號的按鈕和輸出接觸器、指示燈。電氣接線如圖2-21所示。
表2-8 輸入輸出元件及控制功能
PLC軟元件 | 元件符號/名稱 | |
輸入 | I0.0 | SB1/啟動按鈕 |
I0.1 | SB2/停止按鈕 | |
I0.2 | SB3/計(jì)時復(fù)位按鈕 | |
輸出 | Q0.0 | KM/接觸器 |
Q0.1 | HL1/運(yùn)行累計(jì)時間到指示 |
圖2-21 統(tǒng)計(jì)設(shè)備運(yùn)行時間電氣接線
2.[STEP2]PLC梯形圖編程
如圖2-22所示為統(tǒng)計(jì)設(shè)備運(yùn)行時間的梯形圖。
程序段1:調(diào)用TONR對輸入信號Q0.0(即接觸器KM1)進(jìn)行累計(jì)定時,100分鐘時間一到即輸出HL1指示燈Q0.1,該定時器可以通過SB3進(jìn)行復(fù)位。
程序段2:調(diào)用SR觸發(fā)器對輸入信號SB1進(jìn)行Q0.0置位、對停止按鈕SB2和運(yùn)行累計(jì)時間到信號HL1進(jìn)行Q0.0復(fù)位,其中復(fù)位優(yōu)先。
圖2-22 統(tǒng)計(jì)設(shè)備運(yùn)行時間梯形圖
【實(shí)例2-4】用時鐘存儲器來編程指示燈閃爍
如圖2-23所示的指示燈HL1有兩種閃爍方式,一種是當(dāng)SB1按下時進(jìn)行快閃,另外一種是當(dāng)SB2按下時進(jìn)行慢閃。當(dāng)兩個按鈕同時按下時,指示燈HL1滅掉,然后進(jìn)入待機(jī)狀態(tài),即按下SB1或SB2繼續(xù)處于兩種閃爍狀態(tài)。請用時鐘存儲器來進(jìn)行編程。
圖2-23 指示燈閃爍示意
1.[STEP1]定義輸入輸出元件和電氣接線
指示燈閃爍實(shí)例包括2個按鈕輸入和1個指示燈輸入見表2-9。電氣接線如圖2-24所示。
表2-8 輸入輸出元件及控制功能
PLC軟元件 | 元件符號/名稱 | |
輸入 | I0.0 | SB1/快閃按鈕 |
I0.1 | SB2/慢閃按鈕 | |
輸出 | Q0.0 | HL1/指示燈 |
圖2-24 指示燈閃爍電氣接線
2.[STEP2]PLC梯形圖編程
圖2-25所示為指示燈閃爍梯形圖,采用M0.2來作為快閃的時鐘存儲器、M0.7來作為慢閃的時鐘存儲器。
程序段1:按下SB1快閃按鈕,則置位快閃中間變量M10.0,復(fù)位慢閃中間變量M10.1。
程序段2:按下SB2慢閃按鈕,則置位慢閃中間變量M10.1,復(fù)位快閃中間變量M10.0。
程序段3:同時按下2個按鈕時,則復(fù)位%M10.0和M10.1,同時置位M10.2(即復(fù)位中間變量)。
程序段4:用2.5Hz表示快閃,用0.5Hz表示慢閃,在兩種狀態(tài)下輸出指示燈。
程序段5:在同時按下2個按鈕情況下,過2s后自動激活,運(yùn)行再次進(jìn)行慢閃或快閃動作。
圖2-25指示燈閃爍梯形圖
2.3 比較、運(yùn)算和移動指令
2.3.1 比較指令
表2-14所示為S7-1200共有10個常見的比較操作,用來比較數(shù)據(jù)類型相同的兩個數(shù)IN1與IN2的大小,其操作數(shù)可以是I/Q/M/L/D等存儲區(qū)中的變量或常量。當(dāng)滿足比較關(guān)系式給出的條件時,等效觸點(diǎn)接通。
表2-14比較指令
表2-15所示為等于、不等于、大于等于、小于等于、大于、小于等6種比較指令觸點(diǎn)的滿足條件,且要比較的兩個值必須為相同的數(shù)據(jù)類型。
表2-15比較指令觸點(diǎn)
這里以“等于”比較指令為例進(jìn)行說明:如圖2-26a所示可以使用“等于”指令確定第一個比較值(<操作數(shù)?1>)是否等于第二個比較值(<操作數(shù)2>)。比較器運(yùn)算指令可以通過指令右上角黃色三角的第一個選項(xiàng)來選擇等于、大于等于等比較器類型(圖2-26b),也可以通過右下角黃色三角的第二個選項(xiàng)來選擇數(shù)據(jù)類型,如整數(shù)、實(shí)數(shù)等(圖2-26c)。
圖2-26 比較器運(yùn)算指令
(1)CMP==:等于比較器:
可以使用“等于”指令判斷第一個比較值(<操作數(shù) 1>)是否等于第二個比較值(<操作數(shù) 2>)。如果滿足比較條件,則該指令返回邏輯運(yùn)算結(jié)果 (RLO)“1”。如果不滿足比較條件,則該指令返回 RLO“0”。
(2)CMP<>:不等于
使用“不等于”指令判斷第一個比較值(<操作數(shù) 1>)是否不等于第二個比較值(<操作數(shù) 2>)。如果滿足比較條件,則該指令返回邏輯運(yùn)算結(jié)果 (RLO)“1”。如果不滿足比較條件,則該指令返回 RLO“0”。
(3)CMP>=:大于或等于
可以使用“大于或等于”指令判斷第一個比較值(<操作數(shù) 1>)是否大于或等于第二個比較值(<操作數(shù) 2>)。如果滿足比較條件,則該指令返回邏輯運(yùn)算結(jié)果 (RLO)“1”。如果不滿足比較條件,則該指令返回 RLO“0”。
(4)CMP<=:小于或等于
可以使用“小于或等于”指令判斷第一個比較值(<操作數(shù) 1>)是否小于或等于第二個比較值(<操作數(shù) 2>)。如果滿足比較條件,則該指令返回邏輯運(yùn)算結(jié)果 (RLO)“1”。如果不滿足比較條件,則該指令返回 RLO“0”。
(5)CMP>:大于
可以使用“大于”指令確定第一個比較值(<操作數(shù) 1>)是否大于第二個比較值(<操作數(shù) 2>)。如果滿足比較條件,則該指令返回邏輯運(yùn)算結(jié)果 (RLO)“1”。如果不滿足比較條件,則該指令返回 RLO“0”。
(6)CMP<:小于
可以使用“小于”指令判斷第一個比較值(<操作數(shù) 1>)是否小于第二個比較值(<操作數(shù) 2>)。如果滿足比較條件,則該指令返回邏輯運(yùn)算結(jié)果 (RLO)“1”。如果不滿足比較條件,則該指令返回 RLO為“0”。
除了上述的常見比較指令之外,還有其他變量比較指令,其類型與說明如表2-14所示。
表2-14 變量比較類型與說明
2.3.2 移動指令
移動指令是將數(shù)據(jù)元素復(fù)制到新的存儲器地址,并從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型,移動過程中不更改源數(shù)據(jù)
1.MOVE移動值
如圖2-27可以使用“移動值”指令將 IN 輸入操作數(shù)中的內(nèi)容傳送給 OUT1 輸出的操作數(shù)中。始終沿地址升序方向進(jìn)行傳送。如果使能輸入 EN 的信號狀態(tài)為“0”或IN 參數(shù)的數(shù)據(jù)類型與 OUT1 參數(shù)的指定數(shù)據(jù)類型不對應(yīng)時,則使能輸出 ENO 的信號狀態(tài)為“0”
圖2-27 MOVE指令
表2-15 MOVE指令可傳送的類型
在MOVE指令中,若IN 輸入端數(shù)據(jù)類型的位長度超出了OUT1 輸出端數(shù)據(jù)類型的位長度,則傳送源值中多出來的有效位會丟失。若 IN 輸入端數(shù)據(jù)類型的位長度小于 OUT1 輸出端數(shù)據(jù)類型的位長度,則用零填充傳送目標(biāo)值中多出來的有效位。
在初始狀態(tài),指令框中包含 1 個輸出(OUT1),可以鼠標(biāo)點(diǎn)擊圖符擴(kuò)展輸出數(shù)目。在該指令框中,應(yīng)按升序順序排列所添加的輸出端。執(zhí)行該指令時,將 IN 輸入端操作數(shù)中的內(nèi)容發(fā)送到所有可用的輸出端。如果傳送結(jié)構(gòu)化數(shù)據(jù)類型(DTL, STRUCT, ARRAY) 或字符串(STRING)的字符,則無法擴(kuò)展指令框。可以輸出多個地址OUT1、OUT2、OUT3等,如圖2-28所示。
圖2-28 MOVE指令的多個變量輸出
2.MOVE_BLK指令
如圖2-29所示,使用“MOVE_BLK塊移動”指令,可將存儲區(qū)(源區(qū)域)的內(nèi)容移動到其他存儲區(qū)(目標(biāo)區(qū)域)。使用參數(shù) COUNT 可以指定待復(fù)制到目標(biāo)區(qū)域中的元素個數(shù)。可通過 IN 輸入端的元素寬度來指定待復(fù)制元素的寬度。并按地址升序順序執(zhí)行復(fù)制操作。
圖2-29 MOVE_BLK指令
3.UMOVE_BLK無中斷塊移動
使用圖2-30所示的“UMOVE_BLK無中斷塊移動”指令,可將存儲區(qū)(源區(qū)域)的內(nèi)容連續(xù)復(fù)制到其他存儲區(qū)(目標(biāo)區(qū)域)。使用參數(shù) COUNT 可以指定待復(fù)制到目標(biāo)區(qū)域中的元素個數(shù)。可通過 IN 輸入端的元素寬度來指定待復(fù)制元素的寬度。源區(qū)域內(nèi)容沿地址升序方向復(fù)制到目標(biāo)區(qū)域。
圖2-30 UMOVE_BLK指令
4.FILL_BLK填充塊
圖2-31所示的“FILL_BLK填充塊”指令,用IN 輸入的值填充一個存儲區(qū)域(目標(biāo)區(qū)域)。將以 OUT 輸出指定的起始地址,填充目標(biāo)區(qū)域??梢允褂脜?shù) COUNT 指定復(fù)制操作的重復(fù)次數(shù)。執(zhí)行該指令時,將選擇 IN 輸入的值,并復(fù)制到目標(biāo)區(qū)域 COUNT 參數(shù)中指定的次數(shù)。
圖2-31FILL_BLK填充塊
5.SWAP交換指令
“SWAP交換”指令可以更改輸入IN 中字節(jié)的順序,并在輸出OUT 中查詢結(jié)果。圖2-32說明了如何使用“交換”指令交換數(shù)據(jù)類型為DWORD 的操作數(shù)的字節(jié)。表2-15所示為SWAP指令的參數(shù)。
圖2-32 SWAP交換數(shù)據(jù)類型為DWORD的示意
表2-15 SWAP指令的參數(shù)
2.3.3 數(shù)學(xué)運(yùn)算指令
在數(shù)學(xué)運(yùn)算指令中,ADD、SUB、MUL和DIV分別是加、減、乘、除指令,其操作數(shù)的數(shù)據(jù)類型可選SInt、Int、Dint、USInt、UInt、UDInt和Real。在運(yùn)算過程中,操作數(shù)的數(shù)據(jù)類型應(yīng)該相同。
1.加法ADD指令
加法ADD指令可以從TIA軟件右邊指令窗口的“基本指令”下的“數(shù)學(xué)函數(shù)”中直接添加(圖2-33a所示)。使用“ADD”指令,根據(jù)圖2-33b選選擇的數(shù)據(jù)類型,將輸入 IN1 的值與輸入 IN2 的值相加,并在輸出 OUT (OUT = IN1+IN2)處查詢總和。
圖2-33 ADD指令
在初始狀態(tài)下,指令框中至少包含兩個輸入(IN1 和IN2),可以鼠標(biāo)點(diǎn)擊圖符擴(kuò)展輸入數(shù)目(圖2-33c),在功能框中按升序?qū)Σ迦氲妮斎脒M(jìn)行編號,執(zhí)行該指令時,將所有可用輸入?yún)?shù)的值相加,并將求得的和存儲在輸出OUT 中。
表2-16列出了“ADD”指令的參數(shù)。根據(jù)參數(shù)說明,只有使能輸入EN 的信號狀態(tài)為“1”時,才執(zhí)行該指令。如果成功執(zhí)行該指令,使能輸出ENO 的信號狀態(tài)也為“1”。如果滿足下列條件之一,則使能輸出 ENO 的信號狀態(tài)為“0”:
●使能輸入EN的信號狀態(tài)為“0”。
●指令結(jié)果超出輸出 OUT 指定的數(shù)據(jù)類型的允許范圍。
●浮點(diǎn)數(shù)具有無效值。
表2-16 ADD指令的參數(shù)
圖2-34中舉例說明了ADD指令的工作原理:如果操作數(shù)I0.0的信號狀態(tài)為“1”,則將執(zhí)行“加”指令,將操作數(shù)IW64的值與IW66的值相加,并將相加的結(jié)果存儲在操作數(shù)MW0中。如果該指令執(zhí)行成功,則使能輸出 ENO 的信號狀態(tài)為“1”,同時置位輸出Q0.0。
圖2-34ADD指令應(yīng)用
2.減法SUB指令
如圖2-35所示,可以使用減法SUB指令從輸入IN1 的值中減去輸入IN2 的值并在輸出OUT (OUT = IN1-IN2)處查詢差值。SUB指令的參數(shù)與ADD指令相同。
圖2-35 SUB指令
圖2-36中舉例說明了SUB指令的工作原理:如果操作數(shù)I0.0的信號狀態(tài)為“1”,則將執(zhí)行“減”指令,將操作數(shù)IW64的值減去IW66的值,并將結(jié)果存儲在操作數(shù)MW0中。如果該指令執(zhí)行成功,則使能輸出 ENO 的信號狀態(tài)為“1”,同時置位輸出Q0.0。
圖2-36 SUB指令應(yīng)用
3.乘法MUL指令
如圖2-37所示,可以使用乘法MUL指令將輸入IN1 的值乘以輸入IN2 的值,并在輸出OUT (OUT = IN1*IN2)處查詢乘積。同ADD指令一樣,可以在指令功能框中展開輸入的數(shù)字,并在功能框中以升序?qū)ο嗉拥妮斎脒M(jìn)行編號。表2-27為MUL指令的參數(shù)。
圖2-37MUL指令
表2-17 MUL指令的參數(shù)
圖2-38舉例說明了MUL指令的工作原理:如果操作數(shù)I0.0的信號狀態(tài)為“1”,則將執(zhí)行“乘”指令。將操作數(shù)IW64的值中乘以操作數(shù)IN2常數(shù)值“4”,相乘的結(jié)果存儲在操作數(shù)MW20中。如果成功執(zhí)行該指令,則輸出 ENO 的信號狀態(tài)為“1”,并將置位輸出Q0.0。
圖2-38MUL指令應(yīng)用
4.除法DIV和返回除法余數(shù)MOD指令
除法DIV和返回除法余數(shù)MOD指令如圖2-39所示,前者是返回除法的商,后者是余數(shù)。需要注意的是,MOD指令只有在整數(shù)相除時才能應(yīng)用。
圖2-39 DIV和MOD指令
圖2-40舉例說明了DIV和MOD指令的工作原理:如果操作數(shù)I0.0的信號狀態(tài)為“1”,則將執(zhí)行DIV指令。將操作數(shù)IW64的值中除以操作數(shù)IN2常數(shù)值“4”,商存儲在操作數(shù)MW20中,余數(shù)則存儲在操作數(shù)MW30中。
圖2-40 DIV和MOD指令的應(yīng)用
除了上述運(yùn)算指令之外,還有MOD、NEG、INC、DEC和ABS等數(shù)學(xué)運(yùn)算指令,具體說明如下:
1)MOD指令:除法指令只能得到商,余數(shù)被丟掉,MOD指令可以用來求除法的余數(shù)。
2)NEG指令:將輸入IN的值取反,保存在OUT中。
3)INC和DEC指令:參數(shù)IN/OUT的值分別加1和減1。
4)絕對值指令A(yù)BS:求輸入IN中有符號整數(shù)或?qū)崝?shù)的絕對值。
對于浮點(diǎn)數(shù)函數(shù)運(yùn)算,其梯形圖和對應(yīng)的描述如表2-18中所示,需要注意的是,三角函數(shù)和反三角函數(shù)指令中的角度均為以弧度為單位的浮點(diǎn)數(shù)。
表2-18 浮點(diǎn)數(shù)函數(shù)運(yùn)算
2.3.4 其他數(shù)據(jù)指令
1.轉(zhuǎn)換操作指令
如果在一個指令中包含多個操作數(shù),必須確保這些數(shù)據(jù)類型是兼容的。如果操作數(shù)不是同一數(shù)據(jù)類型,則必須進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換方式有兩種。
(1)隱式轉(zhuǎn)換
如果操作數(shù)的數(shù)據(jù)類型是兼容的,由系統(tǒng)按照統(tǒng)一的規(guī)則自動執(zhí)行隱式轉(zhuǎn)換??梢愿鶕?jù)設(shè)定的嚴(yán)格或較寬松的條件來進(jìn)行兼容性檢測,例如塊屬性中缺省的設(shè)置為執(zhí)行IEC檢測,這樣自動轉(zhuǎn)換的數(shù)據(jù)類型相對要少。編程語言LAD、FBD、SCL和GRAPH支持隱式轉(zhuǎn)換。STL 編程語言不支持隱式轉(zhuǎn)換。
(2)顯式轉(zhuǎn)換
如果操作數(shù)的數(shù)據(jù)類型不兼容或者由編程人員設(shè)定轉(zhuǎn)換規(guī)則時,則可以進(jìn)行顯式轉(zhuǎn)換(不是所有的數(shù)據(jù)類型都支持顯式轉(zhuǎn)換),顯式轉(zhuǎn)換的指令參考表2-19。
表2-19 轉(zhuǎn)換操作指令與說明
2.移位和循環(huán)指令
LAD移位指令可以將輸入?yún)?shù)IN中的內(nèi)容向左或向右逐位移動;循環(huán)指令可以將輸入?yún)?shù)IN中的全部內(nèi)容循環(huán)地逐位左移或右移,空出的位用輸入IN移出位的信號狀態(tài)填充。該指令可以對8、16、 32以及64位的字或整數(shù)進(jìn)行操作,移位和循環(huán)指令參考表2-20。
表2-20 移位和循環(huán)指令與說明
字移位指令移位的范圍為0~15,雙字移位指令移位的范圍為0~31,長字移位指令移位的范圍為0~63。對于字、雙字和長字移位指令,移出的位信號丟失,移空的位使用0補(bǔ)足。例如將一個字左移6位,移位前后位排列次序如圖2-41所示。
圖2-41 左移6位
帶有符號位的整數(shù)移位范圍為0~15;雙整數(shù)移位范圍為0~31;長整數(shù)移位指令移位的范圍為0~63。移位方向只能向右移,移出的位信號失,移空的位使用符號位補(bǔ)足。如整數(shù)為負(fù)值,符號位為1;整數(shù)為正值,符號位為0。例如將-個整數(shù)右移4位, 移位前后位排列次序如圖2-42所示。
圖2-42 右移4位
3.字邏輯運(yùn)算指令
LAD字邏輯指令可以對BYTE (字節(jié))、WORD (字)、DWORD ( 雙字)或LWORD(長字)逐位進(jìn)行“與”、“或”、“異或”邏輯運(yùn)算操作?!芭c”操作可以判斷兩個變量在相同的位數(shù)上有多少位為1,通常用于變量的過濾,例如一個字變量與常數(shù)W#16#00FF相“與”,則可以將字變量中的高字節(jié)過濾為0;“或”操作可以判斷兩個變量中為1位的個數(shù);“異或”操作可以判斷兩個變量有多少位不相同。字邏輯指令還包含編碼解碼等操作。字邏輯指令參考表2-31所示。
表2-21 字邏輯運(yùn)算指令與說明
【實(shí)例2-5】用比較指令來實(shí)現(xiàn)交通燈控制
某紅綠燈控制時序圖如圖2-43所示,在按鈕SB1啟動之后,紅燈先亮6s,然后綠燈亮6s,最后黃燈閃爍4s;反復(fù)循環(huán),直至按鈕SB2停止。請用PLC進(jìn)行編程。
圖2-43交通燈控制時序圖
1.[STEP1]定義輸入輸出元件和電氣接線
表2-22所示是交通燈I/O表,其電氣接線如圖2-44所示。
表2-22 交通燈I/O表
輸入 | 說明 | 輸出 | 說明 |
I0.0 | 按鈕SB1 | Q0.0 | 紅燈HL1 |
I0.1 | 按鈕SB2 | Q0.1 | 綠燈HL2 |
Q0.2 | 黃燈HL3 |
圖2-44 交通燈控制電氣接線
2.[STEP2]程序編寫
圖2-45所示為交通燈控制MD20的時序圖,主要采用了定時器數(shù)值的區(qū)間數(shù)據(jù)比較指令,即0-6s之間為紅燈,6s-12s之間是綠燈,12s之后是4s閃爍黃燈;依次循環(huán)。選用TONR的原因,是因?yàn)橛袕?fù)位參數(shù),而其他計(jì)數(shù)器均沒有。
圖2-45 MD20時序圖
本實(shí)例重要的進(jìn)行時間TIME與DINT的轉(zhuǎn)換,這里采用CONV指令,在圖2-46所示的程序段3中將定時器的時間值轉(zhuǎn)為雙整數(shù)MD20。
圖2-46紅綠燈控制梯形圖
來源:機(jī)工電氣
審核編輯:湯梓紅
-
控制器
+關(guān)注
關(guān)注
112文章
16418瀏覽量
178791 -
plc
+關(guān)注
關(guān)注
5014文章
13347瀏覽量
464445 -
西門子
+關(guān)注
關(guān)注
94文章
3056瀏覽量
116153 -
指令
+關(guān)注
關(guān)注
1文章
608瀏覽量
35780 -
S7-1200
+關(guān)注
關(guān)注
11文章
331瀏覽量
18028
原文標(biāo)題:西門子S7-1200 PLC的基本指令有哪些?五個應(yīng)用實(shí)例輕松入門
文章出處:【微信號:跟我學(xué)PLC,微信公眾號:跟我學(xué)PLC吧】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論