文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2017.03.016
中文引用格式: 林志航,高軍禮,徐超藍(lán),等. 基于EtherCAT從站的IO擴(kuò)展模塊設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2017,43(3):66-69.
英文引用格式: Lin Zhihang,Gao Junli,Xu Chaolan,et al. Design of IO expansion module based on EtherCAT slave station[J].Application of Electronic Technique,2017,43(3):66-69.
0 引言
在多數(shù)工業(yè)應(yīng)用場景中,都需頻繁對各種現(xiàn)場開關(guān)量信號進(jìn)行采集和輸出。EtherCAT作為一種性能優(yōu)越的現(xiàn)場總線,具有實(shí)時(shí)性突出、總線利用率高、傳輸速度快等特點(diǎn),適合實(shí)現(xiàn)可靠的數(shù)字IO通信?;贓therCAT現(xiàn)場總線的數(shù)字IO控制具有廣泛的應(yīng)用價(jià)值。隨著EtherCAT總線技術(shù)的推廣,工控領(lǐng)域中EtherCAT從站節(jié)點(diǎn)關(guān)于數(shù)字IO應(yīng)用的需求逐步提升,而惡劣的工業(yè)現(xiàn)場環(huán)境也要求從站節(jié)點(diǎn)IO采集和輸出方面具備足夠的可靠性。
本文基于一輕量級的EtherCAT從站,設(shè)計(jì)了經(jīng)濟(jì)且高效的工業(yè)數(shù)字IO擴(kuò)展模塊,與從站構(gòu)成的系統(tǒng)具有穩(wěn)定性強(qiáng)、集成度高和安全性好等特點(diǎn),足以滿足工業(yè)數(shù)字IO的應(yīng)用需求。
1 總體方案設(shè)計(jì)
1.1 EtherCAT從站方案設(shè)計(jì)
綜合考慮EtherCAT從站實(shí)現(xiàn)的技術(shù)難度,本系統(tǒng)采用了TI的AM3359 ICE開發(fā)板來實(shí)現(xiàn)從站的基本功能。AM3359芯片內(nèi)部帶有PRU-ICSS可編程工業(yè)通信子系統(tǒng),可通過TI提供的EtherCAT固件代碼使PRU-ICSS實(shí)現(xiàn)EtherCAT從站控制器的基本功能。相比于使用ET1100等獨(dú)立式芯片實(shí)現(xiàn)從站控制器的從站方案[1],AM3359獨(dú)特的ARM+PRU核的架構(gòu)可以使微處理器與從站控制器一體化,進(jìn)而使從站硬件集成度更高,開發(fā)周期更短[2]。
從站軟件采用分層設(shè)計(jì)方式,分為驅(qū)動層、協(xié)議層和應(yīng)用層,基于從站應(yīng)用層軟件實(shí)現(xiàn)IO擴(kuò)展應(yīng)用為本文研究的重點(diǎn)。
1.2 IO擴(kuò)展模塊方案設(shè)計(jì)
為滿足系統(tǒng)應(yīng)用需求,基于AM3359從站開發(fā)板設(shè)計(jì)了3個(gè)IO擴(kuò)展模塊,每個(gè)擴(kuò)展模塊可控制16路的數(shù)字量輸出和16路的數(shù)字量輸入。各擴(kuò)展模塊均由一主控CPU控制,EtherCAT從站主控芯片AM3359與多個(gè)擴(kuò)展模塊主控CPU之間通過SPI總線進(jìn)行通信,其中擴(kuò)展模塊的主控CPU作為SPI從機(jī),而AM3359芯片作為SPI主機(jī),利用3個(gè)GPIO腳作為片選腳,與3個(gè)擴(kuò)展模塊的處理器芯片進(jìn)行SPI多機(jī)通信。設(shè)計(jì)框架如圖1所示。
2 IO模塊硬件設(shè)計(jì)
IO模塊的硬件設(shè)計(jì)按照功能劃分為微處理器單元、DC/DC電源模塊、數(shù)字量輸出單元、數(shù)字量輸入單元以及JTAG接口單元等。IO模塊硬件設(shè)計(jì)總體框圖如圖2所示。
IO模塊主控芯片采用德州儀器公司的16位單片機(jī)MSP430F5529,該芯片具有強(qiáng)大的處理能力和大量的IO端口,足以滿足該設(shè)計(jì)需求。
考慮到在工業(yè)應(yīng)用上24 V電源的通用性,而且本系統(tǒng)中MSP430F5529需要3.3 V供電,所以采用了24 V轉(zhuǎn)3.3 V的DC/DC電源模塊。
數(shù)字量輸出單元主要用于實(shí)現(xiàn)數(shù)字量信號的輸出,由光耦隔離模塊和IO驅(qū)動兩部分組成。光耦模塊起到保護(hù)MCU通用IO口和實(shí)現(xiàn)數(shù)據(jù)緩沖隔離的作用。MCU輸出信號經(jīng)光耦隔離處理,再經(jīng)驅(qū)動芯片放大后,可用于驅(qū)動工作電壓為24 V的IO設(shè)備。
數(shù)字量輸入單元主要用于采集工業(yè)上的開關(guān)量信號,這些信號經(jīng)常會產(chǎn)生瞬時(shí)高壓、過電流或者接觸抖動。為了保證輸入信號安全可靠,本單元設(shè)計(jì)進(jìn)行光耦隔離處理[3]。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 EtherCAT從站應(yīng)用軟件設(shè)計(jì)
3.1.1 SYS/BIOS實(shí)時(shí)操作系統(tǒng)研究
SYS/BIOS是一個(gè)輕量級的實(shí)時(shí)操作系統(tǒng),其內(nèi)核占用資源極小。此外,SYS/BIOS可通過線程的方式實(shí)現(xiàn)硬件中斷服務(wù)程序[4],該類線程的優(yōu)先級特性與處理器本身的硬件中斷優(yōu)先級保持一致。SYS/BIOS還可使用圖形化或者動態(tài)的方式配置硬件中斷與任務(wù)線程,在使用上更為靈活方便。
從站軟件應(yīng)用層設(shè)計(jì)使用了SYS/BIOS作為軟件平臺,從站在運(yùn)行過程中各實(shí)時(shí)控制任務(wù)均在各硬件中斷線程中完成。
3.1.2 AM3359 SPI驅(qū)動程序設(shè)計(jì)
AM3359作為SPI主機(jī),協(xié)調(diào)著從站與各IO模塊之間的通信。SPI驅(qū)動程序主要包括SPI模塊初始化、SPI發(fā)送處理和SPI接收處理,其中SPI接收處理采用中斷的方式實(shí)現(xiàn)。
為保證SPI主從機(jī)通信順利進(jìn)行,AM3359 SPI模塊初始化應(yīng)當(dāng)根據(jù)MSP430 SPI的模塊功能配置合適的寄存器參數(shù),主要有時(shí)鐘極性、時(shí)鐘相位以及通信波特率等[5]。
由于從站應(yīng)用層設(shè)計(jì)是基于SYS/BIOS實(shí)現(xiàn)的,在這里使用圖形化配置的方式實(shí)現(xiàn)SYS/BIOS下的SPI接收中斷。配置界面如圖3所示。
3.1.3 從站COE對象詞典設(shè)計(jì)
本設(shè)計(jì)中每個(gè)IO擴(kuò)展板實(shí)現(xiàn)16路的開關(guān)量輸出和16路的開關(guān)量輸入,在從站軟件中需合理設(shè)計(jì)COE對象詞典管理過程數(shù)據(jù)。在這里使用輸出過程數(shù)據(jù)對象0x7010、0x7020和0x7030來分別管理各擴(kuò)展模塊的開關(guān)量輸出過程數(shù)據(jù),使用輸入過程數(shù)據(jù)對象0x6010、0x6020和0x6030來管理各擴(kuò)展模塊的開關(guān)量輸入過程數(shù)據(jù),另外使用RxPDO映射對象0x1601、0x1602和0x1603將以上所述輸出過程數(shù)據(jù)對象分別映射到3個(gè)RxPDO,使用TxPDO映射對象0x1A01、0x1A02和0x1A03將以上所述輸入過程數(shù)據(jù)對象分別映射到3個(gè)TxPDO,最后使用0x1C12對象配置SM2,使用0x1C13配置SM3[6]。
針對從站的應(yīng)用層對象詞典的設(shè)計(jì)需編寫合適的從站設(shè)備描述文件,重點(diǎn)是關(guān)于RxPDO和TxPDO的描述,以便在EtherCAT網(wǎng)絡(luò)通信中EtherCAT主站能夠根據(jù)從站描述文件生成網(wǎng)絡(luò)信息文件,從而對從站進(jìn)行正確有效的配置。
3.1.4 從站控制任務(wù)設(shè)計(jì)
從站的控制應(yīng)用程序主要通過SPI通信實(shí)現(xiàn)與各個(gè)IO擴(kuò)展模塊進(jìn)行數(shù)字量輸入輸出的數(shù)據(jù)交互??紤]到主機(jī)與從機(jī)之間交互的有效數(shù)據(jù)長度是確定的,并且在SPI多機(jī)通信過程中,從機(jī)通信的調(diào)度方式是基于主機(jī)控制的片選信號實(shí)現(xiàn)的,因此在SPI一主多從的通信上忽略從機(jī)地址以及通信數(shù)據(jù)長度的信息設(shè)置。綜上所述,根據(jù)SPI全雙工的傳輸特性,定制如下通信協(xié)議:主機(jī)和從機(jī)協(xié)議幀均由起始碼、有效數(shù)據(jù)和結(jié)束碼組成, 分別占用1 B、2 B和1 B,其中主機(jī)協(xié)議幀有效數(shù)據(jù)由2組IO輸出數(shù)據(jù)組成,從機(jī)協(xié)議幀有效數(shù)據(jù)由2組IO輸入數(shù)據(jù)組成,如表1和表2所示。
從站軟件在APPL_Application函數(shù)中實(shí)現(xiàn)控制任務(wù)。主機(jī)在每個(gè)EtherCAT周期內(nèi)向從機(jī)發(fā)送協(xié)議幀,利用SPI全雙工通信與雙方協(xié)議幀長度相同的特性,主機(jī)發(fā)送的同時(shí)從機(jī)也回發(fā)協(xié)議幀,因此主機(jī)再發(fā)送一次協(xié)議幀,便可完成主機(jī)與一個(gè)從機(jī)之間的數(shù)據(jù)交互。
主機(jī)在與從機(jī)通信之前先通過設(shè)置合適的GPIO電平選中相應(yīng)的從機(jī),之后再發(fā)起數(shù)據(jù)傳輸,主機(jī)的數(shù)據(jù)接收在中斷中處理,結(jié)束數(shù)據(jù)交互后主機(jī)通過檢驗(yàn)從機(jī)協(xié)議幀起始碼和結(jié)束碼來決定是否刷新IO輸入數(shù)據(jù)。主機(jī)與任一個(gè)從機(jī)進(jìn)行數(shù)據(jù)交互的流程圖如圖4所示。
3.2 IO擴(kuò)展模塊軟件設(shè)計(jì)
MSP430作為SPI從機(jī),使用SPI中斷接收主機(jī)發(fā)來的數(shù)據(jù),主機(jī)協(xié)議幀的解析在從機(jī)的接收中斷中處理。從機(jī)在解析協(xié)議過程中,使用一輔助狀態(tài)變量確定當(dāng)前接收字節(jié)數(shù)據(jù)位于數(shù)據(jù)幀的哪個(gè)部位。在程序主循環(huán)中,從機(jī)通過檢驗(yàn)主機(jī)協(xié)議幀起始碼和結(jié)束碼來決定是否刷新IO輸出數(shù)據(jù)。主循環(huán)流程和中斷處理流程如圖5、圖6所示。
4 系統(tǒng)測試
利用裝有TwinCAT軟件的PC實(shí)現(xiàn)EtherCAT主站,對IO擴(kuò)展模塊的功能進(jìn)行測試和驗(yàn)證。
將編寫好的從站設(shè)備描述文件放至TwinCAT軟件相關(guān)子文件夾中,以便TwinCAT主站能對從站進(jìn)行正確有效的配置。將PC主站與從站搭建成一簡單EtherCAT網(wǎng)絡(luò),再進(jìn)行系統(tǒng)測試。
進(jìn)行IO輸出測試時(shí),使用大功率LED作為IO輸出控制對象接于IO模塊的IO輸出點(diǎn),通過TwinCAT軟件控制相應(yīng)IO點(diǎn)的輸出,監(jiān)測LED是否亮滅來判斷IO輸出功能是否正常。TwinCAT軟件掃描所得IO輸出對象和控制IO輸出的界面如圖7所示。
進(jìn)行IO輸入測試時(shí),使用24 V信號源將信號輸入給IO輸入點(diǎn),在TwinCAT軟件通過監(jiān)測輸入IO信號是否正常跳變來判斷IO輸入的功能是否正常,TwinCAT軟件掃描所得IO輸入對象和監(jiān)控IO輸入信號的界面如圖8所示。
經(jīng)測試與分析,此次設(shè)計(jì)的IO模塊可有效實(shí)現(xiàn)預(yù)定的功能。本設(shè)計(jì)中從站若需增加IO擴(kuò)展模塊,硬件上從站僅需使用額外的IO引腳作為SPI片選腳與IO模塊相連,然后在從站軟件應(yīng)用層對象詞典添加相關(guān)數(shù)據(jù)對象,在控制任務(wù)添加與新模塊的通信代碼即可有效地添加IO擴(kuò)展模塊。
5 結(jié)束語
本文基于一嵌入式EtherCAT從站提出近距離數(shù)字IO擴(kuò)展方案。詳細(xì)闡述了該方案軟硬件的實(shí)現(xiàn)過程,重點(diǎn)分析了SYS/BIOS系統(tǒng)在從站軟件應(yīng)用層上的使用、從站對象詞典實(shí)現(xiàn)以及從站與IO擴(kuò)展模塊之間通信軟件設(shè)計(jì)。最后,結(jié)合TwinCAT軟件搭建EtherCAT測試網(wǎng)絡(luò)對從站IO擴(kuò)展應(yīng)用進(jìn)行測試。經(jīng)實(shí)驗(yàn)驗(yàn)證,EtherCAT從站與IO擴(kuò)展模塊結(jié)合的系統(tǒng)能夠穩(wěn)定可選地工作。
參考文獻(xiàn)
[1] 施大發(fā),劉建林,王輝,等.一種高性能EtherCAT實(shí)時(shí)以太網(wǎng)從站的設(shè)計(jì)[J].湖南師范大學(xué)自然科學(xué)學(xué)報(bào),2011,34(3):37-40.
[2] 任計(jì)羽,范永坤,熊皚.EtherCAT高性能從站的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2014,34(S1):18-20.
[3] 王續(xù)利,王全勝,張梅.基于FPGA的開關(guān)量輸入模塊設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2012,20(9):2494-2496.
[4] 湯敏,范永坤,熊皚.基于SYS/BIOS的伺服控制實(shí)時(shí)操作系統(tǒng)的設(shè)計(jì)[J].機(jī)床與液壓,2013,41(11):118-121.
[5]這孫斌,胡越黎,王昆.SPI總線用于雙處理器通信的數(shù)據(jù)鏈路層設(shè)計(jì)及其實(shí)現(xiàn)[J].上海大學(xué)學(xué)報(bào),2012,18(5):513-518.
[6] 金超,夏繼強(qiáng),滿慶豐. CANopen對象字典的分析與具體實(shí)現(xiàn)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012(8):12-14.
作者信息:
林志航,高軍禮,徐超藍(lán),蔣 杰
(廣東工業(yè)大學(xué) 自動化學(xué)院,廣東 廣州510006)