王慧
(西南交通大學,四川 成都611756)
現在,十字路口的交通信號燈的計時功能還不完善,不管是在上下班高峰期還是非高峰期,路口的交通燈計時,時間一直是不變的,不能夠根據各個方向的交通情況進行實時調整,這樣的設定方式無法靈活控制各個方向的交通擁擠情況,一定程度上加劇了道路擁擠狀況。目前,在大型十字路口主要依靠交通警察景行人工調整紅綠燈顯示時間,人工不能夠一天24 小時的對車流量人流量進行實時調整。想用嵌入式來實現交通信號的控制,是因為嵌入式信號系統實現行人,機動車和非機動車的有序運行,減輕交通壓力,提高道路的通暢度和交通安全性。現在是智能化交通,將交通情況通過網絡傳回指揮中心,以便于決策系統。利用嵌入式系統,計算機可以下發指令實現遠程控制紅綠燈時長[1]。
Raspberry Pi 是基于ARM的微型電腦主板,它的內存硬盤為SD/MicroSD 卡,卡片主板有4 個USB 接口,可以外接鼠標、鍵盤等,一個以太網接口,同時還有HDMI 高清視頻輸出接口,為學習計算機編程教育而設計,它是只有信用卡大小,它相當于一個小型電腦,其系統是基于Linux 操作系統的。本項目采用的是樹莓派3 代B+。3 代B+型有一個1.4GHZ 的64 位處理器,相比于B 型增加了5GHz 的雙頻wifi 網絡,變為2.4GHz 和5GHz雙頻無線網。雙頻無線網使得上網速度更快。有線網絡為千兆以太網(最大吞吐量為300Mbps),并且能夠通過額外的HAT 以太網供電[2]。
在樹莓派官網上下載最新的樹莓派系統鏡像文件Raspbian,下載安裝鏡像的工具Win32DiskImager,在樹莓派上安裝好操作系統。利用網線將樹莓派與電腦連接起來。打開putty這個軟件,輸入用戶名與密碼,Putty 是一個ssh“終端軟件”,連接的是遠程的ssh 服務(或者是internet 服務),“遠程”在這里就是樹莓派。第一次進入這個界面會有raspi-config 配置,在這里可以對樹莓派進行系統設置,例如:可以更改中文設置,地域和時間及登入密碼及wifi 設置等。
PLC 控制系統,又稱為可編程邏輯控制器[3]。本項目是采用軟PLC 來進行設計的。現在信號燈是由繼電器控制,在控制過程中會產生強耦合,這樣導致編程很難編寫。PLC 編程方法簡單,大多采用梯形圖進行編程。這種梯形圖類似于繼電器控制線路的梯形圖,采用人們熟悉的常開觸點、常閉觸電、線圈等符號,比較容易去學習。而且,PLC 出故障幾率也比較小,并且具有完善的診斷及顯示功能,很容易找出故障點,維修簡單[4-5]。
OpenPLC 的一項主要是致力于IEC61131-3 的活動,它是工控編程唯一的全球標準,它支持四種編程語言:IL(指令表語言)、LD(梯形圖語言)、FBD(功能塊圖語言)和ST(結構文本語言)。
OpenPLC 項目由三部分組成:運行環境,編輯器和HMI Builder。運行時應安裝在自己的設備上,再此項目中是安裝在樹莓派中,并負責執行PLC 程序。編輯器是在自己的計算機上運行的軟件,用于創建PLC 程序。最后,ScadaBR 是HMI Builder。使用ScadaBR,自己可以創建漂亮的基于Web 的動畫,以反映程序過程的運行狀態。ScadaBR 通過Modbus / TCP 與OpenPLC Runtime 通信。OpenPLC 是一個基于易于使用的軟件的開源可編程邏輯控制器。
必須在自己的設備上安裝OpenPLC Runtime 才能執行PLC程序。OpenPLC Runtime 支持多個嵌入式系統平臺,也可以作為軟PLC 安裝在Windows 和Linux 機器上。登入安裝PLC 步驟的的網址,首先要安裝運行環境,點擊runtime,選擇嵌入式平臺點擊樹莓派圖標,根據所示步驟在操作終端輸入對應指令,此時樹莓派應該是處于聯網狀態的。
安裝運行環境大約1 個多小時,OpenPLC 運行時有一個內置的web 服務器,允許配置OpenPLC 并上傳新的程序供其運行??梢酝ㄟ^打開計算機上的web 瀏覽器并在端口8080 輸入OpenPLC 設備的IP 地址來訪問此web 服務器。
OpenPLC Editor 是一個允許為OpenPLC 運行時編寫PLC 程序的軟件。程序根據IEC 61131-3 標準編寫。要新建項目,必須要安裝好OpenPLC 編輯器。要進入“OpenPLC Editor”下載編輯器軟件。在任何情況下,都不應該在Raspberry Pi 本身上運行編輯器,除非有很大的耐心,并且不建議,因為性能不好。編輯器應該在功能更強大的桌面公司上運行。 因此自己下載的windows版,下載完成后,在編輯器中創建項目后,只需生成ST 文件(文件→生成程序)并通過Web 界面上載生成的ST 文件到樹莓派運行環境中。
ScadaBR 是一個開源的監控和數據采集(Scada)系統,允許自己為自動化項目創建交互式屏幕,也稱為人機界面(HMI)。ScadaBR 可以與幾種不同的PLC 通信,包括OpenPLC,這使它成為OpenPLC 運行時和編輯器的完美伴侶。安裝ScadaBR 最簡單的方法是使用虛擬機。虛擬機是一種可以在自己的計算機內創建虛擬計算機的軟件。安裝VirtualBox 后,自己只需將 ScadaBR 映像文件加載到VirtualBox 中,即可在系統上使用即用型ScadaBR 環境。

