【摘要】近日有小夥伴和駝子探討如何用PLC實現對十字路口交通信號燈的控制。駝子利用閒餘時間粗略設計了一套控制程序,所謂“獨樂樂,不如眾樂樂”,因此,特分享出來,有興趣的小夥伴可以一起研究一下,並請批評指正。
一、控制要求
如圖1所示,為十字路口交通信號燈的控制邏輯。駝子大概分析了一下,感覺按時間來捋清控制邏輯,相對會簡單明瞭些。
圖2為駝子根據控制邏輯,繪製的時間流程圖。四個方向的信號燈可分為橫、縱兩組。兩組信號燈相互之間有所關聯,比如紅燈1亮的期間(60s),第二組的信號燈先後會經歷:綠燈2亮(50s)->綠燈2閃(6s)->黃燈2亮(4s)。其他的信號燈也有類似的關聯邏輯。
二、程序設計
1、輸入、輸出定義
如圖3所示,十字路口四個方向共12個信號燈,共分為兩組:由Q0.0-Q0.5共六個數字輸出量來控制信號燈的亮滅。同時,增加兩個數字輸入信號:I1.6,交通信號燈控制系統工作;I1.7,交通信號燈控制系統停止工作。
二、信號燈狀態定義
根據圖2分析,信號燈工作過程中,共可有六個狀態,每個狀態由一個定時器來界定。如圖4、圖5分別為工作狀態2和工作狀態3。
信號燈控制系統投入運行後,其工作狀態為:
status1->status2->status3->status4->status5->status6->status1……
每個狀態對應一個定時器。
基於這一特點,可用上一個狀態信號的下降沿作為觸發信號,觸發本狀態的定時器;而本狀態的狀態信號下降沿則作為下一個狀態定時器的觸發信號(其中,status6的下一個狀態為status1),如此,則可以形成一個狀態環,信號燈的任意一個工作瞬間都可以用6個狀態中的一個表示。
圖4、圖5中,定時器T2、T3的計時觸發端分別由各自上一個狀態信號的下降沿來觸發,復位端連接I1.7,以便維護人員隨時可以終止信號燈。
(圖4、圖5只列舉了狀態2和狀態3的程序段,有興趣的小夥伴可自行思考其他四個狀態的程序,需要注意的是狀態1的程序會相對複雜些)
三、驅動信號燈亮滅
根據圖2很容易分析出,不同工作狀態下,各信號燈的亮滅情況。駝子總結如圖6所示。
1、紅、黃燈的亮滅控制
紅、黃燈只有亮、滅兩種狀態,控制相對簡單,以紅燈1為例,其在status1、status2、status3狀態下亮,其他狀態下滅,因此,其程序如圖7所示。
2、綠燈的亮滅及閃爍控制
綠燈由兩種工作模式,亮滅及閃爍。以綠燈1為例,其在status4時為常亮,其實現起來沒什麼難度。但在status5時,其工作在閃爍模式下,閃爍模式需要通過方波控制器來實現。如圖8所示,FC1002為駝子編寫的方波發送器,當其Inp1端為高電平時,輸出端out1會輸出週期性的方波,(具體方波發生器如何實現,這裡暫時按下不表)。
四、仿真運行
如圖9為仿真運行的一個瞬間的結果,如圖其處在status3,根據圖6可知,status3時,red1、yellow2亮,與圖9運行結果吻合。實際仿真,在其他幾個狀態時,運行結果也無誤。
五、後記
最後,駝子留下幾個疑問,供有興趣的小夥伴思考:
1、同樣的控制功能,用3個定時器能否實現?
2、status1的程序與其他5個狀態的程序略有不同,會相對複雜些,複雜在哪裡?
3、方波發生器如何編寫?
閱讀更多 塞北名駝 的文章