陳永昕
(吉林工業(yè)職業(yè)技術(shù)學(xué)院智能制造學(xué)院,吉林 吉林 132013)
目前,市場上可編程邏輯控制器(PLC)的品類繁多,如信捷、匯川等國內(nèi)主流品牌在性價(jià)比和穩(wěn)定性上具有一定的優(yōu)勢(shì),是很多控制技術(shù)人員首選控制器。然而,在面對(duì)一些點(diǎn)數(shù)較少的開關(guān)量數(shù)據(jù)采集和控制應(yīng)用上,通用型PLC 無論是從成本還是從功能上考慮都存在大材小用的癢點(diǎn),尤其是加上需要通過無線通信方式進(jìn)行數(shù)據(jù)傳輸,更凸顯了通用PLC 的系統(tǒng)臃腫、投入成本較高。
為此,設(shè)計(jì)了一種以單片機(jī)為主控芯片的簡易可編程邏輯控制器,并具有無線通信組網(wǎng)功能。該設(shè)計(jì)方案可使用多種編程方式進(jìn)行程序設(shè)計(jì),降低了應(yīng)用推廣門檻,非常適合在少量開關(guān)量采集和控制方面運(yùn)用物聯(lián)網(wǎng)技術(shù)。
圖1為硬件電路總體設(shè)計(jì)框圖。系統(tǒng)核心部分共分為四個(gè)單元:主控單元、輸入單元、輸出單元和通信單元,所有單元均通過供電單元進(jìn)行統(tǒng)一供電。從理論上而言,通信單元可以選擇任何具有TTL 電平UART 串口的無線通信模塊,以實(shí)現(xiàn)無線通信甚至組網(wǎng)功能,但是基于無線通信組網(wǎng)難度和普適性的考慮,后續(xù)設(shè)計(jì)首選ZigBee和LoRa 兩方面技術(shù)。
圖1 控制器電路總體框圖
控制器主控芯片采用AVR 單片機(jī)Atmega328 作為主控芯片。該芯片閃存容量32 KB,集成了I2C、SPI、USART 接口,共三個(gè)定時(shí)器(其中一個(gè)16 位,兩個(gè)8 位),芯片總共28 個(gè)引腳,芯片I/O 接口數(shù)量足夠支持8 輸入和8 輸出開關(guān)量接口使用。與其他8 位單片機(jī)相比,該芯片能夠使用的編程語言種類較多。具體最小系統(tǒng)電路原理圖如圖2所示。
圖2 單片機(jī)最小系統(tǒng)原理圖
最小系統(tǒng)電路是單片機(jī)芯片能夠工作的基本電路結(jié)構(gòu),包括復(fù)位電路、時(shí)鐘電路和電源三部分。單片機(jī)最小系統(tǒng)屬于固定模式的電路,一般不需要使用者具體了解其功能就可以直接使用,因此本文對(duì)其具體功能不再贅述。
為輔助控制進(jìn)行程序調(diào)試和運(yùn)行狀態(tài)顯示,使用電阻和LED 串聯(lián)設(shè)計(jì)了運(yùn)行狀態(tài)指示電路。由電源直接進(jìn)行供電,由于Atmega328P 芯片I/O 口內(nèi)部有20KΩ 的上拉電阻,LED 負(fù)極端連接至單片機(jī)PC4 引腳上,通過拉低電平驅(qū)動(dòng)LED 發(fā)光,具體如圖3所示。
圖3 運(yùn)行狀態(tài)指示電路
輸入接口電路設(shè)置8 路開關(guān)量輸入通道,CN2 為輸入接口端子,可對(duì)外提供24 V 直流電源并作為傳感器電源接口使用;輸入端使用光耦作為隔離,將輸入外設(shè)24 V 電路同控制核心單片機(jī)5V 電路進(jìn)行隔離;每個(gè)信號(hào)輸入端配有一個(gè)LED 作為信號(hào)指示,具體如圖4所示。
圖4 輸入接口電路
CN1 為輸出端接線端子,端子上可提供24 V 直流電壓,用于輸出端負(fù)載供電使用;每個(gè)輸出端口使用光耦進(jìn)行隔離,將5 V 電路系統(tǒng)和24 V 電路系統(tǒng)進(jìn)行光電隔離;每個(gè)輸出口上配有一個(gè)LED 用于輸出接口信號(hào)指示,具體如圖5所示。
圖5 輸出接口電路
AVR 單片機(jī)可通過UART 串口進(jìn)行程序下載,電路板上預(yù)留的程序下載接口U2 可作為通信模塊的接口使用;通過串行口同ZigBee 或者LoRa 等無線模塊進(jìn)行通信,以實(shí)現(xiàn)控制器的無線通信功能,具體如圖6所示。
圖6 通信接口電路設(shè)計(jì)
3.5.1 電源電路設(shè)計(jì)
控制器主電源采用24 V 直流電源供電,主控芯片和通信模塊均使用直流5 V 電源供電,因此需要對(duì)電源電壓進(jìn)行降壓,本設(shè)計(jì)則采用LM2596S 降壓模塊進(jìn)行降壓調(diào)壓,具體如圖7所示。IN+和IN- 為電壓輸入端,輸入直流電壓范圍3.2~46 V,輸入電壓必須比輸出電壓高1.5 V 以上;OUT+和OUT- 為電壓輸出端,輸出直流電壓范圍1.25~35 V,電壓連續(xù)可調(diào),轉(zhuǎn)化效率高,最大輸出電流為3 A。通過電位器調(diào)節(jié)模塊電壓,逆時(shí)針方向調(diào)節(jié)時(shí)為降壓,順時(shí)針方向調(diào)節(jié)時(shí)則為升壓。
3.5.2 電源上電指示電路
電源上電指示電路使用電阻和LED 串聯(lián)5 V 供電,電源上電則LED 發(fā)光指示,具體電路如圖8所示。
圖8 電源上電指示電路
本設(shè)計(jì)中的控制器可使用的編程語言較多,其中圖形化語言和梯形圖編程是本設(shè)計(jì)重點(diǎn)推薦的。圖形化編程語言的適用年齡段較寬,即使是具備少兒編程圖形化語言編程基礎(chǔ)的兒童都可使用該控制器編寫程序,而對(duì)于習(xí)慣PLC 梯形圖編程的技術(shù)員而言,可繼續(xù)直接使用梯形圖進(jìn)行程序編寫。
AVR 程序編寫應(yīng)用最廣泛的編程語言是C語言和匯編語言,其中C 語言在單片機(jī)嵌入式系統(tǒng)開發(fā)領(lǐng)域具有更多的用戶群。這兩種語言均要求程序員具有較高程序編寫經(jīng)驗(yàn),并且學(xué)習(xí)難度相對(duì)較大。
4.2.1 ArduBlock 等類似圖形化語言
以ArduBlock 為代表的圖形化編程語言大幅度降低了程序編寫難度,因而比較適合程序設(shè)計(jì)零基礎(chǔ)的人員使用。近幾年,該程序設(shè)計(jì)的技術(shù)方案更是被大量優(yōu)化升級(jí)為少兒編程的主流語言。
Atmega328 芯片被用于ArduinoUno 模塊的主芯片設(shè)計(jì),因此本設(shè)計(jì)中控制器也使用ArduinoUno 的所有開發(fā)資源進(jìn)行程序設(shè)計(jì),圖形化編程界面如圖9所示。
圖9 圖形化編程界面
4.2.2 FlowCode 流碼語言
FlowCode 適用于電子和機(jī)電系統(tǒng)開發(fā)的高度集成開發(fā)環(huán)境(IDE),并且無論是專業(yè)人員還是學(xué)術(shù)人員,都可以快速掌握單片機(jī)嵌入式系統(tǒng)的程序開發(fā)。此外,F(xiàn)lowCode 還允許全仿真(包括C 代碼仿真),用戶可以將C 代碼轉(zhuǎn)換成流程圖和其它編程語言。圖10是FlowCode 軟件的編程界面。
圖10 FlowCode流碼程序界面
圖10中類似程序流程圖的結(jié)構(gòu)即為FlowCode 流碼程序,因此只要能夠看懂程序流程圖,就可以進(jìn)行嵌入式程序設(shè)計(jì)。
4.2.3 Proteus 可視化編程
Proteus 軟件是單片機(jī)開發(fā)人員熟知的一款仿真軟件,從8.6 版本開始增加了可視化程序設(shè)計(jì)功能Visual,該功能是面向Arduino 平臺(tái)進(jìn)行程序設(shè)計(jì)的一種圖形化語言,因此也可以用于本控制器的程序開發(fā),Proteus 仿真界面和Visual程序設(shè)計(jì)界面如圖11所示。
從圖11可以看出,該圖形化程序與FlowCode 流碼程序設(shè)計(jì)思路類似,均是類似于程序流程圖的編程語言,因此該方法對(duì)于程序員程序設(shè)計(jì)基礎(chǔ)要求不高,非常容易掌握。
圖11 Proteus仿真界面和Visual程序設(shè)計(jì)界面
LDMicro 是一款可用于AVR 和PIC 單片機(jī)的編程軟件,LDMicro 梯形圖編程界面如圖12所示。
圖12 LDMicro梯形圖編程界面
該軟件使用梯形圖進(jìn)行程序設(shè)計(jì),能夠?qū)⑻菪螆D邏輯編譯生成適用于AVR 和PIC 單片機(jī)的HEX 文件?;谠摴δ苁褂肞LC 的自動(dòng)化工程師,因此較為容易掌握程序設(shè)計(jì)方法。LDMicro軟件部分版本的源代碼有開源版本,因此程序設(shè)計(jì)工程師可以結(jié)合本控制器硬件設(shè)計(jì)方案和LDMicro 源代碼來進(jìn)一步完善上下位機(jī)系統(tǒng),以形成更為完善的產(chǎn)品。
本設(shè)計(jì)中的控制器功能較為簡單,適合簡單邏輯控制應(yīng)用,具有成本低、搭建系統(tǒng)迅速的優(yōu)點(diǎn)。由于在無線通信方面使用常見的工業(yè)通信協(xié)議,會(huì)使得程序開發(fā)變得復(fù)雜,因此結(jié)合上述軟硬件設(shè)計(jì)方案設(shè)計(jì)出一種既簡單實(shí)施又可以保障通信可靠穩(wěn)定的通信協(xié)議方案。該協(xié)議方案的協(xié)議幀由包頭、地址、命令幀、數(shù)據(jù)幀、校驗(yàn)幀和包尾6 部分組成,如表1所示。
表1 協(xié)議幀數(shù)據(jù)格式
包頭、地址和包尾均為一個(gè)字節(jié)的十六進(jìn)制數(shù),數(shù)據(jù)幀和校驗(yàn)幀可以根據(jù)實(shí)際需要定義數(shù)據(jù)長度,校驗(yàn)幀存儲(chǔ)的是地址和命令幀所有十六進(jìn)制數(shù)的求和值。通信發(fā)送端和接收端同時(shí)使用該協(xié)議,接收端接收完包頭和包尾所有數(shù)據(jù)后,再進(jìn)行校驗(yàn)對(duì)比,如果收到的數(shù)據(jù)校驗(yàn)和同接收到的數(shù)據(jù)幀中交驗(yàn)幀一致,則說明接收數(shù)據(jù)正確。
目前,物聯(lián)網(wǎng)技術(shù)工程實(shí)踐以無線通信為主,這使得物聯(lián)網(wǎng)終端具有安裝簡單、便于移動(dòng)狀態(tài)使用等優(yōu)點(diǎn),因此為大量的多終端實(shí)施數(shù)據(jù)集中采集和管理提供了技術(shù)上的可行性和工程安裝的便利性。對(duì)于本設(shè)計(jì)中的控制器,推薦使用ZigBee 和LoRa 技術(shù)來實(shí)現(xiàn)無線組網(wǎng)功能,通過圖6預(yù)留的串行通信接口即可實(shí)現(xiàn)有線組網(wǎng)通信,也可直接掛接Zigbee 和LoRa 無線通信模塊。通常ZigBee 用于近距離通信,而LoRa 則用于遠(yuǎn)距離通信。
ZigBee 是基于IEEE802.15.4 標(biāo)準(zhǔn)的低功耗局域網(wǎng)協(xié)議,作為一種近距離、低復(fù)雜度、低功耗、低速率和低成本的雙向無線通訊技術(shù),主要用于距離短、功耗低且傳輸速率不高的各種電子設(shè)備之間進(jìn)行數(shù)據(jù)傳輸,以及典型的有周期性數(shù)據(jù)、間歇性數(shù)據(jù)和低反應(yīng)時(shí)間數(shù)據(jù)傳輸?shù)膽?yīng)用,可工作在2.4 GHz(全球流行)、868 MHz(歐洲流行)和915 MHz(美國流行)三個(gè)頻段上,分別具有最高250 kbit/s、20 kbit/s 和40 kbit/s 的傳輸速率,其傳輸距離在10~75 m 范圍內(nèi)且可以繼續(xù)增加。本設(shè)計(jì)在實(shí)際應(yīng)用中主要采用ZigBee 網(wǎng)絡(luò)結(jié)構(gòu),具體如圖13所示。
圖13 ZigBee組網(wǎng)網(wǎng)絡(luò)結(jié)構(gòu)
LoRa 是一種LPWAN 通信技術(shù),也是美國Semtech 公司采用和推廣的一種基于擴(kuò)頻技術(shù)的超遠(yuǎn)距離無線傳輸方案。該方案改變了以往關(guān)于傳輸距離與功耗的折衷考慮方式,而是為用戶提供一種簡單且能夠?qū)崿F(xiàn)遠(yuǎn)距離、低功耗(電池壽命長)、多節(jié)點(diǎn)、低成本和大容量的系統(tǒng),進(jìn)而擴(kuò)展傳感網(wǎng)絡(luò)。目前,LoRa 主要在全球免費(fèi)頻段運(yùn)行,包括433 MHz、868 MHz、915 MHz 等。圖14為本設(shè)計(jì)在實(shí)際應(yīng)用中所使用的LoRa 網(wǎng)絡(luò)結(jié)構(gòu)。
圖14 LoRa組網(wǎng)網(wǎng)絡(luò)結(jié)構(gòu)
本設(shè)計(jì)中的這種可用于物聯(lián)網(wǎng)領(lǐng)域的小型可編程邏輯控制器產(chǎn)品,不僅可以進(jìn)行網(wǎng)絡(luò)終端簡單地開關(guān)量邏輯控制,還降低了邏輯控制成本,并為不同程序設(shè)計(jì)技術(shù)水平的工程技術(shù)人員提供了適合的程序設(shè)計(jì)方案,設(shè)計(jì)人員可根據(jù)實(shí)際需要對(duì)硬件系統(tǒng)進(jìn)行增減I/0 點(diǎn)配置。目前,本設(shè)計(jì)方案主要應(yīng)用在開關(guān)量輸入輸出狀態(tài)需要遠(yuǎn)距離傳輸顯示或者控制的場所,如生產(chǎn)線上開關(guān)量報(bào)警狀態(tài)、開關(guān)量傳感器信號(hào)、多開關(guān)量輸入和多開關(guān)量輸出的邏輯控制等遠(yuǎn)距狀態(tài)顯示或輸出控制。