表1 OpenPLC 控制的交通信號燈控制電路的I/O 地址編號

圖1 OpenPLC 控制交通信號燈梯形圖
圖示所實現的功能為南北方向綠燈亮25s,南北方向黃燈亮5s,東西方向紅燈亮30s。南北方向紅燈亮30s,東西方向綠燈亮25s,東西方向黃燈亮5s。
通過單擊工具欄上的“啟動PLC 模擬”來模擬程序的運行過程。編譯成功,OpenPLC 編輯器將開始運行此程序。單擊左側面板上的Debug 實例來查看程序的電流,綠色的線被激活,黑色的線不被激活。我通過右鍵單擊并選擇強制True 或強制False 來強制激活或取消激活觸點。除了以圖形方式查看圖表上的電流之外,還可以在屏幕右側的調試器面板中跟蹤程序的每個變量中的數據。如圖2 仿真圖所示。

圖2 OpenPLC 仿真運行圖
此仿真圖實現的功能為:
0-25 秒:lamp0、lamp5 亮,其它滅
25-30 秒:lamp1、lamp5 亮,其它滅
30-55 秒:lamp2、lamp3 亮,其它滅
55-60 秒:lamp2、lamp4 亮,其它滅
最后,在創建并測試了程序之后,最后一步是以OpenPLC Runtime 可以理解的格式生成程序。為此只需在工具欄上單擊“ 為OpenPLC 運行時生成程序”,然后將.st 文件保存在計算機上。此文件是使用OpenPLC Runtime 可以理解的語言編寫的梯形圖邏輯程序。稍后使用OpenPLC 的Web 界面上傳此.st 文件。
在樹莓派瀏覽器中輸入樹莓派IP 地址的名稱,192.168.137.165:8080,在此將進入登入界面,將上傳到PLC 運行環境中的文件進行編譯,如果代碼沒有錯誤,它將運行成功,在面板中還可以查看“查看PLC 日志”如圖3 所示??梢源_定一切都運行良好。

圖3 運行日志
OpenPLC 使用Modbus/TCP 進行Scada 通信。Modbus 是業界最常用的協議之一,是開源和免版稅的。這使得OpenPLC 幾乎與現有的任何Scada 軟件兼容。ScadaBR 是免費的開源軟件,用于開發自動化,數據采集和監控應用[6]。
在Raspberry Pi 上運行OpenPLC,它已經是一個modbus 從設備。基本上,modbus 只是一個讀寫PLC 存儲器的協議。OpenPLC 應用程序在自己的Raspberry Pi 上運行。OpenPLC 可以在許多平臺上運行,包括Windows 或Linux 計算機。無論在哪里運行,ScadaBR 都會與OpenPLC 應用程序進行通信。自己所要做的就是添加運行OpenPLC 的機器的正確IP 地址,并確保OpenPLC 運行時正在運行。在頂部菜單上轉到數據源并添加Modbus IP 設備。將其命名為自己想要的任何名稱,將輪詢頻率更改為更小的值(默認值為5 分鐘),自己設置的時間為1 毫秒,為自己的OpenPLC 添加IP 地址并將連接類型更改為TCP +保持活動狀態[7]。
首先將虛擬機,樹莓派,電腦,三者處于同一局域網,這時候就要設置樹莓派的無線IP 地址,將樹莓派的IP 地址設置為192.168.43.2,此時虛擬機的IP 地址為192.168.43.9。此時已經保證三者處于同一局域網。
打開Scada 添加數據源,選擇添加類型為Modbus IP 協議,添加樹莓派的IP 地址為192.168.43.2,它的連接端口為502,名稱可以任意填寫,需要添加數據點,我添加了6 個數據點,每個數據點有不同的偏移量,以此對應不同的信號燈顯示情況,運行OpenPLC,在觀察清單中可以查看6 個數據點的運行情況,如圖4 所示??梢渣c擊查看點的詳細運行情況,如圖5 所示。

圖4 觀察清單

圖5 502 端口運行狀態
首先需要安裝一個依賴,將樹莓派聯網后,打開命令行窗口,執行sudo pip install pymodbus 進行安裝。之后新建一個python 文件,用來寫modbus 協議文件??蛻舳说腎P 地址寫之前設置的無線地址,為192.168.43.2,如圖6 所示。然后編寫一個文檔file1.txt,文檔里面是關于天氣狀況的數據。打開命令行窗口,cd 到這兩個文件所在路徑,輸入sudo python plc_modbus_tcp.py 就可以了,將進行讀取數據,如圖7 所示。在之前設置的數據源中新添加一個數據點,用來模擬數據傳輸。py 程序實現的功能是:讀取file1.txt 文件的數據,然后反復的以1hz 頻率發送至plc 的holding register 的0 地址。如圖8 所示。

圖6 python 建modbus 協議

圖7 執行python 文件

圖8 讀取數據
本項目實現了利用基于Linux 的軟PLC 實現對交通信號的控制。根據設計要求,設計完成OpenPLC 編寫控制信號燈梯形圖,經過仿真,設計能到達目標要求,實現對交通信號燈的軟件控制。利用Modbus TCP 實現模擬數據傳輸,能夠在Scada 中顯示,并且實現交通信號燈的數據傳輸。利用嵌入式交通信號系統緩解了城市交通擁擠問題,提高城市交通運行效率,能夠適應未來的城市交通的發展。隨著嵌入式信號系統的發展及普及在將來的發展中逐漸成為主流,在市場上很有競爭力。