周 余,張 偉,丁躍華
(1.重慶復融科技有限公司,重慶 401220;2.重慶工程職業技術學院電氣工程學院,重慶 402260)
隨著我國人民生活水平的不斷提高,如今的汽車已經如同電視和手機一樣,進入到每個人的生活。隨之而來的問題是,我國的汽車保有量在近年出現了爆發式增長,停車位嚴重供不應求。在這樣的背景下,立體車庫應運而生。立體車庫的安全運行關乎人們的生命財產安全。但傳統立體車庫由于設備的特殊性和成本限制,尚未實現對載車板運行的實時監控。如當載車板運行過程中鋼絲繩(或鏈條)斷裂或發生其他機械故障時,控制器無法及時停止載車板運行,也就無法避免重大安全事故的發生。為此,設計了基于Modbus協議的數據采集系統。
本系統由可編程邏輯控制器(programmable logic controller,PLC)、Modbus通信模塊、ZigBee模塊、傾角開關四個部分構成,其結構如圖1所示。
傾角開關安裝在載車板上,隨著載車板的運行一起升降橫移。傾角開關通過Modbus協議與PLC通信,將立體車庫中載車板的姿態信息實時傳送給PLC。但由于立體車庫的特殊性,傾角開關的供電和信號傳輸線路不便采用有線連接的方式。本設計采用基于ZigBee協議的無線數據傳輸模塊,實現傾角開關與PLC之間的無線通信。ZigBee協議依據IEEE 802.15.4標準,以接力的方式將數據從一個傳感器傳遞到另一個傳感器[1]。ZigBee協議是一種低成本、低功耗、可靠性高且復雜度低的短程無線通信協議,能夠滿足小型、低成本的固定、便攜或移動設備的無線組網要求[2]。由于傾角開關和ZigBee模塊的功耗低,因此本設計采用可充電鋰電池供電,由立體車庫中已有的線路,為鋰電池周期性地充電。
PLC選用西門子S7 315F-2DP,Modbus通信模塊選用西門子CP341-RS485/422(以下簡稱CP341)。PLC 與CP341之間通過背板總線連接;CP341與Zigbee模塊、ZigBee模塊與傾角開關之間都采用標準兩線制RS-485總線[3](以下簡稱總線)相連。
PLC通過CP341不間斷地向傾角開關發出數據請求,傾角開關根據PLC發出的請求,將指定寄存器中保存的載車板的姿態信息發送給PLC。由于在控制器與傾角開關之間布線復雜而困難,因此采用ZigBee模塊進行無線通信。在本設計中,只需要將ZigBee之間的無線連接想象為一根標準兩線制總線即可。
ZigBee主站(Coordinator)與CP341相連,ZigBee從站與傾角開關相連。ZigBee主站與CP341的波特率應當一致,但應當大于ZigBee從站,ZigBee從站各自的波特率可以互不相同。
ZigBee模塊的工作電壓為DC 5~38 V。與CP341連接的ZigBee模塊為主站(稱為ZigBee主站),ZigBee主站與CP341共用DC 24 V電源;與傾角開關相連的ZigBee模塊為從站(稱為ZigBee從站)。由于傾角開關的工作電壓為DC 5 V,因此ZigBee從站與傾角開關共用DC 5 V電源。
Modbus協議由美國Modicon公司于1979年提出[4]。由于其傳輸機制簡單、可靠,至今仍廣泛應用于現場工業組網中。Modbus協議采用主從工作方式[5]。在同一個通信網絡中,只存在一個主站。通信以主站和從站之間的請求和響應形式,或者主站通過廣播的形式向所有從站發送指令的形式建立[6]。Modbus協議可以選擇的傳輸方式有兩種,美國信息交換標準碼(american standard code for information interchange,ASCII)模式和遠程終端單元(remote terminal unit,RTU)模式[7]。本設計采用RTU模式。
PLC為Modbus主站,通過CP341主動發起通信請求;傾角開關為Modbus從站,被動地根據主站的請求發送指定寄存器中的數據。主站不間斷地將消息幀發送到總線上。總線上的所有從站都將消息幀包含的站地址與自己的進行比較。站地址相同即執行消息幀中的功能碼對應的請求,不同則丟掉消息幀且不響應任何請求。
本設計中,設定Modbus通信的格式為數據位8位、停止位1位,無校驗。Modbus協議要求通信雙方之間的通信格式一致,否則無法建立通信。Modbus協議共有8個功能碼,分別是01H、02H、03H、04H、05H、06H、0EH、10H。不同的功能碼代表不同的請求[8]。本設計用到功能碼03H,用于讀取傾角開關多個寄存器數據。通過查詢傾角開關用戶手冊,其內部寄存器地址0x34開始的12個字節的數據分別為X軸、Y軸、Z軸的傾斜角度、角速度、加速度的原始數據,因此消息幀格式如表1所示。

