關(guan) 鍵字:PLC、西門子、一鍵啟停、LAD
係列文章目錄
基於(yu) 7-200 SMART實現Modbus TCP通信
順序功能圖——(二)設計機組延時關(guan) 機程序
基於(yu) S7-200 SMART實現MATLAB寫(xie) 入與(yu) 讀取PLC數據
文章目錄
前言
提示:以下內(nei) 容均屬個(ge) 人思考,本人也還是技術小白,如有出現紕漏,請各位大佬指出。:
一日在編寫(xie) PLC代碼時發現了早期在著名大學B站學習(xi) 的一段例程——“一鍵啟停”,不過對於(yu) 當時的我來說這段程序看起來有點陌生,於(yu) 是決(jue) 定再學習(xi) 鞏固一下基礎知識。經過在網上尋找資源發現,大部分的示例都直接給出程序但缺少一點分析,有分析的又需要交費,於(yu) 是就有了這篇博客。
提示:以下是本篇文章正文內(nei) 容,下麵案例可供參考,且案例中被改進程序與(yu) 改進程序是原理關(guan) 聯,可能出現被改進程序與(yu) 改進程序中變量名不同的情況
一、硬件與軟件環境
操作係統:WIN11
編程軟件:STEP 7-MicroWIN SMART V2.8
編程語言:LAD
PLC:西門子——SIMATIC S7-200 SMART CPU ST60
二、基本的起保停電路`
1.普通線圈
普通線圈構成的起保停LAD代碼如下:
變量含義(yi) :
I0.0——啟動按鈕
I0.1——停止按鈕
Q0.0——電機
工作原理:動作前電機還未得電
①按下啟動按鈕→常開觸點I0.0閉合+常閉觸點I0.1閉合→線圈Q0.0得電→電機啟動
②按鈕都無動作→常開觸點Q0.0閉合+常閉觸點I0.1閉合→線圈Q0.0得電→電機保持
③按下停止按鈕→常開觸點Q0.0閉合+常閉觸點I0.1斷開→線圈Q0.0失電→電機停止
以上程序中的I、Q寄存器如果換成M寄存器也可以使用如下LAD代碼:
其中由於(yu) M寄存器依靠鼠標控製賦值,以人類的手速很難達到按鈕的效果,所以這裏使用觸點+上升沿識別的方式模擬按鈕
變量含義(yi) :
M0.0+上升沿——啟動按鈕
M0.1+上升沿——停止按鈕
M0.4——電機
SM0.0在這裏的作用是防止報錯
2.置位/複位線圈
變量含義(yi) :
I0.0——啟動按鈕
I0.1——停止按鈕
Q0.0——電機
工作原理:動作前電機還未得電
①按下啟動按鈕→常開觸點I0.0閉合+常閉觸點I0.1閉合→線圈Q0.0得電→電機啟動
②按鈕都無動作→常開觸點Q0.0閉合+常閉觸點I0.1閉合→線圈Q0.0得電→電機保持
③按下停止按鈕→常開觸點Q0.0閉合+常閉觸點I0.1斷開→線圈Q0.0失電→電機停止
以上程序中的I、Q寄存器如果換成M寄存器也可以使用如下LAD代碼:
變量含義(yi) :
M0.0+上升沿——啟動按鈕
M0.1+上升沿——停止按鈕
M0.2——電機
提示:本節內(nei) 容如果覺得理解吃力的小夥(huo) 伴,如果排除博主文筆不好的原因,可能需要自己去補一下PLC的相關(guan) 知識。
三、一鍵啟停電路
首先讓我們(men) 思考一個(ge) 問題,如何將兩(liang) 個(ge) 按鈕簡化為(wei) 一個(ge) 按鈕?
在基本的起保停電路中,我們(men) 利用不同的變量對應兩(liang) 個(ge) 按鈕,如果隻用一個(ge) 變量代表按鈕,那麽(me) 還必須有一個(ge) 中間變量用於(yu) 區分當前的係統狀態,即“電機轉動”與(yu) “電機停止”。
1.基於置位/複位線圈實現一鍵啟停_1
我們(men) 先從(cong) 思路比較簡單的置位/複位線圈起保停電路開始做改動
變量含義(yi) :
M0.0+上升沿——按鈕
M0.7——電機
這樣的改動看似符合了我們(men) 的要求:
①電機停止+按鈕按下→常閉觸點M0.7閉合+常開觸點M0.0上升沿識別→M0.7置位
②電機運行+按鈕按下→常開觸點M0.7閉合+常開觸點M0.0上升沿識別→M0.7複位
但實際運行起來的結果不能說差強人意吧,隻能說是相差甚遠——不管如何按下按鈕電機都不會(hui) 啟動。
上述問題的出現是由於(yu) 我們(men) 對程序掃描的原理還不熟悉,博主認為(wei) 上述程序需要以線圈為(wei) 單元進行分析:當前掃描周期開始時電機停止,即M0.7未得電
①第一個(ge) 線圈:電機停止+按鈕按下→常閉觸點M0.7閉合+常開觸點M0.0上升沿識別→M0.7置位
②第二個(ge) 線圈:電機停止+按鈕按下+M0.7置位→常開觸點M0.7閉合+常開觸點M0.0上升沿識別→M0.7複位
在一個(ge) 掃描周期中線圈複位又置位,但是注意這裏變量的值會(hui) 先暫存隻有等所有程序都掃描完成後,才能將變量的值更新,這也是為(wei) 什麽(me) 我們(men) 發現實際變量並沒有變化!
知道了問題的原因,那就可以針對性的進行改進了。
已知不能直接讓代表電機的線圈M0.7直接與(yu) 按鈕相連,博主這裏采用增加一個(ge) 中間變量的方式(已驗證):
以線圈為(wei) 單元進行分析:當前掃描周期開始時M0.7未得電
第一個(ge) 線圈程序:M0.0按鈕按下+常閉觸點M0.7閉合→M0.1線圈置位
第二個(ge) 線圈程序:M0.0按鈕按下+常開觸點M0.7斷開→M0.1線圈不複位
第三個(ge) 線圈程序:常開觸點M0.1閉合→M0.7線圈得電當前掃描周期開始時M0.7已得電
第一個(ge) 線圈程序:M0.0按鈕未按下+常閉觸點M0.7斷開→M0.1線圈不置位
第二個(ge) 線圈程序:M0.0按鈕未按下+常開觸點M0.7閉合→M0.1線圈不複位
第三個(ge) 線圈程序:常開觸點M0.1閉合→M0.7線圈得電當前掃描周期開始時M0.7已得電
第一個(ge) 線圈程序:M0.0按鈕按下+常閉觸點M0.7斷開→M0.1線圈不置位
第二個(ge) 線圈程序:M0.0按鈕按下+常開觸點M0.7閉合→M0.1線圈不複位
第三個(ge) 線圈程序:常開觸點M0.1閉合→M0.7線圈得電
2.基於置位/複位線圈實現一鍵啟停_2
如果小夥(huo) 伴們(men) 能理解第一種的改進,那麽(me) 第二種會(hui) 好理解很多。
重新梳理第一種的改進:
首先,我們(men) 確定標誌位
為(wei) 電機運行狀態
而且,我們(men) 知道電機運行狀態
不能與(yu) 電機輸出
直接相連
所以,我們(men) 用一個(ge) 中間變量
作為(wei) 按鈕
輸出的一個(ge) 中轉站控製電機輸出
思考一下:
如果可以在按下按鈕的啟動電機時候屏蔽複位線圈,圖6的好像也可以解決(jue) 問題。
基於(yu) 上述思考,我們(men) 還可以針對圖6的問題進行一下改進:
變量含義(yi) :
M2.0+上升沿——按鈕
M2.7——電機
以線圈為(wei) 單元進行分析:當前掃描周期開始時M2.7未得電
第一個(ge) 線圈程序:M2.0按鈕按下+常閉觸點M2.7閉合→M2.7線圈置位
第二個(ge) 線圈程序:M2.0按鈕按下+常閉觸點M2.7閉合→M2.1線圈得電
第三個(ge) 線圈程序:M2.0按鈕按下+常閉觸點M2.1斷開→M2.7線圈不複位當前掃描周期開始時M2.7已得電
第一個(ge) 線圈程序:M2.0按鈕未按下+常閉觸點M2.7斷開→M2.7線圈不置位
第二個(ge) 線圈程序:M2.0按鈕未按下+常閉觸點M2.7斷開→M2.1線圈失電
第三個(ge) 線圈程序:M2.0按鈕未按下+常閉觸點M2.1閉合+常開觸點M2.7閉合→M2.7線圈不複位當前掃描周期開始時M2.7已得電
第一個(ge) 線圈程序:M2.0按鈕按下+常閉觸點M2.7斷開→M2.7線圈不置位
第二個(ge) 線圈程序:M2.0按鈕按下+常閉觸點M2.7斷開→M2.1線圈失電
第三個(ge) 線圈程序:M2.0按鈕按下+常閉觸點M2.1閉合+常開觸點M2.7閉合→M2.7線圈複位
3.基於普通線圈實現一鍵啟停_3
針對普通線圈實現的起保停,在改進前我們(men) 先將圖2.2的電路進行如下改進:
圖9的改進是基於(yu) 停止按鈕的核心功能——斷開保持電路的電流,故隻要斷開觸點
在保持觸點
與(yu) 電機輸出
之間都可以實現斷開功能
變量含義(yi) :
M1.0+上升沿——按鈕
M1.7——電機
以線圈為(wei) 單元進行分析:當前掃描周期開始時M1.7未得電
第一個(ge) 線圈程序:M1.0按鈕按下→M1.1得電
第二個(ge) 線圈程序:M1.1常開觸點閉合+M1.7常閉觸點閉合→M1.7線圈得電當前掃描周期開始時M0.7已得電
第一個(ge) 線圈程序:M1.0按鈕不按下→M1.1不得電
第二個(ge) 線圈程序:M1.1常閉觸點閉合+M1.7常開觸點閉合→M1.7線圈得電當前掃描周期開始時M0.7已得電
第一個(ge) 線圈程序:M1.0按鈕不按下→M1.1不得電
第二個(ge) 線圈程序:M1.1常閉觸點閉合+M1.7常開觸點閉合→M1.7線圈得電
問題 :
有些小夥(huo) 伴可能有疑惑,為(wei) 什麽(me) 之前兩(liang) 種改進增加的標誌位都是兩(liang) 個(ge) ,如圖8的常閉觸點M2.7與(yu) 常開觸點M2.7,這個(ge) 為(wei) 什麽(me) 是隻在原來基礎上增加了一個(ge) 常閉觸點M1.7?
解答:
圖9中起保持作用的常開觸點Q0.0(同圖10的常開觸點M1.7)其實也有表示當前係統狀態的作用,故這裏隻需要添加一個(ge) 常閉觸點M1.7
4.基於取反字節指令實現一鍵啟停_4
以上三種改進都是隻用到了基礎的線圈和觸點,指令比較簡單但是邏輯上比較難以理解,後麵五種改進就屬於(yu) 指令上比較複雜,但邏輯上簡單。
在介紹第四種改進之前,小夥(huo) 伴們(men) 需要了解取反字節
指令
該指令實現將輸入的數據按位取反的功能:
變量含義(yi) :
M3.0+上升沿——按鈕
M3.7——電機
以線圈為(wei) 單元進行分析:當前掃描周期開始時3.7未得電
取反程序:M3.0按鈕按下→VB3取反
線圈程序:VB3=1→V3.0=1→M3.7線圈得電當前掃描周期開始時3.7已得電
取反程序:M3.0按鈕未按下→VB3不取反
線圈程序:VB3=1→V3.0=1→M3.7線圈得電當前掃描周期開始時3.7已得電
取反程序:M3.0按鈕按下→VB3取反
線圈程序:VB3=0→V3.0=0→M3.7線圈失電
5.基於異或字節指令實現一鍵啟停_5
該指令實現將輸入的兩(liang) 個(ge) 數據按位取異或的功能:
基於(yu) 上述指令實現一鍵啟停:
變量含義(yi) :
M4.0+上升沿——按鈕
M4.7——電機
以線圈為(wei) 單元進行分析:當前掃描周期開始時4.7未得電
異或程序:M4.0按鈕按下→VB4與(yu) 1異或
線圈程序:VB4=1→V4.0=1→M4.7線圈得電當前掃描周期開始時4.7已得電
異或程序:M4.0按鈕按下→VB4不與(yu) 1異或
線圈程序:VB4=1→V4.0=1→M4.7線圈得電當前掃描周期開始時4.7已得電
異或程序:M4.0按鈕按下→VB4與(yu) 1異或
線圈程序:VB4=0→V4.0=0→M4.7線圈失電
6.基於置位優先指令實現一鍵啟停_6
該指令實現當置位和複位指令衝(chong) 突時優(you) 先置位的功能:
基於(yu) 上述指令實現一鍵啟停:
變量含義(yi) :
M5.0+上升沿——按鈕
M5.7——電機
以線圈為(wei) 單元進行分析:當前掃描周期開始時5.7未得電
置位優(you) 先程序:M5.0按鈕按下+常閉觸點M5.7閉合+置位優(you) 先指令→M5.7置位當前掃描周期開始時5.7未得電
置位優(you) 先程序:M5.0按鈕未按下+常開觸點M5.7閉合+置位優(you) 先指令→M5.7不複位當前掃描周期開始時5.7已得電
置位優(you) 先程序:M5.0按鈕按下+常開觸點M5.7閉合+置位優(you) 先指令→M5.7複位
7.基於複位優先指令實現一鍵啟停_7
該指令實現當置位和複位指令衝(chong) 突時優(you) 先置位的功能:
變量含義(yi) :
M6.0+上升沿——按鈕
M6.7——電機
以線圈為(wei) 單元進行分析:當前掃描周期開始時6.7未得電
置位優(you) 先程序:M6.0按鈕按下+常閉觸點M6.7閉合+複位優(you) 先指令→M6.7置位當前掃描周期開始時6.7未得電
置位優(you) 先程序:M6.0按鈕未按下+常開觸點M6.7閉合+複位優(you) 先指令→M6.7不複位當前掃描周期開始時6.7已得電
置位優(you) 先程序:M6.0按鈕按下+常開觸點M6.7閉合+複位優(you) 先指令→M6.7複位
8.基於計數器指令實現一鍵啟停_8
軟件自帶的幫助文檔中隻有減計數器,不過原理都差不多。
基於(yu) 上述指令實現一鍵啟停:
變量含義(yi) :
M7.0+上升沿——按鈕
M7.7——電機
以線圈為(wei) 單元進行分析:當前掃描周期開始時7.7未得電(C7=0)
計數程序:M7.0按鈕按下→C7=1
置位線圈:C7=1→M7.7置位
複位線圈:C7=1→M7.7不複位當前掃描周期開始時7.7已得電(C7=1)
計數程序:M7.0按鈕不按下→C7=1
置位線圈:C7=1→M7.7不置位
複位線圈:C7=1→M7.7不複位當前掃描周期開始時7.7未得電(C7=1)
計數程序:M7.0按鈕按下→C7=2→C7常開觸點閉合→置位C7→C7=0
置位線圈:C7=0→M7.7不置位
複位線圈:C7=0→M7.7複位
總結
到這裏博主總共在這裏總結了我自己見過的八種一鍵啟停電路,並分享了自己的思考過程與(yu) 原理分析,如果有錯誤也請大佬們(men) 在評論區指正,
一點感想
警告:以下就是一些個(ge) 人的直抒胸臆了
這應該算是我寫(xie) 的第一篇長文,分享自己在學習(xi) 過程種的思考曆程與(yu) 想法。寫(xie) 這篇的原因有以下:
①在學習(xi) 的過程中也看到了網上的許多資料,雖然有許多靠譜的答案,但總感覺不明白原理就感覺不是很暢快,如果以上思路是正確的希望能幫到一些同樣有困擾的小夥(huo) 伴,如果不正確也希望能幫助大家思考;
②本科與(yu) 研究生偏向理論的研究讓我在工作中遇到了很多問題,向老前輩們(men) 請教的時候總想問點為(wei) 什麽(me) ,但是迎來的大多是略帶不屑與(yu) 不耐煩的回複,希望能我的思路和答案可以幫助到大家,而不是獲得“冷嘲熱諷”的回答;
③許多問題在我看來可以直接獲取思路與(yu) 答案進行快速學習(xi) ,希望我的問題與(yu) 答案能幫助部分小夥(huo) 伴減少在準備工作上花費的時間,進而將大部分精力花在真正重要或者困難的部分;
④自己的一點小私心,在幫助他人的過程中獲得一點自我滿足 記錄一下自己的思考,方便之後忘記了回來看看。