加入收藏 在線留言 聯系我們
        關注微信
        手機掃一掃 立刻聯系商家
        全國服務熱線17838383235

        6SL3210-1KE31-4AF1現貨西門子代理

        更新時間
        2024-10-30 14:14:21
        價格
        請來電詢價
        西門子
        G120C
        變頻器
        75KW內置A級濾波版
        德國
        3AC 380-480V濾波A級
        聯系電話
        17838383235
        聯系手機
        17838383235
        聯系人
        徐嘉泉
        立即詢價

        詳細介紹
        全是干貨 | 西門子S7-1200 PLC的基本指令有哪些?五個應用實例輕松入門


        PLC(即Programmable Logic Controller的簡稱),又稱可編程邏輯控制器,是以微處理器、嵌入式芯片為基礎,綜合了計算機技術、自動控制技術和通信技術發展而來的一種新型工業控制裝置,是工業控制的主要手段和重要的基礎設備之一。

        在西門子工廠自動化系統中,核心的就是PLC,它通過在現場層、控制層和管理層分別部署PLC的硬件產品和對應軟件,實現了管理控制一體化。西門子目前主流的PLC產品為S7系列PLC,包括S7-200SMART、S7-1200、S7-300、S7-400、S7-1500等,具有外觀輕巧、速度敏捷、標準化程度高等特點,同時借助的網絡通信能力和標準,可以構成復雜多變的控制系統。

        本文主要介紹的就是S7-1200的一些基本指令應用。

        1. 西門子S7-1200 PLC

        如圖1-1所示,西門子S7-1200 PLC模塊包括CPU、電源、輸入信號處理回路、輸出信號處理回路、存儲區、RJ45端口和擴展模塊接口。

        圖1-1 S7-1200 PLC模塊

        根據PLC的定義,S7-1200 PLC的本質為一臺計算機,負責系統程序的調度、管理、運行和PLC的自診斷,負擔將用戶程序作出編譯解釋處理以及調度用戶目標程序運行的任務。

        與之前西門子S7-200系列PLC模塊大的區別在于它標準配置了以太網接口RJ45,并可以采用一根標準網線與安裝有博途軟件的PC進行編程組態和工程應用。

        S7-1200 PLC系統的基本構成

        圖1-2所示為S7-1200 PLC系統,它包括CPU模塊、SM信號模塊、CM通信模塊、電源模塊和其他附件。

        圖1-2 S7-1200 PLC系統

        2. S7-1200基本指令應用

        2.1 位邏輯指令

        位邏輯指令是實現PLC控制的基本指令,即按照一定的控制要求對“0”、“1” 兩個布爾操作數(BOOL)進行邏輯組合,可以構成“與”、“或”、“異或”等基本邏輯操作,也可以構成“置位”、“復位”、“上升沿檢測”、“下降沿檢測”等復雜邏輯操作,并將其結果送入存儲器狀態字的邏輯操作結果(RLO)。

        表2-1所示為常見的位邏輯指令匯總,主要包括觸點和線圈指令,具體說明如下:

        (1)取反指令

        取反指令(-| NOT|-、-( / )-)改變能流輸入的狀態,將RLO的當前值由0變1,或由1變0。如圖2-1中,左右母線是一個直流電源的正負極,左母線是接正極,右母線接負極,能流(電流)沿著梯形圖,從左母線流到右母線,形成一條回路。如果采用-( / )-線圈取反指令,如圖2-2所示,則輸出結果與圖2-1剛好相反。

        圖2-1能流的概念

        圖2-2 線圈取反指令

        (2)邊沿檢測指令

        邊沿信號在PLC程序中比較常見,如電動機的起動、停止、故障等信號的捕捉都是通過邊沿信號實現的。如圖2-3所示,上升沿檢測指令檢測每一次0 到1的正跳變,讓能流接通一一個掃描周期;下降沿檢測指令檢測每一次1到0的負跳變,讓能流接通一一個掃描周期。

        圖2-3邊沿檢測示意

        (3)置位/復位指令

        當觸發條件滿足(即RL0= 1)時,置位指令將一一個線圈置1;當觸發條件不再滿足(即RLO=0)時,線圈值保持不變,只有觸發復位指令時才能將線圈值復位為0。單獨的復位指令也可以對定時器、計數器的值進行清零。梯形圖編程指令中RS、SR觸發器帶有觸發優先級,當置位、復位信號同時為1時,將觸發優先級高的動作,如RS觸發器,S (置位在后)優先級高。

        表2-1 位邏輯指令匯總



        【實例2-1】用自鎖實現輸送帶起??刂?nbsp;

        采用S7-1200 CPU1215C DC/DC/DC來進行輸送帶啟停控制電路的設計,即用啟動按鈕SB1控制輸送帶電動機運行,帶動BOX物品從右向左運行,當達到到右側的接近開關附近時,接近開關感應到物品,輸送帶電動機停止;急停按鈕可以隨時按下來停止輸送帶電動機;指示燈的運行和停止指示與電動機的動作一致。請用自鎖控制來進行梯形圖編程,并進行程序編輯與下載。

        圖2-4 輸送帶起??刂剖疽?/p>

        1.[STEP1]  定義輸入輸出元件

        輸送帶啟??刂粕婕鞍粹o、接近開關、電動機和指示燈等元件,表2-2所示為本實例的輸入輸出元件及控制功能。

                    表2-2 輸入輸出元件及控制功能


        PLC軟元件

        元件符號/名稱

        輸入

        I0.0

        SB1/啟動按鈕

        I0.1

        SQ1/接近開關

        I1.0

        SB2/急停按鈕(緊急停止)

        輸出

        Q0.0

        KM/接觸器

        Q0.1

        HL1/運行指示

        Q0.2

        HL2/停止指示


        2.[STEP2] 電氣接線

        本實例采用S7-1200 PLC中的CPU1215C DC/DC/DC,具體接線圖如圖2-5所示。為了更加直觀反映輸入輸出情況,將電源部分略作修改后的接線圖如圖2-6所示(本書后續實例主要采用這種畫法)。

        圖2-5 【實例2-1】接線圖

        圖2-6 【實例2-1】接線簡化圖

        3.[STEP3] PLC梯形圖編程

        PLC的梯形圖編程方法可以采用傳統的“繼電器—接觸器”思路,如本實例中的“自鎖控制”方法,當按下按鈕I0.0后,Q0.0線圈閉合;此時Q0.0的觸點動作,持續接通Q0.0線圈,形成自鎖控制。當I1.0緊急停止動作或I0.1接近開關動作,Q0.0線圈斷開,自鎖失效。在編程中,還需要注意Q0.2輸出和Q0.1剛好相反,可以采用取反線圈實現。

        圖2-7 輸送帶起停梯形圖

        4.[STEP4] PLC調試

        將圖2-7所示的梯形圖程序經編譯下載到PLC后,可以進行在線監控如圖2-8所示。需要注意的是SB2急停按鈕在接線上是常閉觸電,因此在梯形圖編程中畫的是常開,正常情況實際的在線監控也是接通的,只有當按下急停按鈕后,I1.0信號才斷開。

        圖2-8 在線監控示意


        2.2 定時器與時鐘存儲器

        2.2.1 定時器種類

        使用定時器指令用以創建可編程的延遲時間,表2-3所示為S7-1200的定時器指令,常用的為如下4種定時器:

        1)TP:脈沖定時器可生成具有預設寬度時間的脈沖。

        2)TON:接通延遲定時器,輸出Q在預設的延時過后設置為ON。

        3)TOF:關斷延遲定時器,輸出 Q在預設的延時過后重置為OFF。

        4)TONR:保持型接通延遲定時器,輸出在預設的延時過后設置為ON。在使用 R 輸入重置經過的時間之前,會跨越多個定時時段一直累加經過的時間。

        表2-3 定時器指令

        2.2.2 TON指令

        TON指令就是接通延遲定時器輸出Q在預設的延時過后設置為ON,其指令形式如圖2-9所示,參數及其數據類型如表2-4所示。參數 IN 從 0 跳變為 1 將啟動定時器TON。

        圖2-9 TON指令

        表2-4 TON參數及數據類型


        PT(預設時間)和 ET(經過的時間)值以表示毫秒時間的有符號雙精度整數形式存儲在存儲器中(表2-5所示)。TIME 數據使用 T# 標識符,可以簡單時間單元“T#200ms”或復合時間單元“T#2s_200ms(或T#2s200ms)”的形式輸入。

        表2-5 TIME數據類型

         

        如圖2-10所示,在指令窗口中選擇“定時器操作”中的TON指令,并將之拖入到程序段中(圖2-11),這時就會跳出一個“調用數據塊”窗口,選擇自動編號,則會直接生成DB1數據塊;也可以選擇手動編號,根據用戶需要生成DB數據塊。

        圖2-10 選擇TON定時器操作

        圖2-11  TON指令調用數據塊

        在項目樹的“程序塊”中,可以看到自動生成的IEC_Timer_0_DB[DB1]數據塊,生成后的TON指令調用如圖2-12所示。

        圖2-12 TON指令調用示意

        2.2.3 TOF定時器

        TOF關斷延時定時器指令的參數與TON相同,區別在于IN 從1 跳變為 0 將啟動定時器。

        2.2.4 TP脈沖定時器

        TP脈沖定時器指令雖然參數格式與TON、TOF一致,但含義跟接通延時和斷電延時不同,它是在IN輸入從0跳變到1之后,立即輸出一個脈沖信號,其持續長度受PT值控制。

        圖2-13 TP指令應用

        圖2-14所示為TP指令時序圖,從圖中可以看到:即使TON的IN信號還處于“1”狀態,TP指令輸出Q在完成PT時長后,就不再保持為“1”;即使TON的IN信號為多個“脈沖”信號,輸出Q也能完成PT時長的脈沖寬度。

        圖2-14 TP指令時序圖

        2.2.5 TONR時間累加器

        TONR指令如圖2-15所示,與TON、TOF、TP相比增加了參數R,相關的參數及數據類型見表2-7。

        圖2-15 TONR指令

        表2-7 TONR參數及數據類型

         

        圖2-16所示為TONR的時序圖,當IN信號不連續輸入時,定時器ET的值一直在累計,直到定時時間PT到,ET的值保持為PT值;當R信號ON時,ET的值復位為零。

        圖2-16 TONR時序圖

        2.2.6系統和時鐘存儲器的選用

        在報警指示中經常會碰到“閃爍”的頻率概念,用TON等定時器可以完成,但更便捷的方式就是采用博途軟件自帶的PLC“系統和時鐘存儲器”。

        在圖2-17中,選中PLC屬性中所示的“系統和時鐘存儲器",點擊右邊窗口的復選框“啟用系統存儲器字節”和“啟用時鐘存儲器字節”,采用默認的MB1、MB0作為系統存儲器字節、時鐘存儲器字節,也可以修改該2字節的地址。

        圖2-17系統和時鐘存儲器

        將MB1設置為系統存儲器字節后,該字節的M1.0~M1.3的意義如下:

        ● M1.0(FirstScan): 僅在進入RUN模式的掃描時為1狀態,以后為0狀態。

        ● M1.1(DiagStatusUpdate): 診斷狀態已更改。

        ● M1.2(Always TRUE): 總是為1狀態,其常開觸點總是閉合或高電平。

        ● M1.3(Always FALSE); 總是為0狀態,其常閉觸點總是閉合或低電平。

        時鐘脈沖是一個周期內0狀態和1狀態所占的時間各為50%的方波信號,以M0.5為例,其時鐘脈沖的周期為1s,如果用它的觸點來控制接在某輸出點的指示燈,指示燈將以1Hz的頻率閃動,亮0.5s、熄滅0.5s。

        因為系統存儲器和時鐘存儲器不是保留的存儲器,用戶程序或通信可能改寫這些存儲單元,破壞其中的數據。應避免改寫這兩個M字節,保證它們的功能正常運行。指定了系統存儲器和時鐘存儲器字節后,這些字節不能再作它用,否則將會使用戶程序運行出錯,甚至造成設備損壞或人身傷害。


        【實例2-2】用TON指令延時啟動電動機

        某電動機在啟動按鈕SB1動作后10s之后才啟動,在停止按鈕SB2動作后立即停止,請用TON指令進行編程。

        1.[STEP1]  定義輸入輸出元件和電氣接線

        表2-6所示的輸入元件包括SB1啟動按鈕和SB2停止按鈕,均采取常開觸點接線;輸出元件包括接觸器KM1。具體電氣接線如圖2-18所示。

        表2-6 輸入輸出元件及控制功能


        PLC軟元件

        元件符號/名稱

        輸入

        I0.0

        SB1/啟動按鈕

        I0.1

        SB2/停止按鈕

        輸出

        Q0.0

        KM/接觸器

         

        圖2-18 延時啟動電動機電氣接線

        2.[STEP2] PLC梯形圖編程

        圖2-19所示延時啟動電動機PLC梯形圖編程示意。

        程序段1:對中間變量M10.1電動機起動信號定時10s,輸出為Q0.0。

        程序段2:采用啟動按鈕和停止按鈕的SR觸發器,輸出為M10.1電動機起動信號,停止按鈕復位優先。

        需要注意的是:程序段1和2的位置對于本實例來說其先后次序不影響程序的正確執行。 

        圖2-19 延時起動電動機梯形圖

        3.[STEP3]調試

        為了更好地理解TON指令,圖2-20所示為程序下載后的實時監控,即在DB1中實時讀取當前的延時時間,如T#3S_110MS。

        圖2-20 TON指令實時監控


        【實例2-3】用TONR指令統計設備運行時間

        某設備所用的電動機在運行100分鐘后要進行計時到指示,以便于維護人員進行停機檢查。請用TONR指令進行編程。

        1.[STEP1]定義輸入輸出元件和電氣接線

        表2-8所示為統計設備運行時間的輸入輸出元件及控制功能,包括3個輸入信號的按鈕和輸出接觸器、指示燈。電氣接線如圖2-21所示。

        表2-8 輸入輸出元件及控制功能


        PLC軟元件

        元件符號/名稱

        輸入

        I0.0

        SB1/啟動按鈕

        I0.1

        SB2/停止按鈕

        I0.2

        SB3/計時復位按鈕

        輸出

        Q0.0

        KM/接觸器

        Q0.1

        HL1/運行累計時間到指示

         

        圖2-21 統計設備運行時間電氣接線

        2.[STEP2]PLC梯形圖編程

        如圖2-22所示為統計設備運行時間的梯形圖。

        程序段1:調用TONR對輸入信號Q0.0(即接觸器KM1)進行累計定時,100分鐘時間一到即輸出HL1指示燈Q0.1,該定時器可以通過SB3進行復位。

        程序段2:調用SR觸發器對輸入信號SB1進行Q0.0置位、對停止按鈕SB2和運行累計時間到信號HL1進行Q0.0復位,其中復位優先。

        圖2-22 統計設備運行時間梯形圖


        【實例2-4】用時鐘存儲器來編程指示燈閃爍 

        如圖2-23所示的指示燈HL1有兩種閃爍方式,一種是當SB1按下時進行快閃,另外一種是當SB2按下時進行慢閃。當兩個按鈕同時按下時,指示燈HL1滅掉,然后進入待機狀態,即按下SB1或SB2繼續處于兩種閃爍狀態。請用時鐘存儲器來進行編程。

        圖2-23 指示燈閃爍示意

        1.[STEP1]定義輸入輸出元件和電氣接線

        指示燈閃爍實例包括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,復位慢閃中間變量M10.1。

        程序段2:按下SB2慢閃按鈕,則置位慢閃中間變量M10.1,復位快閃中間變量M10.0。

        程序段3:同時按下2個按鈕時,則復位%M10.0和M10.1,同時置位M10.2(即復位中間變量)。

        程序段4:用2.5Hz表示快閃,用0.5Hz表示慢閃,在兩種狀態下輸出指示燈。

        程序段5:在同時按下2個按鈕情況下,過2s后自動激活,運行再次進行慢閃或快閃動作。

         

        圖2-25 指示燈閃爍梯形圖


        2.3 比較、運算和移動指令

        2.3.1 比較指令

        表2-14所示為S7-1200共有10個常見的比較操作,用來比較數據類型相同的兩個數IN1與IN2的大小,其操作數可以是I/Q/M/L/D等存儲區中的變量或常量。當滿足比較關系式給出的條件時,等效觸點接通。

        表2-14比較指令


        表2-15所示為等于、不等于、大于等于、小于等于、大于、小于等6種比較指令觸點的滿足條件,且要比較的兩個值必須為相同的數據類型。

        表2-15比較指令觸點


        這里以“等于”比較指令為例進行說明:如圖2-26a所示可以使用“等于”指令確定個比較值(<操作數 1>)是否等于第二個比較值(<操作數2>)。比較器運算指令可以通過指令右上角黃色三角的個選項來選擇等于、大于等于等比較器類型(圖2-26b),也可以通過右下角黃色三角的第二個選項來選擇數據類型,如整數、實數等(圖2-26c)。

        圖2-26 比較器運算指令

        (1)CMP==:等于比較器:

        可以使用“等于”指令判斷個比較值(<操作數 1>)是否等于第二個比較值(<操作數 2>)。如果滿足比較條件,則該指令返回邏輯運算結果 (RLO)“1”。如果不滿足比較條件,則該指令返回 RLO“0”。

        (2)CMP<>:不等于

        使用“不等于”指令判斷個比較值(<操作數 1>)是否不等于第二個比較值(<操作數 2>)。如果滿足比較條件,則該指令返回邏輯運算結果 (RLO)“1”。如果不滿足比較條件,則該指令返回 RLO“0”。

        (3)CMP>=:大于或等于

        可以使用“大于或等于”指令判斷個比較值(<操作數 1>)是否大于或等于第二個比較值(<操作數 2>)。如果滿足比較條件,則該指令返回邏輯運算結果 (RLO)“1”。如果不滿足比較條件,則該指令返回 RLO“0”。

        (4)CMP<=:小于或等于

        可以使用“小于或等于”指令判斷個比較值(<操作數 1>)是否小于或等于第二個比較值(<操作數 2>)。如果滿足比較條件,則該指令返回邏輯運算結果 (RLO)“1”。如果不滿足比較條件,則該指令返回 RLO“0”。

        (5)CMP>:大于

        可以使用“大于”指令確定個比較值(<操作數 1>)是否大于第二個比較值(<操作數 2>)。如果滿足比較條件,則該指令返回邏輯運算結果 (RLO)“1”。如果不滿足比較條件,則該指令返回 RLO“0”。

        (6)CMP<:小于

        可以使用“小于”指令判斷個比較值(<操作數 1>)是否小于第二個比較值(<操作數 2>)。如果滿足比較條件,則該指令返回邏輯運算結果 (RLO)“1”。如果不滿足比較條件,則該指令返回 RLO為“0”。

        除了上述的常見比較指令之外,還有其他變量比較指令,其類型與說明如表2-14所示。

        表2-14 變量比較類型與說明

         

        2.3.2 移動指令

        移動指令是將數據元素復制到新的存儲器地址,并從一種數據類型轉換為另一種數據類型,移動過程中不更改源數據

        1.MOVE移動值

        如圖2-27可以使用“移動值”指令將 IN 輸入操作數中的內容傳送給 OUT1 輸出的操作數中。始終沿地址升序方向進行傳送。如果使能輸入 EN 的信號狀態為“0”或IN 參數的數據類型與 OUT1 參數的指定數據類型不對應時,則使能輸出 ENO 的信號狀態為“0”

         


        圖2-27 MOVE指令

        表2-15 MOVE指令可傳送的類型


        在MOVE指令中,若IN 輸入端數據類型的位長度超出了OUT1 輸出端數據類型的位長度,則傳送源值中多出來的有效位會丟失。若 IN 輸入端數據類型的位長度小于 OUT1 輸出端數據類型的位長度,則用零填充傳送目標值中多出來的有效位。

        在初始狀態,指令框中包含 1 個輸出 (OUT1),可以鼠標點擊圖符擴展輸出數目。 在該指令框中,應按升序順序排列所添加的輸出端。執行該指令時,將 IN 輸入端操作數中的內容發送到所有可用的輸出端。如果傳送結構化數據類型 (DTL, STRUCT, ARRAY) 或字符串 (STRING)的字符,則無法擴展指令框??梢暂敵龆鄠€地址OUT1、OUT2、OUT3等,如圖2-28所示。

        圖2-28 MOVE指令的多個變量輸出

        2.MOVE_BLK指令

        如圖2-29所示,使用“MOVE_BLK塊移動”指令,可將存儲區(源區域)的內容移動到其他存儲區(目標區域)。 使用參數 COUNT 可以指定待復制到目標區域中的元素個數。 可通過 IN 輸入端的元素寬度來指定待復制元素的寬度。 并按地址升序順序執行復制操作。

        圖2-29 MOVE_BLK指令

        3.UMOVE_BLK無中斷塊移動

        使用圖2-30所示的“UMOVE_BLK無中斷塊移動”指令,可將存儲區(源區域)的內容連續復制到其他存儲區(目標區域)。 使用參數 COUNT 可以指定待復制到目標區域中的元素個數??赏ㄟ^ IN 輸入端的元素寬度來指定待復制元素的寬度。 源區域內容沿地址升序方向復制到目標區域。

        圖2-30 UMOVE_BLK指令

        4.FILL_BLK填充塊

        圖2-31所示的“FILL_BLK填充塊”指令,用 IN 輸入的值填充一個存儲區域(目標區域)。將以 OUT 輸出指定的起始地址,填充目標區域??梢允褂脜?COUNT 指定復制操作的重復次數。執行該指令時,將選擇 IN 輸入的值,并復制到目標區域 COUNT 參數中指定的次數。

        圖2-31 FILL_BLK填充塊

        5. SWAP交換指令

        “SWAP交換”指令可以更改輸入 IN 中字節的順序,并在輸出 OUT 中查詢結果。圖2-32說明了如何使用“交換”指令交換數據類型為 DWORD 的操作數的字節。表2-15所示為SWAP指令的參數。

        圖2-32 SWAP交換數據類型為DWORD的示意

        表2-15 SWAP指令的參數


         

        2.3.3 數學運算指令

        在數學運算指令中,ADD、SUB、MUL和DIV分別是加、減、乘、除指令,其操作數的數據類型可選SInt、Int、 Dint、 USInt、 UInt、 UDInt和Real。在運算過程中,操作數的數據類型應該相同。

        1.加法ADD指令

        加法ADD指令可以從TIA軟件右邊指令窗口的“基本指令”下的“數學函數”中直接添加(圖2-33a所示)。使用“ADD”指令,根據圖2-33b選選擇的數據類型,將輸入 IN1 的值與輸入 IN2 的值相加,并在輸出 OUT (OUT = IN1+IN2)處查詢總和。   

        圖2-33 ADD指令

        在初始狀態下,指令框中至少包含兩個輸入(IN1 和 IN2),可以鼠標點擊圖符擴展輸入數目(圖2-33c),在功能框中按升序對插入的輸入進行編號,執行該指令時,將所有可用輸入參數的值相加,并將求得的和存儲在輸出 OUT 中。

        表2-16列出了“ADD”指令的參數。根據參數說明,只有使能輸入 EN 的信號狀態為“1”時,才執行該指令。如果成功執行該指令,使能輸出ENO 的信號狀態也為“1”。如果滿足下列條件之一,則使能輸出 ENO 的信號狀態為“0”:

        ● 使能輸入EN的信號狀態為“0”。

        ● 指令結果超出輸出 OUT 指定的數據類型的允許范圍。

        ● 浮點數具有無效值。

        表2-16 ADD指令的參數


        圖2-34中舉例說明了ADD指令的工作原理:如果操作數I0.0的信號狀態為“1”,則將執行“加”指令,將操作數IW64的值與IW66的值相加,并將相加的結果存儲在操作數MW0中。如果該指令執行成功,則使能輸出 ENO 的信號狀態為“1”,同時置位輸出Q0.0。

        圖2-34 ADD指令應用

        2.減法SUB指令

        如圖2-35所示,可以使用減法SUB指令從輸入 IN1 的值中減去輸入 IN2 的值并在輸出 OUT (OUT = IN1-IN2)處查詢差值。SUB指令的參數與ADD指令相同。     

        圖2-35 SUB指令

        圖2-36中舉例說明了SUB指令的工作原理:如果操作數I0.0的信號狀態為“1”,則將執行“減”指令,將操作數IW64的值減去IW66的值,并將結果存儲在操作數MW0中。如果該指令執行成功,則使能輸出 ENO 的信號狀態為“1”,同時置位輸出Q0.0。

        圖2-36 SUB指令應用

        3.乘法MUL指令

        如圖2-37所示,可以使用乘法MUL指令將輸入 IN1 的值乘以輸入 IN2 的值,并在輸出 OUT (OUT = IN1*IN2)處查詢乘積。同ADD指令一樣,可以在指令功能框中展開輸入的數字,并在功能框中以升序對相加的輸入進行編號。表2-27為MUL指令的參數。 

        圖2-37 MUL指令

        表2-17 MUL指令的參數


        圖2-38舉例說明了MUL指令的工作原理:如果操作數I0.0的信號狀態為“1”,則將執行“乘”指令。將操作數IW64的值中乘以操作數IN2常數值“4”,相乘的結果存儲在操作數MW20中。如果成功執行該指令,則輸出 ENO 的信號狀態為“1”,并將置位輸出Q0.0。

        圖2-38 MUL指令應用

        4.除法DIV和返回除法余數MOD指令

        除法DIV和返回除法余數MOD指令如圖2-39所示,前者是返回除法的商,后者是余數。需要注意的是,MOD指令只有在整數相除時才能應用。

        圖2-39 DIV和MOD指令

        圖2-40舉例說明了DIV和MOD指令的工作原理:如果操作數I0.0的信號狀態為“1”,則將執行DIV指令。將操作數IW64的值中除以操作數IN2常數值“4”,商存儲在操作數MW20中,余數則存儲在操作數MW30中。

        圖2-40 DIV和MOD指令的應用

        除了上述運算指令之外,還有MOD、NEG、INC、DEC和ABS等數學運算指令,具體說明如下:

        1)MOD指令:除法指令只能得到商,余數被丟掉,MOD指令可以用來求除法的余數。

        2)NEG指令:將輸入IN的值取反,保存在OUT中。

        3)INC和DEC指令:參數IN/OUT的值分別加1和減1。

        4)值指令ABS:求輸入IN中有符號整數或實數的值。

        對于浮點數函數運算,其梯形圖和對應的描述如表2-18中所示,需要注意的是,三角函數和反三角函數指令中的角度均為以弧度為單位的浮點數。

        表2-18 浮點數函數運算


        2.3.4 其他數據指令

        1.轉換操作指令

        如果在一個指令中包含多個操作數,必須確保這些數據類型是兼容的。如果操作數不是同一數據類型,則必須進行轉換,轉換方式有兩種。

        (1)隱式轉換

        如果操作數的數據類型是兼容的,由系統按照統一的規則自動執行隱式轉換??梢愿鶕O定的嚴格或較寬松的條件來進行兼容性檢測,例如塊屬性中缺省的設置為執行IEC檢測,這樣自動轉換的數據類型相對要少。編程語言LAD、FBD、SCL和GRAPH支持隱式轉換。STL 編程語言不支持隱式轉換。

        (2)顯式轉換

        如果操作數的數據類型不兼容或者由編程人員設定轉換規則時,則可以進行顯式轉換(不是所有的數據類型都支持顯式轉換),顯式轉換的指令參考表2-19。

        表2-19 轉換操作指令與說明



        2.移位和循環指令

        LAD移位指令可以將輸入參數IN中的內容向左或向右逐位移動;循環指令可以將輸入參數IN中的全部內容循環地逐位左移或右移,空出的位用輸入IN移出位的信號狀態填充。該指令可以對8、16、 32以及64位的字或整數進行操作,移位和循環指令參考表2-20。

        表2-20 移位和循環指令與說明


        字移位指令移位的范圍為0~15,雙字移位指令移位的范圍為0~31,長字移位指令移位的范圍為0~63。對于字、雙字和長字移位指令,移出的位信號丟失,移空的位使用0補足。例如將一個字左移6位,移位前后位排列次序如圖2-41所示。

        圖2-41 左移6位

        帶有符號位的整數移位范圍為0~15;雙整數移位范圍為0~31;長整數移位指令移位的范圍為0~63。移位方向只能向右移,移出的位信號失,移空的位使用符號位補足。如整數為負值,符號位為1;整數為正值,符號位為0。例如將-個整數右移4位, 移位前后位排列次序如圖2-42所示。

        圖2-42 右移4位

        3.字邏輯運算指令

        LAD字邏輯指令可以對BYTE (字節)、WORD (字)、DWORD ( 雙字)或LWORD(長字)逐位進行“與”、“或”、“異或”邏輯運算操作。“與”操作可以判斷兩個變量在相同的位數上有多少位為1,通常用于變量的過濾,例如一個字變量與常數W#16#00FF相“與”,則可以將字變量中的高字節過濾為0;“或”操作可以判斷兩個變量中為1位的個數;“異或”操作可以判斷兩個變量有多少位不相同。字邏輯指令還包含編碼解碼等操作。字邏輯指令參考表2-31所示。

        表2-21 字邏輯運算指令與說明



        【實例2-5】用比較指令來實現交通燈控制

        某紅綠燈控制時序圖如圖2-43所示,在按鈕SB1啟動之后,紅燈先亮6s,然后綠燈亮6s,后黃燈閃爍4s;反復循環,直至按鈕SB2停止。請用PLC進行編程。

         

        圖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的時序圖,主要采用了定時器數值的區間數據比較指令,即0-6s之間為紅燈,6s-12s之間是綠燈,12s之后是4s閃爍黃燈;依次循環。選用TONR的原因,是因為有復位參數,而其他計數器均沒有。

        圖2-45 MD20時序圖

        本實例重要的進行時間TIME與DINT的轉換,這里采用CONV指令,在圖2-46所示的程序段3中將定時器的時間值轉為雙整數MD20。


        聯系方式

        • 電  話:17838383235
        • 經理:徐嘉泉
        • 手  機:17838383235
        • 微  信:17838383235