18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> 梯形圖實例 >> 正文

基於S7-200 SMART實現一鍵啟停_200smart 一鍵啟停

作者:佚名    文章來源:網絡整理    點擊數:    更新時間:2024/12/29

關(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代碼如下:

 

圖1 普通線圈實現起保停

變量含義(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代碼:

 

圖2.1 普通線圈實現起保停

 

圖2.2 普通線圈實現起保停

其中由於(yu) M寄存器依靠鼠標控製賦值,以人類的手速很難達到按鈕的效果,所以這裏使用觸點+上升沿識別的方式模擬按鈕
變量含義(yi) :
M0.0+上升沿——啟動按鈕
M0.1+上升沿——停止按鈕
M0.4——電機

 

圖3.1 SM0.0的含義

 

圖3.2 刪去SM0.0後的錯誤信息

SM0.0在這裏的作用是防止報錯

2.置位/複位線圈

置位/複位線圈構成的起保停LAD代碼如下:
 

圖4 置位/複位線圈實現起保停

變量含義(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代碼:
 

圖5 置位/複位線圈實現起保停

變量含義(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) 思路比較簡單的置位/複位線圈起保停電路開始做改動

 

圖6 置位/複位線圈實現一鍵啟停_初步設想

變量含義(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) 中間變量的方式(已驗證):

 

圖7 置位/複位線圈實現一鍵啟停_利用中間變量改進

以線圈為(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的問題進行一下改進:

 

圖8 置位/複位線圈實現一鍵啟停_另外一種改進

變量含義(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 圖2.2的改進

圖9的改進是基於(yu) 停止按鈕的核心功能——斷開保持電路的電流,故隻要斷開觸點保持觸點與(yu) 電機輸出之間都可以實現斷開功能

基於(yu) 圖9的電路,增加標誌位
 

圖10 普通線圈實現一鍵啟停

變量含義(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) 需要了解取反字節指令
 

圖11 取反字節指令

該指令實現將輸入的數據按位取反的功能:

 

圖12 取反字節指令示例

基於(yu) 上述指令實現一鍵啟停:
 

圖13 基於取反字節指令實現一鍵啟停

變量含義(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

首先介紹異或字節指令:
 

圖14 異或字節指令

該指令實現將輸入的兩(liang) 個(ge) 數據按位取異或的功能:
 

圖15 異或字節指令示例

基於(yu) 上述指令實現一鍵啟停:

 

圖16 基於異或字節指令實現一鍵啟停

變量含義(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

首先介紹置位優(you) 先指令:
 

圖17 置位優先指令

該指令實現當置位和複位指令衝(chong) 突時優(you) 先置位的功能:
 

圖18 置位優先指令示例

基於(yu) 上述指令實現一鍵啟停:

 

圖19 基於置位優先指令實現一鍵啟停

變量含義(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

首先介紹複位優(you) 先指令
 

圖20 複位優先指令

該指令實現當置位和複位指令衝(chong) 突時優(you) 先置位的功能:
 

圖21 複位優先指令示例

基於(yu) 上述指令實現一鍵啟停:
 

圖22 基於複位優先指令實現一鍵啟停

變量含義(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

首先介紹加計數指令:
 

圖23 加計數指令

該指令實現計數與(yu) 清零:
 

圖24 減計數指令示例

軟件自帶的幫助文檔中隻有減計數器,不過原理都差不多。

基於(yu) 上述指令實現一鍵啟停:

基於(yu) 

圖25.1 基於加計數指令實現一鍵啟停

基於(yu) 

圖25.2 基於加計數指令實現一鍵啟停

變量含義(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) 伴減少在準備工作上花費的時間,進而將大部分精力花在真正重要或者困難的部分;
自己的一點小私心,在幫助他人的過程中獲得一點自我滿足 記錄一下自己的思考,方便之後忘記了回來看看。

Tags:一鍵啟停,200smart,梯形圖程序  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章: 沒有了
  • 請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網友評論
    推薦文章
    最新推薦
    關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁麵
    下到頁底
    晶體管查詢