西門子S7系列PLC應用實例——用PLC實現對交通信號燈的控制

【摘要】近日有小夥伴和駝子探討如何用PLC實現對十字路口交通信號燈的控制。駝子利用閒餘時間粗略設計了一套控制程序,所謂“獨樂樂,不如眾樂樂”,因此,特分享出來,有興趣的小夥伴可以一起研究一下,並請批評指正。


一、控制要求

西門子S7系列PLC應用實例——用PLC實現對交通信號燈的控制

圖1 交通信號燈及其控制邏輯

如圖1所示,為十字路口交通信號燈的控制邏輯。駝子大概分析了一下,感覺按時間來捋清控制邏輯,相對會簡單明瞭些。

西門子S7系列PLC應用實例——用PLC實現對交通信號燈的控制

圖2 時間流程圖及狀態

圖2為駝子根據控制邏輯,繪製的時間流程圖。四個方向的信號燈可分為橫、縱兩組。兩組信號燈相互之間有所關聯,比如紅燈1亮的期間(60s),第二組的信號燈先後會經歷:綠燈2亮(50s)->綠燈2閃(6s)->黃燈2亮(4s)。其他的信號燈也有類似的關聯邏輯。

二、程序設計

1、輸入、輸出定義

西門子S7系列PLC應用實例——用PLC實現對交通信號燈的控制

圖3 輸入、輸出定義

如圖3所示,十字路口四個方向共12個信號燈,共分為兩組:由Q0.0-Q0.5共六個數字輸出量來控制信號燈的亮滅。同時,增加兩個數字輸入信號:I1.6,交通信號燈控制系統工作;I1.7,交通信號燈控制系統停止工作。

二、信號燈狀態定義

根據圖2分析,信號燈工作過程中,共可有六個狀態,每個狀態由一個定時器來界定。如圖4、圖5分別為工作狀態2和工作狀態3。

西門子S7系列PLC應用實例——用PLC實現對交通信號燈的控制

圖4 工作狀態2

西門子S7系列PLC應用實例——用PLC實現對交通信號燈的控制

圖5 工作狀態3

信號燈控制系統投入運行後,其工作狀態為:

status1->status2->status3->status4->status5->status6->status1……

每個狀態對應一個定時器。

基於這一特點,可用上一個狀態信號的下降沿作為觸發信號,觸發本狀態的定時器;而本狀態的狀態信號下降沿則作為下一個狀態定時器的觸發信號(其中,status6的下一個狀態為status1),如此,則可以形成一個狀態環,信號燈的任意一個工作瞬間都可以用6個狀態中的一個表示。


圖4、圖5中,定時器T2、T3的計時觸發端分別由各自上一個狀態信號的下降沿來觸發,復位端連接I1.7,以便維護人員隨時可以終止信號燈。

(圖4、圖5只列舉了狀態2和狀態3的程序段,有興趣的小夥伴可自行思考其他四個狀態的程序,需要注意的是狀態1的程序會相對複雜些)

三、驅動信號燈亮滅

根據圖2很容易分析出,不同工作狀態下,各信號燈的亮滅情況。駝子總結如圖6所示。

西門子S7系列PLC應用實例——用PLC實現對交通信號燈的控制

圖6 工作狀態與信號燈亮滅的關係1

1、紅、黃燈的亮滅控制

紅、黃燈只有亮、滅兩種狀態,控制相對簡單,以紅燈1為例,其在status1、status2、status3狀態下亮,其他狀態下滅,因此,其程序如圖7所示。

西門子S7系列PLC應用實例——用PLC實現對交通信號燈的控制

圖7 紅燈1的亮、滅控制

2、綠燈的亮滅及閃爍控制

綠燈由兩種工作模式,亮滅及閃爍。以綠燈1為例,其在status4時為常亮,其實現起來沒什麼難度。但在status5時,其工作在閃爍模式下,閃爍模式需要通過方波控制器來實現。如圖8所示,FC1002為駝子編寫的方波發送器,當其Inp1端為高電平時,輸出端out1會輸出週期性的方波,(具體方波發生器如何實現,這裡暫時按下不表)。

西門子S7系列PLC應用實例——用PLC實現對交通信號燈的控制

圖8 綠燈1閃爍控制

四、仿真運行

如圖9為仿真運行的一個瞬間的結果,如圖其處在status3,根據圖6可知,status3時,red1、yellow2亮,與圖9運行結果吻合。實際仿真,在其他幾個狀態時,運行結果也無誤。

西門子S7系列PLC應用實例——用PLC實現對交通信號燈的控制

圖9 仿真運行

五、後記

最後,駝子留下幾個疑問,供有興趣的小夥伴思考:

1、同樣的控制功能,用3個定時器能否實現?

2、status1的程序與其他5個狀態的程序略有不同,會相對複雜些,複雜在哪裡?

3、方波發生器如何編寫?


分享到:


相關文章: