王慧
(西南交通大學,四川 成都611756)
現(xiàn)在,十字路口的交通信號燈的計時功能還不完善,不管是在上下班高峰期還是非高峰期,路口的交通燈計時,時間一直是不變的,不能夠根據(jù)各個方向的交通情況進行實時調(diào)整,這樣的設定方式無法靈活控制各個方向的交通擁擠情況,一定程度上加劇了道路擁擠狀況。目前,在大型十字路口主要依靠交通警察景行人工調(diào)整紅綠燈顯示時間,人工不能夠一天24 小時的對車流量人流量進行實時調(diào)整。想用嵌入式來實現(xiàn)交通信號的控制,是因為嵌入式信號系統(tǒng)實現(xiàn)行人,機動車和非機動車的有序運行,減輕交通壓力,提高道路的通暢度和交通安全性?,F(xiàn)在是智能化交通,將交通情況通過網(wǎng)絡傳回指揮中心,以便于決策系統(tǒng)。利用嵌入式系統(tǒng),計算機可以下發(fā)指令實現(xiàn)遠程控制紅綠燈時長[1]。
Raspberry Pi 是基于ARM的微型電腦主板,它的內(nèi)存硬盤為SD/MicroSD 卡,卡片主板有4 個USB 接口,可以外接鼠標、鍵盤等,一個以太網(wǎng)接口,同時還有HDMI 高清視頻輸出接口,為學習計算機編程教育而設計,它是只有信用卡大小,它相當于一個小型電腦,其系統(tǒng)是基于Linux 操作系統(tǒng)的。本項目采用的是樹莓派3 代B+。3 代B+型有一個1.4GHZ 的64 位處理器,相比于B 型增加了5GHz 的雙頻wifi 網(wǎng)絡,變?yōu)?.4GHz 和5GHz雙頻無線網(wǎng)。雙頻無線網(wǎng)使得上網(wǎng)速度更快。有線網(wǎng)絡為千兆以太網(wǎng)(最大吞吐量為300Mbps),并且能夠通過額外的HAT 以太網(wǎng)供電[2]。
在樹莓派官網(wǎng)上下載最新的樹莓派系統(tǒng)鏡像文件Raspbian,下載安裝鏡像的工具Win32DiskImager,在樹莓派上安裝好操作系統(tǒng)。利用網(wǎng)線將樹莓派與電腦連接起來。打開putty這個軟件,輸入用戶名與密碼,Putty 是一個ssh“終端軟件”,連接的是遠程的ssh 服務(或者是internet 服務),“遠程”在這里就是樹莓派。第一次進入這個界面會有raspi-config 配置,在這里可以對樹莓派進行系統(tǒng)設置,例如:可以更改中文設置,地域和時間及登入密碼及wifi 設置等。
PLC 控制系統(tǒng),又稱為可編程邏輯控制器[3]。本項目是采用軟PLC 來進行設計的?,F(xiàn)在信號燈是由繼電器控制,在控制過程中會產(chǎn)生強耦合,這樣導致編程很難編寫。PLC 編程方法簡單,大多采用梯形圖進行編程。這種梯形圖類似于繼電器控制線路的梯形圖,采用人們熟悉的常開觸點、常閉觸電、線圈等符號,比較容易去學習。而且,PLC 出故障幾率也比較小,并且具有完善的診斷及顯示功能,很容易找出故障點,維修簡單[4-5]。
OpenPLC 的一項主要是致力于IEC61131-3 的活動,它是工控編程唯一的全球標準,它支持四種編程語言:IL(指令表語言)、LD(梯形圖語言)、FBD(功能塊圖語言)和ST(結(jié)構(gòu)文本語言)。
OpenPLC 項目由三部分組成:運行環(huán)境,編輯器和HMI Builder。運行時應安裝在自己的設備上,再此項目中是安裝在樹莓派中,并負責執(zhí)行PLC 程序。編輯器是在自己的計算機上運行的軟件,用于創(chuàng)建PLC 程序。最后,ScadaBR 是HMI Builder。使用ScadaBR,自己可以創(chuàng)建漂亮的基于Web 的動畫,以反映程序過程的運行狀態(tài)。ScadaBR 通過Modbus / TCP 與OpenPLC Runtime 通信。OpenPLC 是一個基于易于使用的軟件的開源可編程邏輯控制器。
必須在自己的設備上安裝OpenPLC Runtime 才能執(zhí)行PLC程序。OpenPLC Runtime 支持多個嵌入式系統(tǒng)平臺,也可以作為軟PLC 安裝在Windows 和Linux 機器上。登入安裝PLC 步驟的的網(wǎng)址,首先要安裝運行環(huán)境,點擊runtime,選擇嵌入式平臺點擊樹莓派圖標,根據(jù)所示步驟在操作終端輸入對應指令,此時樹莓派應該是處于聯(lián)網(wǎng)狀態(tài)的。
安裝運行環(huán)境大約1 個多小時,OpenPLC 運行時有一個內(nèi)置的web 服務器,允許配置OpenPLC 并上傳新的程序供其運行??梢酝ㄟ^打開計算機上的web 瀏覽器并在端口8080 輸入OpenPLC 設備的IP 地址來訪問此web 服務器。
OpenPLC Editor 是一個允許為OpenPLC 運行時編寫PLC 程序的軟件。程序根據(jù)IEC 61131-3 標準編寫。要新建項目,必須要安裝好OpenPLC 編輯器。要進入“OpenPLC Editor”下載編輯器軟件。在任何情況下,都不應該在Raspberry Pi 本身上運行編輯器,除非有很大的耐心,并且不建議,因為性能不好。編輯器應該在功能更強大的桌面公司上運行。 因此自己下載的windows版,下載完成后,在編輯器中創(chuàng)建項目后,只需生成ST 文件(文件→生成程序)并通過Web 界面上載生成的ST 文件到樹莓派運行環(huán)境中。
ScadaBR 是一個開源的監(jiān)控和數(shù)據(jù)采集(Scada)系統(tǒng),允許自己為自動化項目創(chuàng)建交互式屏幕,也稱為人機界面(HMI)。ScadaBR 可以與幾種不同的PLC 通信,包括OpenPLC,這使它成為OpenPLC 運行時和編輯器的完美伴侶。安裝ScadaBR 最簡單的方法是使用虛擬機。虛擬機是一種可以在自己的計算機內(nèi)創(chuàng)建虛擬計算機的軟件。安裝VirtualBox 后,自己只需將 ScadaBR 映像文件加載到VirtualBox 中,即可在系統(tǒng)上使用即用型ScadaBR 環(huán)境。
表1 OpenPLC 控制的交通信號燈控制電路的I/O 地址編號
圖1 OpenPLC 控制交通信號燈梯形圖
圖示所實現(xiàn)的功能為南北方向綠燈亮25s,南北方向黃燈亮5s,東西方向紅燈亮30s。南北方向紅燈亮30s,東西方向綠燈亮25s,東西方向黃燈亮5s。
通過單擊工具欄上的“啟動PLC 模擬”來模擬程序的運行過程。編譯成功,OpenPLC 編輯器將開始運行此程序。單擊左側(cè)面板上的Debug 實例來查看程序的電流,綠色的線被激活,黑色的線不被激活。我通過右鍵單擊并選擇強制True 或強制False 來強制激活或取消激活觸點。除了以圖形方式查看圖表上的電流之外,還可以在屏幕右側(cè)的調(diào)試器面板中跟蹤程序的每個變量中的數(shù)據(jù)。如圖2 仿真圖所示。
圖2 OpenPLC 仿真運行圖
此仿真圖實現(xiàn)的功能為:
0-25 秒:lamp0、lamp5 亮,其它滅
25-30 秒:lamp1、lamp5 亮,其它滅
30-55 秒:lamp2、lamp3 亮,其它滅
55-60 秒:lamp2、lamp4 亮,其它滅
最后,在創(chuàng)建并測試了程序之后,最后一步是以OpenPLC Runtime 可以理解的格式生成程序。為此只需在工具欄上單擊“ 為OpenPLC 運行時生成程序”,然后將.st 文件保存在計算機上。此文件是使用OpenPLC Runtime 可以理解的語言編寫的梯形圖邏輯程序。稍后使用OpenPLC 的Web 界面上傳此.st 文件。
在樹莓派瀏覽器中輸入樹莓派IP 地址的名稱,192.168.137.165:8080,在此將進入登入界面,將上傳到PLC 運行環(huán)境中的文件進行編譯,如果代碼沒有錯誤,它將運行成功,在面板中還可以查看“查看PLC 日志”如圖3 所示。可以確定一切都運行良好。
圖3 運行日志
OpenPLC 使用Modbus/TCP 進行Scada 通信。Modbus 是業(yè)界最常用的協(xié)議之一,是開源和免版稅的。這使得OpenPLC 幾乎與現(xiàn)有的任何Scada 軟件兼容。ScadaBR 是免費的開源軟件,用于開發(fā)自動化,數(shù)據(jù)采集和監(jiān)控應用[6]。
在Raspberry Pi 上運行OpenPLC,它已經(jīng)是一個modbus 從設備?;旧希琺odbus 只是一個讀寫PLC 存儲器的協(xié)議。OpenPLC 應用程序在自己的Raspberry Pi 上運行。OpenPLC 可以在許多平臺上運行,包括Windows 或Linux 計算機。無論在哪里運行,ScadaBR 都會與OpenPLC 應用程序進行通信。自己所要做的就是添加運行OpenPLC 的機器的正確IP 地址,并確保OpenPLC 運行時正在運行。在頂部菜單上轉(zhuǎn)到數(shù)據(jù)源并添加Modbus IP 設備。將其命名為自己想要的任何名稱,將輪詢頻率更改為更小的值(默認值為5 分鐘),自己設置的時間為1 毫秒,為自己的OpenPLC 添加IP 地址并將連接類型更改為TCP +保持活動狀態(tài)[7]。
首先將虛擬機,樹莓派,電腦,三者處于同一局域網(wǎng),這時候就要設置樹莓派的無線IP 地址,將樹莓派的IP 地址設置為192.168.43.2,此時虛擬機的IP 地址為192.168.43.9。此時已經(jīng)保證三者處于同一局域網(wǎng)。
打開Scada 添加數(shù)據(jù)源,選擇添加類型為Modbus IP 協(xié)議,添加樹莓派的IP 地址為192.168.43.2,它的連接端口為502,名稱可以任意填寫,需要添加數(shù)據(jù)點,我添加了6 個數(shù)據(jù)點,每個數(shù)據(jù)點有不同的偏移量,以此對應不同的信號燈顯示情況,運行OpenPLC,在觀察清單中可以查看6 個數(shù)據(jù)點的運行情況,如圖4 所示??梢渣c擊查看點的詳細運行情況,如圖5 所示。
圖4 觀察清單
圖5 502 端口運行狀態(tài)
首先需要安裝一個依賴,將樹莓派聯(lián)網(wǎng)后,打開命令行窗口,執(zhí)行sudo pip install pymodbus 進行安裝。之后新建一個python 文件,用來寫modbus 協(xié)議文件??蛻舳说腎P 地址寫之前設置的無線地址,為192.168.43.2,如圖6 所示。然后編寫一個文檔file1.txt,文檔里面是關于天氣狀況的數(shù)據(jù)。打開命令行窗口,cd 到這兩個文件所在路徑,輸入sudo python plc_modbus_tcp.py 就可以了,將進行讀取數(shù)據(jù),如圖7 所示。在之前設置的數(shù)據(jù)源中新添加一個數(shù)據(jù)點,用來模擬數(shù)據(jù)傳輸。py 程序?qū)崿F(xiàn)的功能是:讀取file1.txt 文件的數(shù)據(jù),然后反復的以1hz 頻率發(fā)送至plc 的holding register 的0 地址。如圖8 所示。
圖6 python 建modbus 協(xié)議
圖7 執(zhí)行python 文件
圖8 讀取數(shù)據(jù)
本項目實現(xiàn)了利用基于Linux 的軟PLC 實現(xiàn)對交通信號的控制。根據(jù)設計要求,設計完成OpenPLC 編寫控制信號燈梯形圖,經(jīng)過仿真,設計能到達目標要求,實現(xiàn)對交通信號燈的軟件控制。利用Modbus TCP 實現(xiàn)模擬數(shù)據(jù)傳輸,能夠在Scada 中顯示,并且實現(xiàn)交通信號燈的數(shù)據(jù)傳輸。利用嵌入式交通信號系統(tǒng)緩解了城市交通擁擠問題,提高城市交通運行效率,能夠適應未來的城市交通的發(fā)展。隨著嵌入式信號系統(tǒng)的發(fā)展及普及在將來的發(fā)展中逐漸成為主流,在市場上很有競爭力。