周 琦 龔元明
(上海工程技術大學汽車工程學院 上海 201620)
在智能制造領域,總線集線器是適用于工業控制最底層的簡單傳感器和執行器的工業通信接口,能采集多路數字量模擬量信號[1]。總線集線器支持多從站和主站點對點通信,各從站之間互不影響,具有良好的通信穩定性,同時具有智能可配置性。總線集線器使工廠自動化設備中典型應用的傳感器網絡變得更高效和智能化,能夠為工業傳感器制造商在工業4.0時代提供支持[2]。
CAN總線采用差分信號傳輸,抗干擾能力強,最高傳輸速率可達1Mbps,最大通信距離可達10km,可以大大降低信息傳輸延時,適用于對通信時序較為嚴格的控制系統[3]。考慮到CAN總線啟用成本低、可靠性高的優點,在工業自動化電子領域中廣泛應用,因此基于CAN總線協議對集線器開發設計。
CAN總線集線器以英飛凌XC2234L為微控制器,通過底層驅動對GPIO接口施密特觸發器的開關切換,可配置為數字量/模擬量輸入通道。設置M8物理接口,總共可采集16路傳感器信號,通過自定義協議將傳感器信號打包成CAN報文格式,由GPT單元對外定時發送。CAN總線集線器通過USB-CAN和上位機連接,基于CCP協議對Flash區的CAN參數進行標定,以適應不同工作環境。集線器總體設計結構如圖1所示。

圖1 集線器總體設計結構
為了滿足智能制造領域多從站和主站通信的要求,可配置各集線器不同CANID作為從站,通過CAN轉以太網網關和主站PLC連接。在實際應用中以西門子S7-1200 PLC作為主站,采用泗博自動化公司的CAN轉Profinet網關進行主從連接[4]。CAN總線集線器采集工業現場電壓信號、電流信號、溫度信號等參數,經網關協議轉換后傳入S7-1200PLC,整體系統如圖2所示。

圖2 主站和多從站系統結構圖
本CAN總線集線器基于英飛凌XC2234L單片機設計實現。XC2234L是16位微控制器,包含MultiCAN接口、通用輸入/輸出端口(GPIO)以及16路A/D轉換通道,Flash閃存容量可達320KB[5],完全滿足本設計要求。硬件設計主要包括電源模塊、CAN通信模塊和信號采集模塊。
圖3所示為電源模塊電路原理圖。為防止電源正負極接反時電路導通,在電源輸入端加入了二極管,保護后級電路。由于硬件系統最大驅動電壓為5V,采用開關型降壓穩壓器LM2576-5,配合二極管1N5819,穩定輸出5V電壓。為主控制器和CAN收發器模塊提供工作電壓。

圖3 電源模塊原理圖
CAN通信模塊主要包括CAN控制器、CAN收發器、終端電阻和防靜電保護電路。英飛凌XC2234L微控制器集成了兩路MultiCAN接口,支持CAN V2.0B規范。CAN收發器采用英飛凌TLE6250GV33,數據傳輸速率高達1MBaud,可以承受工業現場惡劣條件。TxD引腳和RxD引腳分別實現CAN報文的發送和接收,CANH引腳和CANL引腳實現差分信號傳輸,中間嵌入120歐姆終端電阻,增強抗干擾能力。CAN通信電路如圖4所示。

圖4 CAN通信模塊原理圖
信號采集分為開關量信號采集和模擬量信號采集,總共16路通道。圖5所示為信號采集模塊原理圖。Vset為16路通道公共端,當5K電阻R39接入電路時為開關量信號采集模式,斷開開關S1則為模擬量信號采集模式。運算放大器MCP6004對模擬信號放大后輸入到單片機。模擬電壓輸入范圍為0~5V,微控制器器采用12位AD精度,對應AD值為0~4095。采用肖特基二極管BAT54s把電壓鉗在0~5V,避免輸入電壓過大而燒毀電路[6]。在XC2234L的GPIO引腳接入雙色共陰LED管,可有效觀測數字量采集狀況。
底層硬件驅動采用Dave軟件配置[7],集成開發環境采用Tasking C166編譯器。Dave對驅動層的配置可直接生成代碼,再通過Tasking加載生成代碼實現應用層功能。軟件設計主要包括通信協議設計和參數標定設計。

圖5 信號采集模塊原理圖
本集線器采用M8接口,每個接口可采集兩路信號,共16路輸入信號。CAN報文有效字節為8個,第一字節為奇數端口數字量信號,第二字節為偶數端口數字量信號,第三字節為模擬量信號高八位,第四字節為模擬量信號低八位,第五字節為模擬量通道號,第六、七字節分別為A/D轉換通道總數和數字量通道總數。

表1 CAN通信協議示例
奇數端口和偶數端口以0~15依次命名,奇數端口為0~7,偶數端口為8~15,對應整型二進制數的16位。報文ID號為0x281,表1對該通信協議做示例說明。Byte0值為0x84,對應二進制10000100,表示奇數端口0和5為高電平。Byte1值為0x24,對應二進制00100100,表示偶數端口10和端口13為高電平。Byte2和Byte3合并后為16進制0x0418,換算后表示傳感器輸入模擬電壓為1.28V。Byte4值為0x06,表示第六路模擬量通道。Byte6和Byte7為0x08,表示總共啟動8路A/D轉換通道和8路數字量通道。
底層驅動對XC2234L通用輸入/輸出端口的數字輸入禁用寄存器Px_DIDIS配置,主要為施密特觸發器開關狀態切換[8],0為使能數字輸入級,1為禁用數字輸入級。AD轉換采用XC2234L順序請求源處理模式,通過調用ADC0_vStartSeq0ReqChNum()函數啟動AD轉換通道,由ADC0_uwGetResult?Data()函數把AD值存放在結果寄存器中,再由CAN_Transmiter()函數發出。該模式根據啟用的AD通道號依次輪詢,通過CAN報文的形式循環發送。
為了使集線器靈活應用于工業現場交互環境,可配置CAN總線波特率、幀類型、報文ID、發送間隔時間等參數[9],并可以根據實際使用需求自由配置數字量/模擬量通道。
參數標定采用CCP協議Polling問答模式[10]。首先在DAVE中配置接收節點M0和發送節點M1,M0節點ID設為0x001,M1節點ID設為0x281。在CAN中斷中調用函數ccpCommand((CCP_BYTEP?TR)&M0.ubData[0])。標定參數Flash區起始地址設定為0x00C00200,RAM區映射地址設定如表2所示。

