郭東福
(福建東成數(shù)字技術(shù)有限公司, 福建 福州 350008)
自動(dòng)洗車機(jī)已經(jīng)在市場推廣應(yīng)用多年,使用形式多種多樣。傳統(tǒng)PLC 無人值守洗車系統(tǒng)有兩個(gè)痛點(diǎn):一是PLC 對(duì)外接網(wǎng)絡(luò)模塊沒有絕對(duì)控制權(quán),當(dāng)網(wǎng)絡(luò)有問題時(shí),不能及時(shí)重新連接、重新啟動(dòng)網(wǎng)絡(luò);二是PLC 不能通過網(wǎng)絡(luò)模塊對(duì)自身程序進(jìn)行遠(yuǎn)程升級(jí)、修復(fù)程序BUG、增加程序功能。本研究是一種以GD32F103ZET6 單片機(jī)+ML110S 網(wǎng)絡(luò)Cat.1 模塊為核心的無人值守洗車系統(tǒng)。與傳統(tǒng)的PLC 系統(tǒng)相比,單片機(jī)+Cat.1 對(duì)于網(wǎng)絡(luò)具有完整的處理流程,能夠解決PLC 系統(tǒng)的這兩個(gè)痛點(diǎn),并且這兩個(gè)痛點(diǎn)在無人值守的系統(tǒng)里尤為重要,有較高的推廣、研究價(jià)值。
PLC 廣泛用于各個(gè)領(lǐng)域,例如工業(yè)系統(tǒng)、自動(dòng)控制系統(tǒng)等,效果顯著。技術(shù)趨于成熟,應(yīng)用范圍不斷擴(kuò)大,在現(xiàn)代工業(yè)發(fā)展中極為重要[1]。
PLC 洗車系統(tǒng)以PLC 為核心,如圖1 所示。PLC根據(jù)使用范圍不同,自身帶有不同數(shù)量的I/O 點(diǎn)位。由于洗車系統(tǒng)是一個(gè)非常復(fù)雜的控制系統(tǒng),需要的I/O點(diǎn)位非常多,輸入輸出達(dá)到了80 個(gè)左右,所以PLC自身的I/O 點(diǎn)位已經(jīng)不能滿足洗車系統(tǒng)的使用要求,需要外擴(kuò)輸入輸出模塊。PLC 本身擴(kuò)展能力非常強(qiáng),可以根據(jù)不同的使用需求,外加不同功能的擴(kuò)展模塊。同時(shí)由于PLC 輸出點(diǎn)位驅(qū)動(dòng)能力不足,需要外加中間繼電器以達(dá)到強(qiáng)驅(qū)動(dòng)能力。PLC 也不具備語音能力,需要外加語音模塊,提前錄好音頻,使用I/O 進(jìn)行控制不同的語音段播放。在洗車系統(tǒng)中分別外擴(kuò)了兩個(gè)I/O 擴(kuò)展模塊,一個(gè)485 通訊模塊,一個(gè)4~20 mA模塊。整個(gè)系統(tǒng)顯得非常臃腫。
圖1 PLC 系統(tǒng)
PLC 洗車系統(tǒng)使用的網(wǎng)絡(luò)模塊,一般使用外加的第三方控制盒子,如繁易等,由第三方提供網(wǎng)絡(luò)支持,通過RS485 通訊方式,采用Modbus 協(xié)議,對(duì)PLC 進(jìn)行寄存器讀寫。如圖2 所示為某PLC 洗車系統(tǒng)+繁易盒子的Modbus 配置參數(shù)。
圖2 Modbus 配置參數(shù)
參數(shù)mqtt_connect 為網(wǎng)絡(luò)連接狀態(tài),其數(shù)值1 代表網(wǎng)絡(luò)已連接,0 代表網(wǎng)絡(luò)斷開。
參數(shù)errCode 為故障代碼,所對(duì)應(yīng)PLC 寄存器地址為501,寄存器不同值代表具體的故障,如1 為風(fēng)機(jī)過載,2 為行走過載,3 為頂刷過載等等。
參數(shù)start 及washMode1 等為控制洗車機(jī)啟動(dòng),通過給寄存器1000~1003 寫1 來啟動(dòng)不同的洗車模式。
可以看出,PLC 跟網(wǎng)絡(luò)模塊為協(xié)作模式,互不隸屬。PLC 使用網(wǎng)絡(luò)模塊的缺點(diǎn)顯而易見:一是網(wǎng)絡(luò)狀態(tài)只有1 和0 兩種狀態(tài),當(dāng)網(wǎng)絡(luò)有故障不能連接時(shí),并不能清楚知道是什么問題導(dǎo)致了故障,PLC 也不能對(duì)故障進(jìn)行復(fù)位、重連等操作;二是當(dāng)機(jī)器故障時(shí),PLC 只能用寄存器值來代表不同故障,需要在服務(wù)器端事先列出值與故障的對(duì)應(yīng)關(guān)系,如果不清楚對(duì)應(yīng)關(guān)系,或者PLC 有新增故障時(shí),單純從一個(gè)數(shù)值并不能清楚地表示出故障內(nèi)容;三是網(wǎng)絡(luò)模塊并不能直接對(duì)PLC 軟件進(jìn)行升級(jí),服務(wù)器與PLC 之間的數(shù)據(jù)需要通過網(wǎng)絡(luò)模塊轉(zhuǎn)發(fā);因此有必要尋找到一種方式來解決上述問題。
2020 年5 月,工信部發(fā)布了《關(guān)于深入推進(jìn)移動(dòng)物聯(lián)網(wǎng)全面發(fā)展的通知》,明確提出推動(dòng)存量2G、3G物聯(lián)網(wǎng)業(yè)務(wù)向NB-IoT、4G 和5G 網(wǎng)絡(luò)遷移。其中Cat.1以比NB-IoT 通信能力強(qiáng)、比Cat.4 成本更低優(yōu)勢,在物聯(lián)網(wǎng)通信中廣受用戶喜愛[2]。
ML110S 模組是專為物聯(lián)網(wǎng)領(lǐng)域設(shè)計(jì)的小型化Cat.1 無線通信模組,尺寸僅為24.0 mm×24.0 mm×2.5 mm,支持GSM/LTE、TDD/LTE、FDD 制式,具有10 Mbit/s 下行和5 Mbps 上行數(shù)據(jù)速率,可提供語音、TTS 和數(shù)傳服務(wù),支持Modem AT/OpenCPU 方案。
單片機(jī)洗車系統(tǒng)以GD32F103ZET6 為核心,如圖3 所示。GD32F103ZET6 單片機(jī)一共有112 個(gè)I/O 口、具有12 位A/D 模數(shù)轉(zhuǎn)換、5 個(gè)UARTS 等硬件接口,一個(gè)單片機(jī)再加上少許外圍電路就可滿足洗車系統(tǒng)的硬件控制要求,不需要另外擴(kuò)展接口模塊[3]。同時(shí)單片機(jī)輸出直接控制繼電器,不需要再外接中間繼電器,極大節(jié)約了成本[4]。通過對(duì)比PLC 系統(tǒng)框圖,可以很明顯地看到,使用單片機(jī)作為核心控制的洗車系統(tǒng),少了擴(kuò)展模塊、語音模塊、中間繼電器、4~20 mA模塊、485 模塊。集成度更高,系統(tǒng)更簡單實(shí)用[5]。
圖3 單片機(jī)系統(tǒng)
如圖1 與圖3 所示,比較單片機(jī)與PLC 系統(tǒng)框圖可以看出單片機(jī)系統(tǒng)優(yōu)勢明顯,整體要比PLC 系統(tǒng)簡潔。Cat.1 網(wǎng)絡(luò)模塊作為單片機(jī)的外設(shè),為單片機(jī)所控制,單片機(jī)對(duì)網(wǎng)絡(luò)模塊有絕對(duì)的控制權(quán)限。相當(dāng)“大腦”有了“手腳”,“大腦”控制“手腳”來為“大腦”提供服務(wù)。有了這種隸屬關(guān)系,單片機(jī)就能很好了解網(wǎng)絡(luò)狀態(tài),并能實(shí)時(shí)根據(jù)網(wǎng)絡(luò)狀態(tài)來處理網(wǎng)絡(luò)關(guān)系。
GD32F103ZET6 與ML110S 采用全雙工串口來相互通訊,如圖4 所示。GD32F103ZET6 通過串口主動(dòng)發(fā)送AT 指令來控制ML110S。
圖4 串口通訊
ML110S 有非常多的AT 指令來控制或查詢狀態(tài),具體AT 指令可以通過查詢模塊規(guī)格書獲取,以下幾個(gè)AT 指令較為常用到:
AT+CSQ 用來測試信號(hào)強(qiáng)度
AT+CPIN 用來檢測SIM卡
AT+CGATT 用來設(shè)置或檢測模塊有無連接上基站和核心網(wǎng)
AT+QICSGP 用來設(shè)置網(wǎng)絡(luò)APN
AT+CEREG 用來查詢網(wǎng)絡(luò)注冊狀態(tài)
AT+QIOPEN 用來連接服務(wù)器
AT+QISEND 用來發(fā)送數(shù)據(jù)
當(dāng)連上服務(wù)器以后,網(wǎng)絡(luò)模塊就相當(dāng)一個(gè)管道,負(fù)責(zé)傳送單片機(jī)與服務(wù)器之間的數(shù)據(jù),有了這層關(guān)系,傳輸升級(jí)數(shù)據(jù)將水到渠成,遠(yuǎn)程升級(jí)不再有障礙。單片機(jī)與服務(wù)器平時(shí)通訊時(shí)采用了JSON 格式傳輸。數(shù)據(jù)內(nèi)容包含上報(bào)信息、控制信息及遠(yuǎn)程升級(jí)服務(wù)信息。以下舉例幾種信息內(nèi)容:
1)上報(bào)信息。
{
"cmd": "status_xcj",//上報(bào)命令
"wax_level":"100",//水臘液位
"foam _level":"100",//泡沫液位
"discharge_water":"10000",//水流量
"temperature":"25",//洗車機(jī)溫度
"run_time":"10",//洗車運(yùn)行時(shí)間
"msg":"正在洗車",//洗車狀態(tài)
"bj_msg":"風(fēng)機(jī)過載"http://報(bào)警信息
}
2)控制信息。
{
"cmd": "control <http://www.baidu.com/link?url=IjTr7wEh_-pH2hmXPCM_k9Kkc_XDi-DAu71jhd6NKKj28P13nVazU11cpv-ZlEkgmwws2_fQKL3uRanYMOgDrJ5VcxubmViY6Y3ExC19_qdsa>_xcj "http://控制信息
"function":"啟動(dòng)洗車" //命令
}
3)遠(yuǎn)程升級(jí)服務(wù)信息。
{
"cmd": "upgrade"http://升級(jí)服務(wù)
"ver":"1.1.1", //版本號(hào)
"length":"140002", //軟件長度
"checksum":"12345"http://軟件計(jì)算校驗(yàn)碼
}
可以看出,關(guān)鍵功能數(shù)據(jù)值是可以直接以中文傳輸?shù)模瑳]有用數(shù)字代替功能,故障時(shí)可直接傳輸故障內(nèi)容,數(shù)據(jù)可直接在服務(wù)器端展示,不需要再由服務(wù)器查詢對(duì)應(yīng)狀態(tài)。而且遠(yuǎn)程升級(jí)服務(wù)信息,不僅提供了數(shù)據(jù)大小,還提供了版本號(hào)及檢驗(yàn)碼,可以對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),保證數(shù)據(jù)準(zhǔn)確。由于網(wǎng)絡(luò)模塊只是一個(gè)通道功能,因此想傳輸任何數(shù)據(jù)都沒有問題,非常方便數(shù)據(jù)傳輸及功能擴(kuò)展。
洗車機(jī)要達(dá)到無人值守,需要滿足幾個(gè)條件:一是實(shí)時(shí)上報(bào)機(jī)器故障信息,讓運(yùn)營人員清楚了解機(jī)器問題;二是機(jī)器遠(yuǎn)程控制,包括遠(yuǎn)程啟動(dòng)、遠(yuǎn)程停止、遠(yuǎn)程復(fù)位、遠(yuǎn)程重啟;三是發(fā)現(xiàn)機(jī)器有BUG 時(shí)可遠(yuǎn)程升級(jí)程序修復(fù)BUG;這幾個(gè)功能都離不開網(wǎng)絡(luò)模塊的支持。
想要設(shè)備實(shí)現(xiàn)無人值守,必須保持網(wǎng)絡(luò)連接正常,因此就要求網(wǎng)絡(luò)處理程序要有自我檢測與恢復(fù)機(jī)制。當(dāng)檢測到網(wǎng)絡(luò)被斷開時(shí),就需要開啟重新連接,當(dāng)連接失敗時(shí),就需要再檢測移動(dòng)網(wǎng)絡(luò)是否正常,當(dāng)檢測到移動(dòng)網(wǎng)絡(luò)不正常時(shí),就應(yīng)該檢測模塊是否正常,當(dāng)檢測到模塊不正常時(shí),就應(yīng)該重啟模塊,讓模塊重新工作。Cat.1 網(wǎng)絡(luò)流程如圖5 所示。梳理整個(gè)Cat.1網(wǎng)絡(luò)流程時(shí),不難看出,設(shè)計(jì)與要求是完全結(jié)合的,當(dāng)一系列“否”以后,最終重新進(jìn)入初始模式,讓模塊重新工作,實(shí)現(xiàn)網(wǎng)絡(luò)自我檢測與修復(fù)。
圖5 Cat.1 網(wǎng)絡(luò)處理流程
遠(yuǎn)程升級(jí)程序是一個(gè)物聯(lián)網(wǎng)設(shè)備的頂級(jí)功能,如果沒有遠(yuǎn)程升級(jí)功能將使物聯(lián)網(wǎng)使用大打折扣。由于單片機(jī)資源是有限的,無法一次性從服務(wù)器接收完整的升級(jí)文件,所以需要采用分幀機(jī)制,把升級(jí)文件分成一幀一幀傳輸。每幀控制在1 Kb 字節(jié),通過多次傳輸達(dá)到完整接收升級(jí)數(shù)據(jù)功能。同時(shí),為了保證數(shù)據(jù)的準(zhǔn)確性,升級(jí)時(shí)必須校驗(yàn)數(shù)據(jù)的準(zhǔn)確性,檢驗(yàn)通過才可進(jìn)行升級(jí),否則刷入錯(cuò)誤數(shù)據(jù)將導(dǎo)致單片機(jī)不工作。
升級(jí)流程如圖6 所示,可以看出遠(yuǎn)程升級(jí)是一個(gè)慎之又慎的工作,稍不注意,將導(dǎo)致單片機(jī)不工作。因此,工作流程中應(yīng)該多做些校驗(yàn),以及萬一失敗時(shí)的恢復(fù)工作,比如升級(jí)時(shí)可將正常在用的數(shù)據(jù)備份一份,當(dāng)升級(jí)以后的程序不能正常工作時(shí),可自動(dòng)恢復(fù)原有程序數(shù)據(jù)。
圖6 升級(jí)流程
生產(chǎn)成本降低,整個(gè)單片機(jī)洗車系統(tǒng)對(duì)比PLC洗車系統(tǒng)減少了兩個(gè)擴(kuò)展模塊、語音模塊、中間繼電器、4~20 mA 模塊、RS485 模塊,光這些模塊就可直接減少1 000~2 000 元的生產(chǎn)成本。
由于外圍部件的減少,生產(chǎn)效率得到提升,減少了人工的工作量,效率的提升意味著效益的提升,人工成本的降低。
引入了Cat.1 應(yīng)用,當(dāng)機(jī)器故障時(shí),運(yùn)營者可實(shí)時(shí)收到故障信息,并可遠(yuǎn)程復(fù)位機(jī)器、重啟機(jī)器,不需人工到現(xiàn)場處理,可快速恢復(fù)運(yùn)營??焖俚奶幹霉收弦馕吨鴾p少機(jī)器故障帶來的長時(shí)間停滯,減少損失。
以GD32F103ZET6 單片機(jī)+ML110S 網(wǎng)絡(luò)Cat.1 模塊為例,探討了Cat.1 在無人值守洗車系統(tǒng)中的應(yīng)用,對(duì)于物聯(lián)網(wǎng)在洗車系統(tǒng)應(yīng)用有很大幫助,說明是一種切實(shí)可行的方法,同時(shí)產(chǎn)生了經(jīng)濟(jì)效益。單片機(jī)+Cat.1 在洗車機(jī)的應(yīng)用只是物聯(lián)網(wǎng)其中的一種應(yīng)用,功能一通百通,可以應(yīng)用到絕大部分的物聯(lián)應(yīng)用上,如無人售貨、充電樁等等。萬物皆可物聯(lián),我國的物聯(lián)應(yīng)用市場越來越廣闊。