PLC題目練習

練習題目1:
PLC練習題1 - 紅綠燈 (+配線注意)


練習題目2:
實作練習2 : 紅綠燈+行人優先按鈕


練習題目3:
PLC 實作練習3 - 紅綠燈 横向+縱向 共六燈

練習題目4:

PLC練習4 GT WORK3 跟 PLC做模擬連線測試

21 則留言:

  1. 陳老師您好,

    在台達DVP-PLC編程實作範例中,1.14 “地下停車場出入口進出管制" 的程式如下:
    LD M1002
    RST Y1
    SET Y2

    LD X1
    PLS M1
    PLF M2
    SET M20

    LD X2
    PLS M3
    PLF M4
    SET M30

    LD M1
    ANI M30
    LD M3
    ANI M20
    ORB
    SET Y1
    RST Y2

    LD M4
    AND M20
    LD M2
    AND M30
    ORB
    RST Y1
    SET Y2

    LD M4
    AND M20
    LD M2
    AND M30
    ORB
    RST M20
    RST M30

    其中 X1是一樓進出入口的感測器;X2是地下室進出入口的感測器;Y1是紅燈; Y2是綠燈

    請問為何紅燈亮的程式是:
    LD M1 ANI M30 LD M3 ANI M20 ORB SET Y1 RST Y2

    而不是:
    LD M1 AND M30 LD M3 AND M20 ORB SET Y1 RST Y2
    => 感覺上紅燈的條件應該是:車子會相撞的風險
    當一樓有車要進入單行道M1=On,而且也有從地下室過來的車還在單行道中M30=On
    => 同理 M3 AND M20也應該這樣的…

    同理,為何綠燈亮的程式是:
    LD M4 AND M20 LD M2 AND M30 ORB RST Y1 SET Y2

    而不是:
    LD M4 ANI M20 LD M2 ANI M30 ORB RST Y1 SET Y2
    => 感覺上綠燈的條件應該是:單行道中已沒車子
    當車子離開單行道駛入地下室M4=On,且沒有由一樓進入單行道的車子M20=OFF
    => 同理,M3 AND M20也應該這樣的…

    回覆刪除
    回覆
    1. 你的想法有錯,
      「當一樓有車要進入單行道M1=On,而且也有從地下室過來的車還在單行道中M30=On」
      這句話裡,「從地下室過來的車還在單行道中M30=On」,此時已經紅燈on,
      為何1樓看到紅燈,還要進入,此時應該警報了吧!!

      「一樓有車要進入單行道M1=On」這是已經進才會ON,

      1樓有車進入的條件,應該是紅燈OFF(綠燈ON)
      ===============
      X1 X2 已經是車子已經駛入,
      而已經駛入的條件是綠燈。

      而不是x1 on了,才看紅燈燈,是否進入。

      刪除
  2. 謝謝老師的指導,我重新解釋了程式如下,不過感覺上那 M20=On,解釋的似乎有點牽強:
    =>初始狀態,系統呈現綠燈。
    =>車由一樓進入X1時導致M1=On,在這過程中不會有來自地下室的車還在車道中M30=Off,
    因為危險所以Y1=On亮紅燈
    =>從一樓進入車道的車離開X2時導致M4=On,在這過程中該車在車道上的紀錄保持著M20=On,
    因為車道上已經沒車安全了,所以Y2=On系統亮綠燈
    =>綠燈後,清除掉M20與M30的狀態

    回覆刪除
    回覆
    1. 老師 我以底下的想法來解釋感覺比較合邏輯,指示是否正確還請您有空加以指導了:

      1) 當 X0 測到車子開入時產生個正脈波M1;當 X0 測到車子離開時產生個負脈波M2
      同理 X1類同,分別對應M3與M4。但是有個缺點就是無法判定方向。
      2) 為解決方向的問題,因此規定M20=On,代表車子的方向是由一樓駛入車道的狀態;而M30代表方向是由地下室來的。
      3) 所以紅燈亮 Y1=On 的條件是:
      a)某部車是由一樓X0駛入且正在車道中: M1=On且M20=On
      b)某部車是由地下室X1駛入且正在車道中: M2=On且M30=On

      對應程式: LD M1 AND M20 LD M3 AND M30 ORB SET Y1 RST Y2
      但台達範例程式答案為:LD M1 ANI M30 LD M3 ANI M20 ORB SET Y1 RST Y2
      ***我只能這樣解釋:因為車子只會在一個方向,所以M20=On 可以替換為 M30=Off; 同理 M30 被替換為 M20=Off。
      ***不知這樣的解釋是否正確??? 而台達的解法是否有其特定意義亦不得而知了???

      4) 綠燈亮Y2=On 的條件是:
      a)某部車是由一樓X0駛入車道並離開X1: M20=On 且 M4=On
      b)某部車是由地下室X1駛入車道並離開X0: M30=On 且 M2=On

      對應程式: LD M4 AND M20 LD M2 AND M30 ORB RST Y1 SET Y2

      刪除
    2. a)某部車是由一樓X0駛入且正在車道中: M1=On且M20=On
      這時候 M30呢? 是OFF吧
      應解譯成:有車要從一樓下去,且沒有車要上來

      不能只考慮 ON ,可以想一想OFF是什麼意思。
      ========================================
      2.每個人的想法不一樣,寫出來的程式也會不一樣是正常的,
      只要能跑,能看懂,知道發生問題怎麼改就好。

      刪除
    3. 了解了,感謝老師的指導!

      刪除
  3. 你好,我最近要準備機電整合乙級的檢定,有些特殊指令比較難記,也不知道有甚麼方法可以撰寫程式?可以舉個範例嗎?

    回覆刪除
    回覆
    1. 還有電子齒輪比,他的方式不知道要怎麼計算?

      刪除
    2. 電子齒輪比:可以參考這篇:
      https://vkinngworld.blogspot.tw/2012/04/blog-post_29.html

      刪除
  4. 講白了,我也沒記指令,常用才記得,不常用的也不記得,
    而且現在軟體太方便了,用點選就出來了,

    很多都是用到,才查書。

    撰寫程式,完全沒基礎,就看各家PLC都有出範例。
    先看別人的,再自已寫。

    回覆刪除
  5. 作者已經移除這則留言。

    回覆刪除
  6. 陳老師您好,

    在台達DVP-PLC編程實作範例的, “6.1 CMP 原料滲混機" 中
    【控制要求】:有一原料滲混機有A 及B 料,當系統啟動(X0)後,系統啟動燈(Y0)亮,當按下加工啟動開關(X1)
    後,A 料控制閥(Y1)開始送料,且攪拌器電機(Y3)開始轉動,設定時間(D0)到達後換由B料控制閥(Y2)開始送料,且攪拌器電機(Y3)持續轉動,直到工作時間(D1)到達。
    【程式】:
    LD X0 //X0 為系統啟動開關
    OUT Y0 //Y0 為系統啟動燈
    LDP X1 //X1 為加工啟動開關
    SET Y3 //Y3 為攪拌器電機
    LD Y3
    TMR T0 D1 //D1 為 A 料 + B 料送料的總時間
    CMP T0 D0 M0 //D0 為 A 料送料的時間
    LD M0
    OUT Y1 // Y1 為 A 料出口閥
    LD M1
    OR M2
    OUT Y2 // Y2 為 B 料出口閥
    LD T0
    ZRST Y1 Y3
    RST T0

    => 根據 CMP T0 D0 M0 、 LD M0 、 OUT Y1 、 LD M1、 OR M2、 OUT Y2:
    (1)當 T0 > D0 時,M0=On, Y1=On, A 料出口閥打開
    (2)當 T0 = D0 時,M1=On, Y2=On, B 料出口閥打開
    (3)當 T0 < D0 時,M2=On, Y2=On, B 料出口閥打開
    =>可是此程式一開始 T0=0秒 一定但是此結果與題目所要求的先放A料再放B料相左,所以,想請問老師:
    程式是否應該修正為 CMP T0 D0 M0、LD M0、OR M1、OUT Y2、LD M2、OUT Y1 比較正確呢?

    回覆刪除
    回覆
    1. 作者已經移除這則留言。

      刪除
    2. 補充:(不知何因,有些內容沒在此顯現,因此加以補充說明)
      =>此程式一開始 T0=0秒 一定< D0,所以出 B料; 接下來 T0=D0值,出B料; 最後 T0=D1值,出A料
      =>但是此結果與題目所要求的.... ....

      刪除
    3. 對! 寫手冊的人錯了。

      刪除
  7. 陳老師您好,

    請問底下程式裡 D0 結果為何是 0 而不是 1 呢?

    LD X0
    Mov K0 D0
    INCP D0

    另外,如果將程式改寫為

    LD X0
    INCP D0
    Mov K0 D0

    那麼 D0 輸出的結果又是否是 1 而不是 0 呢?

    回覆刪除
    回覆
    1. 你應該不了解 INC 跟INCP的差別吧!
      你可以另做一個 INC D1 看你在X0 ON時,D1 會數到多少。
      就代表PLC在X0 ON時,掃描了幾次。
      而INCP 只有在X0 OFF->ON時瞬間,執行一次。
      而MOV可以在ON時時間,掃描幾次,就執行幾次。

      刪除
  8. 嗯嗯!!! 了解了,謝謝老師的指導,感恩!!!

    當X0 OFF->ON 的瞬間, D0=0,D1=n(註:n=系統掃描的次數)
    如果按之前我的假設-倒過來寫的話,那麼其結果也是一樣的: D0=0,D1=n

    PS. 時間過得好快,如果6/27順利通過甄試,7/10就會到桃園職訓局去上 "智慧型機器人與圖控整合應用" 的課程

    回覆刪除
  9. 老師您好
    請問<D0 K0-[MOV K20 D0]
    這是不是
    當D0小於K0時
    傳送K20到D0
    也就等於一小於0秒時
    馬上又回復到20秒
    這樣理解對嗎?

    回覆刪除
    回覆
    1. 是的。
      但如果再詳細點的話,D0 還是有可能小於K0,但時間不會的於一個掃描時間,
      因為是PLC掃描到這行,才會讓MOV K20 D0,因為在這之前D0是小於K0的。

      刪除