表2 RAM區參數地址分配表
一旦接收到0x001報文,立即觸發CAN中斷。用Connect(0x01)命令建立連接,然后SET_MTA(0x02)命令設置標定參數地址,DNLOAD(0x03)命令下載參數標定值[11],對各個參數進行解析。DIS?CONNECT(0x07)命令結束標定流程。通過調用CCPFlash函數庫,主要為ROM區標定參數到RAM區地址映射,扇區擦除,Flash區參數寫入,以實現標定參數掉電不丟失。其中,CAN波特率通過解析,對XC2234L節點位時序寄存器CAN_NBTROL進行修改;CAN ID對應報文對象仲裁寄存器CAN_MOAR1H和CAN_MOAR1L;發送間隔由RTC中斷控制,定時發送CAN報文。數字量/模擬量通道分別對應0x01和0x02,通過解析A/DPort_State參數,啟動相應數字輸入通道和A/D轉換通道。標定流程如圖6所示。
上位機基于QT Creator開發,通過周立功USB-CAN實現智能分線器和上位機的連接,上位機由CAN接口函數庫開發[12]。用戶交互主要實現實時監測CAN報文以及標定功能。接口函數調用周立功usb-can二次開發函數庫,主要用到以下函數:
VCI_StartCAN(m_devtype,m_devind,m_can?num)//啟動USB-CAN
VCI_GetReceiveNum(m_devtype,m_devind,m_cannum;//獲取指定緩沖區數據
VCI_Receive(m_devtype,m_devind,m_can?num,frameinfo,50,200);//CAN數據接收
VCI_Transmit(m_devtype,m_devind,m_can?num,&frameinfo,1);//CAN數據發送

圖6 下位機標定流程
啟動USB-CAN時,首先初始化CAN配置,包括幀過濾驗收碼、屏蔽碼、濾波方式以及波特率定時器[13]。然后讀取設備信息、設置設備參數、清除緩沖區。由于接收到的CAN報文會預先存入緩沖區,所以VCI_GetReceiveNum函數主要用途是配合VCI_Receive函數使用,先檢測緩沖區是否有未讀幀數,再接收,避免了系統一直調用VCI_Receive,節省了PC系統資源,提高運行效率。標定協議按照下位機CCP協議編寫,每條報文格式參照VCI_CAN_OBJ結構體,由于下位機接收節點ID固定,所以只需要定義VCI_CAN_OBJ數組的首指針和每條報文的有效字節。參照下位機標定設計,主要步驟為建立連接、設置RAM區參數標定地址、寫入數據和斷開連接,由VCI_Transmit函數依次發送CAN報文命令。主要步驟如圖7所示。
上位機主界面主要是建立和集線器的連接,觀察集線器CAN報文的收發情況。子界面為標定界面,可自由配置集線器CAN總線各參數。標定界面如圖8所示。

圖7 上位機操作流程

圖8 集線器CAN參數標定界面
PLC作為主站,經過CAN轉Profinet網關實現和智能集線器從站之間的通信[14]。網關配置軟件為泗博自動化公司的TC-123,該軟件可完成TCO-151的配置,包括設備IP地址,子網掩碼,網關地址和設備名稱,CAN通信波特率,網關節點號,PDO(過程傳輸對象)訪問條目等參數。網關配置如圖9所示。

圖9 TCO-151網關配置
西門子S7-1200PLC程序由博圖V13編寫,首先加載第三方網關GSD文件完成硬件組態[15],完成輸入/輸出8個字節的映射地址。圖10梯形圖為一組開關量校驗程序,IN1和IN2進行與運算,當結果不為0時,線圈閉合。按照CAN通信協議編寫共16組校驗程序。對于模擬量的監控可觀察報文接收數組的變化。

圖10 開關量校驗程序
由上位機標定軟件配置前八個通道為模擬量輸入,后八個通道為數字量輸入。給數字通道輸入5v電壓,模擬通道輸入0~5V可調電壓,觀察AD值變化。當給第七通道輸入2.4V電壓時,對應AD值應為0x7e2。第八通道輸入開關量信號。打開博圖軟件監控功能,圖10開關量校驗程序中線圈Q1.0閉合,可驗證開關量輸入準確無誤。報文接收數組如圖11所示,接收報文為00 80 07 e2 07 00 08 08,符合預期結果。

圖11 報文接收數組窗口
本文利用英飛凌XC2234L單片機設計開發了CAN總線集線器,對硬件電路、底層軟件和上位機標定界面、西門子PLC編程做了詳細介紹。通過實驗模擬和測試,實現了對傳感器信號進行準確采集和在線標定CAN節點等功能,實時性好,運行平穩,在工業自動化領域有著廣闊的應用前景。