時間:2013-08-07 15:45:28來æºï¼šå‚³å‹•ç¶²(wÇŽng)
控制器局域網(wÇŽng)(ControllerAreaNetwork,CAN)最先由德國BOSCHå…¬å¸é–‹ç™¼(fÄ),并æˆç‚ºä¸€ç¨®åœ‹é𛿍™(biÄo)準(zhÇ”n)(IS011898)。由于CANç¸½ç·šå…·æœ‰éˆæ´»ã€å¯é ã€å¯¦æ™‚ã€é–‹æ”¾æ€§å¥½ã€ç³¾éŒ¯èƒ½åЛ強(qiáng)ç‰å„ª(yÅu)點,æˆç‚ºç›®å‰æœ€æœ‰å‰é€”çš„ç¾(xià n)å ´ç¸½ç·šä¹‹ä¸€ã€‚ä½†ä»»ä½•äº‹ç‰©éƒ½å…·æœ‰å…©é¢æ€§ï¼ŒCAN總線也有ä¸è¶³ä¹‹è™•,由于其收發(fÄ)器驅(qÅ«)動能力有é™ï¼Œå°Ž(dÇŽo)致總線上å¯é€£æŽ¥çš„æœ€å¤§ç¯€(jié)點數(shù)和最é (yuÇŽn)直接傳輸è·é›¢å—到了é™åˆ¶ï¼Œç„¡æ³•進(jìn)行é (yuÇŽn)程控制,這給系統(tÇ’ng)組網(wÇŽng)帶來了一定的制約æ¢ä»¶ã€‚相較而言,以太網(wÇŽng)æ†‘å€Ÿè‘—æˆæœ¬ä½Žã€æ˜“于組網(wÇŽng)ã€æ“有眾多應(yÄ«ng)用軟硬件的支æŒä¸”æ ¹æ“š(jù)ç¶²(wÇŽng)絡(luò)需求的實際情æ³ï¼Œä¸æ–·åœ°é€²(jìn)行完善和改進(jìn)ï¼Œå¹¶é€æ¥ç™¼(fÄ)展了標(biÄo)準(zhÇ”n)以太網(wÇŽng)(10Mbit/s)ã€å¿«é€Ÿä»¥å¤ªç¶²(wÇŽng)(100Mbit/s)åƒå…†ä»¥å¤ªç¶²(wÇŽng)å’Œè¬å…†ä»¥å¤ªç¶²(wÇŽng)ç‰ï¼Œæˆç‚ºç›®å‰æ‡‰(yÄ«ng)用最為廣泛的局域網(wÇŽng)絡(luò)技術(shù)。若將以太網(wÇŽng)與CAN總線互è¯(lián),å¯é™ä½Žæˆæœ¬ï¼Œå¢žåŠ ç³»çµ±(tÇ’ng)的最大CAN節(jié)點數(shù),擴(kuò)大系統(tÇ’ng)的組網(wÇŽng)范åœï¼Œé‚„å¯å¯¦ç¾(xià n)ä¸åŒå‚³è¼¸é€Ÿåº¦çš„ç¾(xià n)å ´ç¸½ç·šåç¶²(wÇŽng)的相互通信,åŠå…¶è¨(shè)備層到管ç†å±¤çš„ä¸€é«”åŒ–ã€‚æ‰€ä»¥ï¼Œæ–‡ä¸æå‡ºä¸€ç¨®ä»¥å¤ªç¶²(wÇŽng)與CAN總線互è¯(lián)的通信網(wÇŽng)é—œ(guÄn)è¨(shè)計方案。
1硬件è¨(shè)計
圖1所示為本網(wÇŽng)é—œ(guÄn)模塊è¨(shè)計與實ç¾(xià n)的整體方案框圖,網(wÇŽng)é—œ(guÄn)模塊使用LPC2294作為主控制器,μC/OS—IIæ“作系統(tÇ’ng)為平臺,擴(kuò)展了兩個網(wÇŽng)塿ޥå£å’ŒCAN接å£ï¼Œå¹¶é€šéŽè»Ÿä»¶è¨(shè)計完æˆCAN總線å”(xié)è°èˆ‡ä»¥å¤ªç¶²(wÇŽng)å”(xié)è°ç›¸äº’轉(zhuÇŽn)æ›ï¼Œæœ€çµ‚實ç¾(xià n)CANç¶²(wÇŽng)絡(luò)與以太網(wÇŽng)之間的雙冗余通信。
硬件電路å¯åŠƒåˆ†ç‚º5個部分:控制電路ã€å˜å„²é›»è·¯ã€è¼”助電路ã€ä»¥å¤ªç¶²(wÇŽng)接å£é›»è·¯å’ŒCAN總線接å£é›»è·¯ã€‚下é¢ä¸»è¦å°æŽ§åˆ¶é›»è·¯ã€ä»¥å¤ªç¶²(wÇŽng)接å£é›»è·¯å’ŒCAN總線接å£é›»è·¯é€²(jìn)行分æžã€‚
1.1系統(tǒng)控制器
系統(tÇ’ng)é¸ç”¨ARM處ç†å™¨LPC2294ä½œç‚ºæŽ§åˆ¶èŠ¯ç‰‡ï¼Œä¸»è¦æ˜¯LPC2294具有超強(qiáng)的功能ã€åŠŸè€—ä½ŽåŠè±å¯Œçš„片上資æºï¼Œæ›´é‡è¦çš„æ˜¯é›†æˆäº†4個支æŒCAN2.0Bå”(xié)è°çš„CAN控制器,并帶有先進(jìn)的驗收濾波器,æä¾›äº†ç³»çµ±(tÇ’ng)的集æˆåº¦å’Œå¾©(fù)雜度,還æä¾›äº†ç³»çµ±(tÇ’ng)的穩(wÄ›n)定性。為滿足系統(tÇ’ng)的程åºå’Œæ•¸(shù)據(jù)å˜å„²éœ€è¦ï¼Œå¤–æ“´(kuò)了1MBçš„16ä½Flash芯片SST39VF160,用于å˜å„²ç¨‹åºä»£ç¢¼ã€‚å…¶ä¸Flash的地å€ç·šA1~A20連接至LPC2294çš„A1~A20,數(shù)據(jù)ç·šED0~ED15通éŽä¸€å€‹é›™é›»æºä¾›é›»çš„雙呿”¶ç™¼(fÄ)器連接至LPC2294çš„DQ0~DQ15,CE#接至LPC2294çš„CS0,將其分é…到Bank0單元,其地å€èŒƒåœ0x80000000~0x80001000。OE#ã€OW#分別連接至LC2294çš„OE#å’ŒWE#ã€‚åŒæ™‚外接了1MBçš„16ä½SRAMå˜å„²å™¨IS61LV25616ALï¼Œç”¨äºŽå †æ£§å’Œæ•¸(shù)據(jù)çš„å˜å„²ã€‚å…¶ä¸SRAM的地å€ç·šA1~A20連接至LPC2294çš„A0~A19,數(shù)據(jù)ç·šIO0~I(xià n)O15通éŽä¸€å€‹é›™é›»æºä¾›é›»çš„雙呿”¶ç™¼(fÄ)器連接至LPC2294çš„D0~D15,CE#接至LPC2294çš„CS1,將其分é…到Bank1單元,該地å€èŒƒåœ0x81000030~0x81001000。LB#ã€UB分別與BLS0ã€BLS1相連,用于控制8使ˆ–16ä½è®€å¯«æ•¸(shù)據(jù)。OE#ã€OW#分別連接至LC2294çš„OE#å’ŒWE#。
1.2CAN接å£é›»è·¯è¨(shè)計
系統(tÇ’ng)有兩個CAN接å£ï¼Œå…¶ä¸ä¸€å€‹æ˜¯ä¸»æŽ¥å£ï¼Œå¦ä¸€å€‹æ˜¯å†—余接å£ï¼Œå‡æŽ¥å…¥åŒä¸€å€‹CANç¶²(wÇŽng)絡(luò)ï¼Œå…¶ç›®çš„æ˜¯å¢žåŠ ç³»çµ±(tÇ’ng)çš„å¯é 性。CAN2.0B控制器由LPC2294直接集æˆï¼Œç„¡éœ€å¤–åŠ ç¨ç«‹çš„CAN控制器,且LPC2294ä¸é›†æˆäº†4個CAN控制器,在æ¤ç³»çµ±(tÇ’ng)ä¸é¸ç”¨ç¬¬1個和第2個CAN接å£ã€‚CAN收發(fÄ)器é¸ç”¨äº†CAT8250T,主è¦ä½œç”¨æ˜¯å°‡CAN控制器的é‚輯電平轉(zhuÇŽn)æ›ç‚ºCAN總線的差分電平,但與常用的CAN收發(fÄ)器TJA1050Tä¸åŒçš„æ˜¯è©²CAN收發(fÄ)器將CAN節(jié)點的收發(fÄ)與高速光耦ã€é›»æºéš”離集æˆåœ¨ä¸€å€‹é›»è·¯æ¨¡å¡Šä¸ï¼Œä¸”隔離電壓高é”(dá)DC2500V,接å£ç°¡å–®ã€ä½¿ç”¨æ–¹ä¾¿ï¼Œå¹¶å°CAN總線有éŽé›»å£“ä¿è·(hù)ä½œç”¨ã€‚åŒæ™‚é‚„è¦åœ¨CANHå’ŒCANL與地之間并è¯(lián)一個120Ω的電阻,來匹é…å‚³è¼¸é˜»æŠ—ï¼Œå¸æ”¶ç¸½ç·šå›žæ³¢ï¼Œç¢ºä¿æœ‰è¼ƒä½Žçš„é›»ç£è¼»å°„和通信å¯é 性。
1.3以太網(wÇŽng)接å£é›»è·¯è¨(shè)計
系統(tÇ’ng)ç”±DM9000E以太網(wÇŽng)控制器,HR601860ç¶²(wÇŽng)å¡è®Šå£“器,åŠRJ45接å£ï¼Œçµ„æˆä»¥å¤ªç¶²(wÇŽng)接å£é›»è·¯ã€‚åŒæ¨£é¸ç”¨äº†å…©å€‹ç¶²(wÇŽng)å£é›»è·¯ï¼Œä¸€å€‹æ˜¯ä¸»ç¶²(wÇŽng)å£ï¼Œå¦ä¸€å€‹æ˜¯å†—余網(wÇŽng)å£ã€‚å…¶ä¸ï¼ŒLPC2294使用16ä½ç¸½ç·šæ–¹å¼å°DM9000E進(jìn)行控制,并使其工作在100MHz全雙工模å¼ä¸‹ã€‚å°å…©å€‹ç¶²(wÇŽng)å£çš„é¸ç”¨ï¼Œæ˜¯é€šéŽLPC2294çš„CS3ã€A22引腳來控制主網(wÇŽng)å£çš„片é¸ä¿¡è™Ÿï¼Œå³é€™å…©å€‹å¼•腳與74AC32的引腳1å’Œ2相連,而引腳3連接主網(wÇŽng)å£çš„ANE引腳。åŒç†å°‡LPC2294çš„CS3ã€A23,經(jÄ«ng)74AC32與冗余網(wÇŽng)å£çš„ANE引腳相連。å†å°‡DM9000Eçš„CMD引腳與LPC2294çš„A2連接。å¯å°‡ä¸»ç¶²(wÇŽng)和冗余網(wÇŽng)å¡èŠ¯ç‰‡çš„æ•¸(shù)據(jù)端å£åœ°å€èˆ‡ç´¢å¼•端å£åœ°å€åˆ†åˆ¥é…ç½®æˆ0x8380000ã€0x83800004å’Œ0x83400000ã€0x83400004。DM9000E的物ç†å±¤ç™¼(fÄ)é€å’ŒæŽ¥æ”¶ç«¯å£TXO+ã€TXO-ã€RXI+ã€RXI-ç¶“(jÄ«ng)ç¶²(wÇŽng)絡(luò)變壓器芯片HR601680接到RJ45接å£ã€‚å°äºŽDM9000Eçš„å…¶ä½™å¼•è…³å¯æ ¹æ“š(jù)Datasheetä¸çš„èªªæ˜Žï¼ŒæŒ‰è¦æ±‚連接å³å¯ï¼Œå¦‚圖2所示。
最終,å°DM9000E芯片進(jìn)行驅(qÅ«)動。該芯片的驅(qÅ«)動主è¦ç”±3部分完æˆï¼švoidInitNic()用以å°èŠ¯ç‰‡é€²(jìn)行åˆå§‹åŒ–,é…置片內(nèi)寄å˜å™¨ç‰;voidSend_P-acket(struct_pkst*TxdData)為數(shù)據(jù)發(fÄ)é€ç¨‹åºï¼Œuint8Rec_Packet(uint8num)為數(shù)據(jù)接收程åºï¼Œä¸Šå±¤å”(xié)è°é€šéŽèª¿(dià o)用這兩個函數(shù)來發(fÄ)é€ä»¥å¤ªç¶²(wÇŽng)數(shù)據(jù)幀。
2軟件è¨(shè)計
2.1å ±æ–‡çµ(jié)æ§‹(gòu)
CAN總線與以太網(wÇŽng)互è¯(lián)的軟件è¨(shè)計主è¦åŒ…括從以太網(wÇŽng)䏿å–CAN數(shù)據(jù)和將CAN總線的數(shù)據(jù)轉(zhuÇŽn)æ›æˆä»¥å¤ªç¶²(wÇŽng)的數(shù)據(jù)。其ä¸ï¼ŒCANå ±æ–‡çµ(jié)æ§‹(gòu)å¯åˆ†ç‚ºå…©ç¨®ä¸åŒçš„å¹€æ ¼å¼ï¼Œè€Œå…©ç¨®å¹€æ ¼å¼çš„å€(qÅ«)別在于其標(biÄo)è˜ç¬¦çš„長度ä¸åŒï¼šæ¨™(biÄo)準(zhÇ”n)幀䏿œ‰11使¨™(biÄo)è˜ç¬¦ï¼Œæ“´(kuò)展幀䏿œ‰29使¨™(biÄo)è˜ç¬¦ã€‚本è¨(shè)計ä¸é‡‡ç”¨çš„æ˜¯æ“´(kuò)展幀,且在本網(wÇŽng)é—œ(guÄn)模塊收到CANæ¿å¡çš„å ±æ–‡æ™‚ï¼Œéœ€æŒ‰ä¸Šè¿°ä»¥å¤ªç¶²(wÇŽng)數(shù)據(jù)å‚³è¼¸å ±æ–‡æ ¼å¼å°CAN數(shù)據(jù)進(jìn)行å°è£åŠæ‰“包并通éŽä»¥å¤ªç¶²(wÇŽng)發(fÄ)é€ã€‚在æ¤éŽç¨‹ä¸ä¸å¿…å°CANå ±æ–‡çš„13Byte數(shù)據(jù)進(jìn)行高低ä½è½‰(zhuÇŽn)æ›å’Œç§»ä½è™•ç†ï¼Œé‡‡ç”¨é€æ˜Žè½‰(zhuÇŽn)æ›æ–¹å¼ã€‚ä¾¿å¯æ¸›å°‘數(shù)據(jù)è§£æžåŠè™•ç†çš„æ™‚間,并æé«˜äº†æ•¸(shù)據(jù)在傳輸éŽç¨‹ä¸çš„å¯é 性。
如圖3所示,該網(wÇŽng)é—œ(guÄn)ä¸è¦(guÄ«)定的以太網(wÇŽng)å¹€æ ¼å¼åŒ…括5部分,按照å°è£çš„å…ˆåŽé †åºåˆ†åˆ¥ç‚ºï¼šå°è£çš„æ•¸(shù)據(jù)(如本系統(tÇ’ng)ä¸çš„CAN數(shù)據(jù)å¹€ç‰)ã€è‡ªå®šç¾©UDPé¦–éƒ¨ã€æ¨™(biÄo)準(zhÇ”n)UDP/TCP首部ã€IP首部ã€ä»¥å¤ªç¶²(wÇŽng)é¦–éƒ¨å’Œæœ€çµ‚æ ¡é©—ã€‚æœ¬ç³»çµ±(tÇ’ng)ä¸ä¸»è¦é‡‡ç”¨çš„æ˜¯UDPå”(xié)è°ï¼Œç›®çš„æ˜¯ç‚ºäº†è‡ªå®šç¾©æŽ§åˆ¶å—來å€(qÅ«)別ä¸åŒé¡žåž‹çš„å ±æ–‡ï¼ŒåŒ…æ‹¬æœ‰ï¼šCAN數(shù)據(jù)å ±æ–‡ã€æ™‚çµ±(tÇ’ng)å ±æ–‡ã€å·¥ä½œç‹€æ…‹(tà i)è«‹æ±‚å ±æ–‡ã€å¿ƒè·³å ±æ–‡åŠè¨(shè)備故障診斷信æ¯å ±æ–‡ã€‚其䏿™‚çµ±(tÇ’ng)å ±æ–‡æ˜¯åœ¨é–‹æ©Ÿ(jÄ«)時或æ¯30分é˜ç³»çµ±(tÇ’ng)發(fÄ)é€çš„å°æ™‚請求。工作狀態(tà i)å ±æ–‡æ˜¯åœ¨å„è¨(shè)備開機(jÄ«)或復(fù)ä½å¹¶æ£å¸¸å·¥ä½œåŽè‡ªå‹•發(fÄ)é€çš„,還有收到詢å•å ±æ–‡æˆ–ç‹€æ…‹(tà i)改變åŽç™¼(fÄ)é€ï¼Œä¸»è¦ç™¼(fÄ)逿™‚戳和è¨(shè)å‚™IDä¿¡æ¯ã€‚å¿ƒè·³å ±æ–‡æ˜¯åœ¨å„è¨(shè)備開機(jÄ«)或復(fù)ä½å¹¶æ£å¸¸å·¥ä½œåŽï¼Œæ¯5s周期發(fÄ)é€ï¼Œä½œç”¨æ˜¯é€šçŸ¥å…¶æ‰€åœ¨çš„ç¶²(wÇŽng)絡(luò),是å¦å·¥ä½œç‹€æ…‹(tà i)æ£å¸¸ã€‚è¨(shè)備故障診斷信æ¯å ±æ–‡æ˜¯ç•¶(dÄng)æŽ¥æ”¶åˆ°æ•…éšœè¨ºæ–·è«‹æ±‚å ±æ–‡æˆ–ç¶²(wÇŽng)é—œ(guÄn)æ ¹æ“š(jù)CANæ¿å¡æ•¸(shù)據(jù)接收情æ³ï¼Œè‡ªè¡Œæª¢æ¸¬åˆ°ç¶²(wÇŽng)é—œ(guÄn)箱內(nèi)該æ¿å¡æ•…障情æ³çš„變化,一般網(wÇŽng)é—œ(guÄn)在30分é˜å…§(nèi)æœªæ”¶åˆ°åƒæ•¸(shù)è¨(shè)ç½®å ±æ–‡ä¸æŒ‡å®šçš„CANæ¿å¡å°æ‡‰(yÄ«ng)節(jié)點的數(shù)據(jù)å’Œé (yuÇŽn)程幀ç‰ï¼Œå¯èª(rèn)定æ¤ç¯€(jié)點故障,并發(fÄ)逿•…障信æ¯å ±æ–‡ã€‚這增添了系統(tÇ’ng)的一些管ç†ä¿¡æ¯ï¼Œæ ¹æ“š(jù)ä¸åŒçš„å ±æ–‡é¡žåž‹å®Œæˆç³»çµ±(tÇ’ng)ä¸åŒçš„通信功能。自定義UDPå°è£æ ¼å¼å¦‚圖4所示。
在自定義UDPå°è£æ ¼å¼ä¸ï¼Œå—節(jié)0~3為固定的幀é ä¿¡æ¯ï¼Œç”¨ä»¥è˜åˆ¥æœ¬ç¶²(wÇŽng)é—œ(guÄn)模塊的數(shù)據(jù)å ±ä¿¡æ¯ï¼Œç„¡è«–是CANå ±æ–‡ã€æ™‚çµ±(tÇ’ng)å ±æ–‡æˆ–å·¥ä½œç‹€æ…‹(tà i)è«‹æ±‚å ±æ–‡å‡ä½¿ç”¨è©²æ ¼å¼ï¼Œè‹¥ä¸ç¬¦åˆè©²å¹€é 的數(shù)據(jù)å ±ç¶²(wÇŽng)é—œ(guÄn)模塊ä¸é€²(jìn)行處ç†ã€‚需注æ„的是,第20bité–‹å§‹æ‰æ˜¯çœŸæ£çš„æ•¸(shù)據(jù),æ¯å€‹ä¿¡æ¯å–®å…ƒå‡æœ‰å„自的åºè™Ÿã€æ¨™(biÄo)è˜å’Œé•·åº¦ç‰ä¿¡æ¯ã€‚å…¶ä¸ä¿¡å…ƒçš„åºè™Ÿè¡¨ç¤ºè©²ä¿¡å…ƒåœ¨UDP數(shù)據(jù)å ±ä¸çš„ä½ç½®;標(biÄo)è˜ä»£è¡¨ä¿¡æ¯å–®å…ƒå…§(nèi)å ±æ–‡çš„é¡žåž‹ã€‚
2.2程åºè¨(shè)計
ç¶²(wÇŽng)é—œ(guÄn)模塊的主è¦åŠŸèƒ½æ˜¯ä»¥å¤ªç¶²(wÇŽng)數(shù)據(jù)包與CAN數(shù)據(jù)å¹€ä¹‹é–“çš„æ ¼å¼ç›¸äº’轉(zhuÇŽn)æ›ï¼Œé€²(jìn)而完æˆä»¥å¤ªç¶²(wÇŽng)å’ŒCANç¶²(wÇŽng)絡(luò)間通訊。本模塊使用嵌入å¼μC/OS—II作為æ“作系統(tÇ’ng),通éŽè£å‰ªã€ç§»æ¤ä½¿å…¶èƒ½é †åˆ©é‹è¡ŒäºŽLPC2294控制器。å¦å¤–,在系統(tÇ’ng)ä¸ç§»æ¤äº†TCP/IPå”(xié)è°çš„æ ¸å¿ƒåŠŸèƒ½å‡½æ•¸(shù),并編寫了6個任務(wù)函數(shù),使其分工åˆä½œå¯¦ç¾(xià n)了模塊的å„é …åŠŸèƒ½ï¼Œå¹¶é€šéŽμC/OS—II系統(tÇ’ng)的任務(wù)調(dià o)åº¦ç®¡ç†æ©Ÿ(jÄ«)制來進(jìn)行系統(tÇ’ng)資æºçš„分é…。
系統(tÇ’ng)首先建立è¨(shè)å‚™åˆå§‹åŒ–任務(wù)Task0,將該任務(wù)函數(shù)主è¦å®Œæˆä¸Šé›»è‡ªæª¢ï¼Œå…©è·¯CAN故障自檢,網(wÇŽng)壿–·ç·šæª¢æ¸¬ï¼Œæœ¬æ©Ÿ(jÄ«)IPã€å…©è·¯CAN波特率åŠå…©è·¯ç¶²(wÇŽng)å£ç‰ç¶²(wÇŽng)é—œ(guÄn)åƒæ•¸(shù)çš„åˆå§‹åŒ–。在完æˆä»¥ä¸Šå·¥ä½œåŽï¼Œå‰µ(chuà ng)建5個å任務(wù),按優(yÅu)å…ˆç´šç”±é«˜åˆ°ä½Žä¾æ¬¡ç‚ºTaskBã€TaskCã€TaskFã€TaskDã€TaskEçš„5個å任務(wù)的具體功能如下:
TaskB:主è¦åŠŸèƒ½ç‚ºæŽ¥æ”¶UDPå ±æ–‡å¹¶è§£æžï¼Œä¸‹ç™¼(fÄ)至CAN;若接收到時統(tÇ’ng)å ±æ–‡ï¼ŒæŒ‰ç…§å”(xié)è°è§£æžï¼Œå¹¶å°‡æ™‚戳信æ¯å¯«å…¥æ™‚é˜èŠ¯ç‰‡ã€‚
TaskC:主è¦åŠŸèƒ½ç‚ºæŽ¥æ”¶TCPå ±æ–‡ï¼ŒæŒ‰ç…§å”(xié)è°è§£æžå¹¶ä¸‹ç™¼(fÄ)到CAN。
TaskDï¼šå®ŒæˆæŽ¥æ”¶CAN1壿ˆ–CAN2å£çš„æ•¸(shù)據(jù)ï¼Œæ ¹æ“š(jù)è¦(guÄ«)定的傳輸方å¼å°‡æ•¸(shù)據(jù)å°è£æˆå ±æ–‡æ ¼å¼ï¼Œå¹¶ç™¼(fÄ)é€è‡³ä»¥å¤ªç¶²(wÇŽng)。
TaskEï¼šå®ŒæˆæŽ¥æ”¶CAN1壿ˆ–CAN2å£çš„æ•¸(shù)據(jù),并按照TCP傳輸方å¼ï¼Œå°‡æ•¸(shù)據(jù)å°è£å¹¶ç™¼(fÄ)é€åˆ°ä»¥å¤ªç¶²(wÇŽng)。
TaskF:主è¦åŠŸèƒ½ç‚ºå®šæ™‚ç™¼(fÄ)é€ç‰¹æ®Šå ±æ–‡ï¼Œå¦‚ï¼šå¿ƒè·³å ±æ–‡ã€æ™‚çµ±(tÇ’ng)å ±æ–‡ã€å·¥ä½œç‹€æ…‹(tà i)è«‹æ±‚å ±æ–‡åŠè¨(shè)備故障診斷信æ¯å ±æ–‡ç‰ï¼Œå®Œæˆç¶²(wÇŽng)é—œ(guÄn)模塊的工作狀態(tà i)檢測åŠåƒæ•¸(shù)é…ç½®ç‰åŠŸèƒ½ã€‚
5個å任務(wù)創(chuà ng)建完æˆåŽï¼ŒTaskBå’ŒTaskC進(jìn)入阻塞狀態(tà i),ç‰å¾…å„自的信號é‡RecUdpQFlagå’ŒRecTcpQ一Flag,由于這兩個任務(wù)的優(yÅu)先級較高,說明網(wÇŽng)é—œ(guÄn)模塊優(yÅu)先轉(zhuÇŽn)æ›ä»¥å¤ªç¶²(wÇŽng)å‘CAN總線方å‘的數(shù)據(jù)ã€‚å› æ¤ï¼Œç•¶(dÄng)以太網(wÇŽng)䏿œ‰æ•¸(shù)據(jù)åˆ°ä¾†æ™‚æ ¹æ“š(jù)å ±æ–‡çš„é¡žåž‹å¯å¾—到相應(yÄ«ng)的信號é‡ï¼ŒTaskB或TaskCç«‹å³é€²(jìn)入就緒狀態(tà i)ç‰å¾…執(zhÃ)行,若當(dÄng)å‰åŸ·(zhÃ)行的任務(wù)優(yÅu)先級低于這兩個任務(wù),TaskBå’ŒTaskCå¯é€²(jìn)行æ¶å 執(zhÃ)行。當(dÄng)ç¶²(wÇŽng)é—œ(guÄn)模塊未收到以太網(wÇŽng)數(shù)據(jù)或處ç†å®ŒæˆåŽï¼Œä»»å‹™(wù)函數(shù)TaskF檢測模塊的定時器,判斷是å¦éœ€è¦ç™¼(fÄ)é€å·¥ä½œç‹€æ…‹(tà i)å ±æ–‡å’Œå¿ƒè·³å ±æ–‡ç‰ç‰¹æ®Šå ±æ–‡ã€‚執(zhÃ)行完æˆåŽï¼Œåˆ¤æ–·CAN節(jié)é»žæ˜¯å¦æœ‰æ•¸(shù)據(jù)ï¼Œå¹¶é¸æ“‡ç”¨UDP或TCPæ–¹å¼ç™¼(fÄ)é€åˆ°ä»¥å¤ªç¶²(wÇŽng),å³é¸æ“‡åŸ·(zhÃ)行TaskD或TaskE,完æˆCANå‘以太網(wÇŽng)æ–¹å‘的數(shù)據(jù)傳輸éŽç¨‹ï¼Œåœ¨æ¤æœŸé–“å…許TaskBå’ŒTaskC進(jìn)行æ¶å 執(zhÃ)行。系統(tÇ’ng)通éŽèª¿(dià o)度這5個任務(wù)函數(shù)完æˆä»¥å¤ªç¶²(wÇŽng)數(shù)據(jù)包與CAN數(shù)據(jù)å¹€é–“çš„æ ¼å¼è½‰(zhuÇŽn)æ›èˆ‡å‚³è¼¸ï¼Œè©²ç¨‹åºæµç¨‹å¦‚圖5所示。
3測試
å°‡è©²ä¸Šä½æ©Ÿ(jÄ«)IP地å€è¨(shè)置為192.1.1.11,打開網(wÇŽng)é—œ(guÄn)åƒæ•¸(shù)è¨(shè)置界é¢å°ä¸€äº›åƒæ•¸(shù)進(jìn)行è¨(shè)置,如:網(wÇŽng)é—œ(guÄn)åƒæ•¸(shù)回復(fù)IP地å€ã€ç¶²(wÇŽng)é—œ(guÄn)åƒæ•¸(shù)回復(fù)端å£ã€ç¶²(wÇŽng)é—œ(guÄn)模塊IP地å€ã€ç¶²(wÇŽng)é—œ(guÄn)接收端å£è™Ÿå’ŒCAN數(shù)據(jù)目標(biÄo)IP地å€ç‰åƒæ•¸(shù)。隨åŽå°‡CAN總線數(shù)據(jù)å ±æ–‡æ¸¬è©¦è»Ÿä»¶ZLGCANTest打開,è¨(shè)ç½®CAN總線的波特率為250khit·s-1,將CANå ±æ–‡ç™¼(fÄ)出åŽç”¨ZLGCAN—Testã€Tcp&Udp測試工具åŠEtherPeekNX軟件來查看網(wÇŽng)絡(luò)的通信情æ³ã€‚圖6便是由ZLGCANTest軟件所得到的,從圖ä¸å¯çŸ¥ï¼ŒCAN發(fÄ)逿•¸(shù)據(jù)的幀類型是擴(kuò)å±•å¹€ï¼Œå¹€æ ¼å¼æ˜¯æ•¸(shù)據(jù)幀,幀ID為0x00000000,æ¯å€‹CANå”(xié)è°ä¸ç™¼(fÄ)é€8bit的數(shù)據(jù)。而圖7是通éŽTcp&Udp測試工具得到的數(shù)據(jù)ï¼Œå¹¶å·²åœ¨åœ–ä¸æ¨™(biÄo)出,æ¤å ±æ–‡é ç”±Ethernerå”(xié)è°å ±æ–‡é ã€IPå”(xié)è°å ±é ã€UDPå”(xié)è°å ±é 和自定義UDPå ±é 組æˆï¼Œå¹¶å¾žè‡ªå®šç¾©UDPå ±é ä¸çš„å ±æ–‡æ¨™(biÄo)è˜å¯åˆ¤åˆ¥å‡ºCANå ±æ–‡ï¼Œè€ŒåŽé¢çš„æ•¸(shù)據(jù)æ£æ˜¯åœ–6ä¸CANå ±æ–‡ä¸çš„13bit數(shù)據(jù),å³å°CANå ±æ–‡é‡‡ç”¨é€æ˜Žè½‰(zhuÇŽn)æ›æ–¹å¼ï¼Œå°‡CANç¶²(wÇŽng)絡(luò)數(shù)據(jù)æˆåŠŸç™¼(fÄ)é€åˆ°ä»¥å¤ªç¶²(wÇŽng)ã€‚åŒæ¨£æ–¹æ³•坿¸¬è©¦åˆ°ä»¥å¤ªç¶²(wÇŽng)䏿•¸(shù)據(jù)也æˆåŠŸç™¼(fÄ)é€è‡³CAN。網(wÇŽng)絡(luò)ä¸å…¶ä»–é¡žåž‹çš„å ±æ–‡ä¹ŸåŒæ¨£å¦‚æ¤ã€‚
4çµ(jié)æŸèªž
æ–‡ä¸é—¡è¿°äº†ä»¥ARM7系列LPC2294ç‚ºæ ¸å¿ƒçš„ä»¥å¤ªç¶²(wÇŽng)與CAN總線網(wÇŽng)絡(luò)互è¯(lián)的通信網(wÇŽng)é—œ(guÄn)實ç¾(xià n)éŽç¨‹ï¼Œæ¦‚述了本網(wÇŽng)é—œ(guÄn)ä¸é‡‡ç”¨çš„以太網(wÇŽng)å’ŒCANç¸½ç·šçš„å ±æ–‡æ ¼å¼åŠå…¶è‡ªå®šç¾©UDP數(shù)據(jù)å ±æ–‡çš„çµ(jié)æ§‹(gòu)。并æå‡ºäº†ç¶²(wÇŽng)é—œ(guÄn)的軟ã€ç¡¬ä»¶å¯¦ç¾(xià n)方法。通éŽå¯¦é©—該網(wÇŽng)é—œ(guÄn)模塊實ç¾(xià n)了以太網(wÇŽng)與CAN總線間的數(shù)據(jù)傳éžï¼Œä¸”具有穩(wÄ›n)定性和較高的å¯é 性。
標(biÄo)簽:
上一篇:ABBè®Šé »å™¨ç¶ä¿®æ–¹æ³•
下一篇:微能WIN-V63çŸ¢é‡æŽ§åˆ¶è®Šé »å™¨åœ¨...
ä¸åœ‹å‚³å‹•ç¶²(wÇŽng)版權(quán)與å…責(zé)è²æ˜Žï¼šå‡¡æœ¬ç¶²(wÇŽng)注明[來æºï¼šä¸åœ‹å‚³å‹•ç¶²(wÇŽng)]的所有文å—ã€åœ–片ã€éŸ³è¦–å’Œè¦–é »æ–‡ä»¶ï¼Œç‰ˆæ¬Š(quán)å‡ç‚ºä¸åœ‹å‚³å‹•ç¶²(wÇŽng)(www.hysjfh.com)ç¨å®¶æ‰€æœ‰ã€‚如需轉(zhuÇŽn)載請與0755-82949061è¯(lián)系。任何媒體ã€ç¶²(wÇŽng)站或個人轉(zhuÇŽn)è¼‰ä½¿ç”¨æ™‚é ˆæ³¨æ˜Žä¾†æºâ€œä¸åœ‹å‚³å‹•ç¶²(wÇŽng)â€ï¼Œé•å者本網(wÇŽng)將追究其法律責(zé)任。
本網(wÇŽng)轉(zhuÇŽn)載并注明其他來æºçš„稿件,å‡ä¾†è‡ªäº’è¯(lián)ç¶²(wÇŽng)或æ¥(yè)å…§(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuÇŽn)載請ä¿ç•™ç¨¿ä»¶ä¾†æºåŠä½œè€…ï¼Œç¦æ¢æ“…自篡改,é•è€…è‡ªè² (fù)版權(quán)法律責(zé)任。
相關(guÄn)資訊