表1 消息幀格式
編程軟件為SIMATIC STEP 7 V5.5。打開編程軟件后,首先新建一個項目,并將S7-300添加到項目中。打開硬件組態界面,將PLC和CP341添加到硬件組態中,并打開CP341的參數設置界面。按照前文所述設置Modbus通信參數,保存并編譯后,將硬件組態下載到硬件中。完成上述操作后,打開項目中的OB1程序塊,開始編程。本系統的程序主要包括兩個部分:數據收發模塊程序和數據處理模塊程序。
數據收發模塊的程序流程如圖3所示[9-10]。

圖2 數據收發模塊的程序流程圖
從站1和從站2的發送數據塊分別為DB110和DB111。從站1的發送數據塊如表2所示。從站2的發送數據塊只需將站地址slave_adr改為B#16#11。從站1和從站2的接收數據塊分別為DB120和DB121,包含一個長度為50的整型數組變量inidata[...]。在OB1中調用FB7(P_RCV_RK)和FB8(P_SND_RK),并編寫好輪詢程序[10],循環發送DB110和DB111中的消息幀。

表2 從站1的發送數據塊
數據處理模塊需要將接收數據塊DB120和DB121中接收到的載車板的傾斜角度、角速度、加速度的原始數據inidata[n],分別通過式(1)~式(3),換算為對應的傾斜角度、角速度和加速度的實際值,并存儲到數據塊DB300和DB301中。
①傾斜角度計算公式為:
(1)
式中:n取值為10~12,計算結果分別表示X、Y、Z軸的傾斜角度。
②角速度計算公式為:
(2)
式中:n取值為4~6,計算結果分別表示X、Y、Z軸的角速度。
③加速度計算公式為:
(3)
式中:n取值為1~3,計算結果分別表示X、Y、Z軸的加速度;g為當地重力加速度。
當安裝有傾角開關和Zigbee模塊的載車板作升降或橫移運動時,數據塊DB300和DB301中的數據實時更新。PLC實時讀取載車板的姿態信息如表3所示。

表3 載車板的姿態信息
由于在運動過程中,載車板受到空氣流動和自身機械結構震動的影響,其傾斜角度、角速度、加速度的值并不是一個恒定值,而是在一個極小的區間內波動。假設載車板運行正常時,其傾斜角度、角速度、加速度的波動范圍的絕對值分別為Δd1、Δd2、Δd3,則可以分別從以下兩大類情況分析載車板的傾斜角度、角速度、加速度與其運行狀態之間的關系。
若載車板的傾斜角度值的波動范圍小于等于Δd1,則表示載車板運行正常;若載車板的傾斜角度值的波動范圍大于Δd1,則表示載車板可能發生了傾斜。此時,PLC應當控制載車板的橫移電機立即停止運行。
載車板作勻速橫移運動時,X軸、Y軸、Z軸的角速度應當近似為0。若載車板的角速度值的波動范圍小于等于Δd2,則表示載車板運行正常;若載車板的角速度值的波動范圍大于Δd2,則表示載車板可能發生了傾斜。此時,PLC應當控制載車板的橫移電機,立即停止運行。
載車板作勻速橫移運動時,X軸、Y軸的加速度值應當近似為零;Z軸的加速度受地球引力的影響,其值應當近似為重力加速度。若載車板的加速度值波動范圍小于等于Δd3,則表示載車板運行正常;若載車板的加速度值的波動范圍大于Δd3,則表示載車板可能發生了傾斜。此時,PLC應當控制載車板的橫移電機立即停止運行。
本設計中的Modbus通信協議基于標準兩線制RS-485總線。由于RS-485總線結構簡單、傳輸數據量大、容錯能力強,因此Modbus協議的數據傳輸可靠性高、實時性表現優異。而通過ZigBee模塊替代有線連接實現無線通信,解決了在立體車庫中布線困難的問題。綜上所述,本設計實現了對載車板運行過程的實時監控,消除了電氣監控盲區,解決了傳統立體車庫運行的安全問題,為傳統立體車庫的智能化改造和立體車庫本身的廣泛應用,提供了一種可靠性高、成本可控、易于實現的解決方案。