TWI827286B - Can總線系統及其自動分配節點站號的方法 - Google Patents

Can總線系統及其自動分配節點站號的方法 Download PDF

Info

Publication number
TWI827286B
TWI827286B TW111137171A TW111137171A TWI827286B TW I827286 B TWI827286 B TW I827286B TW 111137171 A TW111137171 A TW 111137171A TW 111137171 A TW111137171 A TW 111137171A TW I827286 B TWI827286 B TW I827286B
Authority
TW
Taiwan
Prior art keywords
module
pin
station number
node station
host
Prior art date
Application number
TW111137171A
Other languages
English (en)
Other versions
TW202416142A (zh
Inventor
蔡佳達
Original Assignee
台達電子工業股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 台達電子工業股份有限公司 filed Critical 台達電子工業股份有限公司
Priority to TW111137171A priority Critical patent/TWI827286B/zh
Application granted granted Critical
Publication of TWI827286B publication Critical patent/TWI827286B/zh
Publication of TW202416142A publication Critical patent/TW202416142A/zh

Links

Images

Landscapes

  • Small-Scale Networks (AREA)

Abstract

一種自動分配節點站號的方法,應用於具有主機及通過通訊腳位及模組致能腳位並聯的複數模組的CAN總線系統,包括:由主機設定該模組致能腳位以令複數模組進入分配節點站號模式或一般通訊模式。在分配節點站號模式,由主機通過通訊腳位分配節點站號給擁有通訊權的模組、通知擁有通訊權的模組釋放通訊權,令與此模組串接的下一個模組獲得通訊權;以及在一般通訊模式,令複數模組進行確認節點站號程序。

Description

CAN總線系統及其自動分配節點站號的方法
本發明涉及控制區域網路總線,尤其涉及CAN總線系統及其使用的節點站號分配方法。
一般來說,可程式化邏輯控制器(Programmable Logic Controller,PLC)的主機與模組之間的通訊介面,可以藉由串列介面(例如序列周邊介面(Serial Peripheral Interface Bus,SPI))或是並列介面訊號(例如記憶體控制)來實現。
然而,現有的串聯介面和並聯介面分別有其各自的缺失,例如僅為單端訊號、干擾能力差或是資料沒有偵錯機制等。因此,後續有人提出以控制器區域網路(Controller Area Network,CAN)總線來進行通訊的系統架構。
在CAN總線中,主機需要透過節點站號來判斷一個封包的來源模組及目的地模組的身份。因此,在正式運作前,需要先對CAN總線上的所有模組分別設定一個獨立的節點站號。
於相關技術中,使用者需要以人為方式來設定各個模組的節點站號(例如藉由軟體的執行來設定,或是藉由操作各個模組上的指撥開關或旋鈕來 設定)。然而,上述以人力來設定節點站號的方式相當麻煩,而且當任一模組損壞而需要更換時,就必須重新設定節點站號,實不具經濟效益。
本發明的主要目的,在於提供一種CAN總線系統及其自動分配節點站號的方法,可以藉由主機及模組上的硬體腳位來實現節點站號的自動分配。
為了達成上述的目的,本發明的自動分配節點站號的方法應用於具有主機及通過通訊腳位及模組致能腳位與該主機並聯的複數模組的CAN總線系統,並且包括下列步驟:a)由該主機設定該模組致能腳位以進入分配節點站號模式;b)由該主機透過該通訊腳位分配節點站號給該複數模組中擁有通訊權的模組;c)由主機於接收該模組的回應時,通知擁有該通訊權的該模組釋放該通訊權,令與該模組串接的下一個模組獲得該通訊權;及d)由該主機於無接收到任一模組的回應時設定該模組致能腳位進入一般通訊模式,以進行確認節點站號程序。
為了達成上述的目的,本發明的CAN總線系統包括一主機以及複數模組。該複數模組通過通訊腳位及模組致能腳位與該主機並聯,並透過該模組致能腳位切換進入分配節點站號模式或是一般通訊模式;其中,該複數模組中的一者通過ID分配上級IAU腳位串接上級模組的ID分配下級IAN腳位;通過該IAN腳位串接下級模組的該IAU腳位,並且該主機通過其上的該IAN腳位串接該複數模組中的第一個模組的該IAU腳位。
相較於相關技術,本發明所能達到的技術功效在於,透過對硬體腳位的設定,可以協助CAN總線上的主機自動設定複數模組的節點站號,其中不需要人力介入,亦不需使用額外的軟體。
1:主機
2:模組
201:微控制單元
202:電力單元
21:第一模組
22:第二模組
2n:第n模組
2X:模組
2(X-1):上級模組
2(X+1):下級模組
TK:通訊權
CAN_H、CAN_L:通訊腳位
ME:模組致能腳位
IA:ID分配腳位
IAU:ID分配上級腳位
IAN:ID分配下級腳位
T1:第一時間區間
T2:第二時間區間
T3:第三時間區間
S10、S12、S14、S16、S18、S20、S30、S32、S34、S36、S38、S40、S42、S44、S46:分配步驟
S50~S58、S71~S76:確認步驟
圖1為本發明的CAN總線系統架構圖的實施例。
圖2為圖1的詳細CAN總線系統架構圖的實施例。
圖3為圖2的模組的功能方塊圖的實施例。
圖4為本發明用於圖1、圖2的CAN總線系統的分配節點站號流程圖的實施例。
圖5為圖4的詳細分配節點站號流程圖的實施例。
圖6為本發明的確認節點站號時序圖的實施例。
圖7為本發明的確認節點站號流程圖的實施例。
茲就本發明之一較佳實施例,配合圖式,詳細說明如後。
本發明揭露一種控制區域網路(Control Area Network,CAN)總線系統,包括一主機以及複數模組。本發明的技術方案是主機藉由硬體腳位的設定來自動分配CAN總線系統中的複數模組的節點站號,藉此可達到不需要人為介入設定,亦不需要執行額外軟體的技術功效。
請參閱圖1,其為本發明的CAN總線系統架構圖的實施例。如圖1所示,本發明的CAN總線系統包括主機1及複數模組2。在結構上,主機1以 及複數模組2透過硬體腳位彼此串接。詳細來說,主機1透過硬體腳位串接複數模組2中的第一個模組2,各個模組2透過硬體腳位彼此串接,其中第一個模組2朝上游串接主機1並且最後一個模組2沒有串接下級模組。
本發明的技術特徵在於,彼此串接的主機1和複數模組2透過硬體腳位來循序傳遞通訊權TK(Token)。透過對硬體腳位的設定,複數模組2於同一時間中只會有一個模組2擁有通訊權TK。當擁有通訊權TK的模組2接收站號分配通訊封包時,即可依據站號分配通訊封包的內容自動設定當前使用的節點站號,以將預設節點站號替換成主機1所分配的節點站號。當通訊權TK由CAN總線系統中的第一個模組2依序傳遞至最後一個模組2時,主機1即完成本次的節點站號分配動作。
續請參閱圖2,其為本發明的CAN總線系統架構圖的實施例。如圖2所示,在結構上,主機1可透過通訊腳位CAN_H、CAN_L及模組致能(Module Enable,以下簡稱ME)腳位連接到複數模組2並透過電源腳位VCC供電給複數模組2,其中通訊腳位CAN_H、CAN_L用以傳遞通訊封包,而ME腳位用以切換模組的模式。本發明中,硬體腳位傳遞的訊號為穩定電位的非調變訊號。
複數模組2包含第一模組21、第二模組22至第n模組2n,其中n可以是任何大於1的整數。主機1及各個模組2還透過ID分配(ID Assignment,以下簡稱IA)腳位彼此串接,其中IA腳位用以傳遞IA訊號或是圖1所示的通訊權TK。如圖2所示,主機1透過其上的IA腳位串接複數模組2中的第一模組21、第一模組21透過其上的IA腳位串接複數模組2中的第二模組22,以此類推。第n-1模組透過其上的IA腳位串接第n模組2n,而第n模組2n為複數模組 2中的最後一個模組,其後方不會再串接其他的模組(但第n模組2n同樣具有IA腳位)。
在操作上,主機1透過ME腳位的設定,通知複數模組2進入一般通訊模式或是分配節點站號模式。舉例來說,當主機1設定ME腳位為第一電位(例如高電位)時,即通知各個模組2進入一般通訊模式;當主機1設定ME腳位為第二電位(例如低電位)時,即通知各個模組2進入分配節點站號模式。主機1透過通訊腳位CAN_H、CAN_L來傳遞通訊資料封包給複數模組2。
當複數模組2處於分配節點站號模式時,所有模組2都可以透過通訊腳位CAN_H、CAN_L接收到主機1發出的分配節點站號通訊封包,但只有擁有通訊權TK的模組可以將分配節點站號通訊封包中記載的節點站號設定為自己使用的節點站號。
舉例來說,主機1透過IA腳位先將通訊權TK傳遞給複數模組2中的第一模組21,並且透過通訊腳位CAN_H、CAN_L發送要分配的節點站號,以令第一模組21進行節點站號的設定。第一模組21完成節點站號的設定後,可以透過其上的IA腳位將通訊權TK傳遞給串接的下一個模組(即,第二模組22)。接著,主機1可透過通訊腳位CAN_H、CAN_L發送下一個要分配的節點站號,以令第二模組22進行節點站號的設定,以此類推。
請參閱圖3,其為本發明的模組2(X-1)、2X、2(X+1)的功能方塊圖的實施例。如圖3所示,模組2X代表n個模組21…2n中的任一個模組,模組2(X-1)為模組2X的上級模組,模組2(X+1)為模組2X的下級模組,2≦X≦n-1。
在結構上,模組2X具有微控制單元201及電力單元202,其中微控制單元201根據通訊腳位CAN_H、CAN_L、ME腳位及IA腳位的訊號來接收 並處理封包與命令,電力單元202透過電源腳位VCC接收電源並透過接地腳位GND來接地以維持模組2X的運作。
模組2X包含ID分配上級(ID Assignment Upper,以下簡稱IAU)腳位以及ID分配下級(ID Assignment Next,以下簡稱IAN),其中IAU腳位用以傳遞IAU訊號,並且IAN腳位用以傳遞IAN訊號。模組2X透過IAU腳位串接上級模組2(X-1)的IAN腳位,並且透過IAN腳位串接下級模組2(X+1)的IAU腳位,其中多個模組2X中的第一模組21透過IAU腳位串接主機1的IAN腳位。
在操作上,主機1藉由設定ME腳位來通知n個模組21…2n進入分配節點站號模式,並且在進入分配節點站號模式後設定串接的第一個模組21的IAU腳位,以令第一個模組21獲得通訊權TK。在分配節點站號模式初始時,n個模組21…2n的IAU腳位與IAN腳位可預設為相同電位,當其中一模組2X的IAU腳位與IAN腳位為相異電位時,模組2X即可取得通訊權TK。當第一個模組21完成節點站號分配時,主機1通知擁有通訊權TK的第一個模組21釋放通訊權TK;例如,主機1通知第一個模組21透過其上的IAN腳位設定第二個模組22其上的IAU腳位為相異的低電位,藉此讓第二個模組22取得通訊權TK,依此類推。
於一實施例中,主機1可以透過通訊腳位CAN_H、CAN_L發送控制封包。擁有通訊權TK的模組2X(IAU腳位為低電位而IAN腳位為高電位)接收控制封包後,即對其上的IAN腳位進行設定(IAU腳位為低電位且IAN腳位為低電位),以改變串接的下一個模組2的IAU腳位的電位(IAU腳位為低電位而IAN腳位為高電位)。此時,下一個模組2的IAU腳位與IAN腳位具有相異電位,因此下一個模組2可獲得通訊權TK。
當主機1判斷CAN總線系統中的在線模組(即,n個模組21…2n中的部分模組可能不在線)已完成節點站號的設定,主機1可再次設定ME腳位(例如由低電位切換回高電位),以通知在線模組離開分配節點站號模式並進入一般通訊模式。進一步地,主機1在離開分配節點站號模式後,接著進行確認節點站號程序,以檢查是否有模組的節點站號未分配、未正確分配或是重複分配的情況。
需注意的是,當ME腳位設定為分配節點站號模式對應的電位(例如低電位)時,模組2X才會參考IAU腳位與IAN腳位的訊號;也就是說,若ME腳位設定的電位不是分配節點站號模式對應的電位(例如高電位)時,模組2X會忽略IAU腳位與IAN腳位的訊號。
如此一來,本發明的CAN總線系統可實現透過硬體ME腳位來判斷操作模式的功效,以及透過硬體IAU、IAN腳位來循序傳遞通訊權TK的功效。現有技術透過通訊封包、命令與廣播來判斷操作模式和傳遞通訊權TK的方式,可能會因為封包碰撞或通訊干擾等因素而導致部分模組沒有同步進入分配節點站號模式或是延遲傳遞通訊權TK,故系統可靠度較低。相較之下,本發明的CAN總線系統透過硬體ME腳位來判斷操作模式以及透過硬體IAU、IAN腳位來循序傳遞通訊權TK的方式,其系統可靠度較高。
關於CAN總線系統的詳細操作請參閱圖4,其為本發明用於圖1、圖2的CAN總線系統的分配節點站號流程圖的實施例。圖4揭露了本發明的自動分配節點站號的方法(以下簡稱為分配方法)的具體步驟。
如圖4所示,當CAN總線系統中的主機1為複數模組2設定節點站號時,先設定ME腳位以令複數模組2進入分配節點站號模式(步驟S10)。
於一實施例中,主機1預設ME腳位為高電位,此時複數模組2處於通訊模式。當主機1將ME腳位切換為低電位時,複數模組2進入分配節點站號模式。於另一實施例中,主機1預設ME腳位為低電位,此時複數模組2處於通訊模式。當主機1將ME腳位切換為高電位時,複數模組2進入分配節點站號模式。
於進入分配節點站號模式後,主機1透過通訊腳位CAN_H、CAN_L來分配節點站號給複數模組2中擁有通訊權的模組2(步驟S12)。例如,各個模組2的IAU腳位及IAN腳位預設為相同電位;當一個模組2的IAU腳位及IAN腳位處於相異電位以獲得通訊權TK。
步驟S12後,主機1透過通訊腳位CAN_H、CAN_L判斷是否有接收具有通訊權TK的模組2的回應(步驟S14)。若主機1有接收到回應,即可判斷節點站號的設定已成功。此時,主機1通知擁有通訊權TK的模組2釋放通訊權TK,並令與此模組2串接的下一個模組2獲得通訊權TK(步驟S16)。在藉由步驟S16進行通訊權TK移轉後,主機1再次執行步驟S12,以為擁有通訊權TK的下一個模組2分配對應的節點站號。
若主機1於步驟S12後沒有接收到回應,則可判斷CAN總線系統中的所有模組2皆已完成節點站號的設定。因此,主機1可再次設定ME腳位(例如從高電位切換成低電位),以令複數模組2離開分配節點站號模式(步驟S18),並且接著進行確認節點站號程序(步驟S20)。於確認節點站號程序中,主機1可以確認是否有未分配到節點站號的模組2,或是否有複數模組2錯誤地分配到重複的節點站號。
請參閱圖5,其為本發明圖4的詳細分配節點站號流程圖的實施例。如圖5所示,當主機1要執行分配節點站號方法時,先設定ME腳位以令複數模組2進入分配節點站號模式(步驟S30)。接著,主機1透過設定複數模組2的其中之一的IAU腳位,以令此模組2獲得通訊權TK(步驟S32)。具體地,主機1設定複數模組2的其中之一的IAU腳位,使得此模組2的IAU腳位與IAN腳位處於相異電位,藉此讓此模組2獲得通訊權TK。
於一實施例中,主機1透過其上的IAN腳位串接複數模組2中的第一模組21的IAU腳位。於進入分配節點站號模式後,主機1藉由設定其上的IAN腳位來改變其所串接的第一模組21的IAU腳位的電位,藉此令第一模組21優先獲得通訊權TK。
步驟S32後,主機1依據要分配的節點站號產生分配封包,並且透過通訊腳位CAN_H、CAN_L發送分配封包(步驟S34)。其中,分配封包中至少包含了本次要分配的節點站號,以及要求模組2進行節點站號的設定動作的控制命令。
步驟S34後,CAN總線系統中的複數模組2的每一者透過通訊腳位CAN_H、CAN_L接收主機1發送的分配封包,其中分配封包中包括節點站號,但只有當前擁有通訊權TK的模組2可根據分配封包的內容來設定自身的節點站號(步驟S36)。具體地,各個模組2於出廠後即被設定有一個預設節點站號。於步驟S36中,擁有通訊權TK的模組2是以分配封包中記錄的節點站號來取代預設節點站號,藉此完成節點站號的設定動作。
在節點站號設定完成後,由擁有通訊權TK的模組2產生一個回應封包,並且透過通訊腳位CAN_H、CAN_L發送回應封包(步驟S38)。
本實施例中,主機1會在發送了分配封包後等待一段時間區間,並且於等待時持續監控通訊腳位CAN_H、CAN_L,以透過通訊腳位CAN_H、CAN_L判斷是否接收任一模組2發送的回應封包(步驟S40)。本發明中,只有擁有通訊權TK的模組2在完成了節點站號的設定動作後會發送回應封包,因此當主機1接收到回應封包時,即可確定本次的節點站號分配已成功。
若於步驟S40中判斷有接收到回應封包,則主機1透過通訊腳位CAN_H、CAN_L發送指令封包(步驟S42)。此時,CAN總線系統中的所有模組2皆可接收指令封包,但只有當前擁有通訊權TK的模組2會根據指令封包的內容來設定其上的IAN腳位,藉此釋放通訊權TK給與其串接的下一個模組2(步驟S44),即,藉此釋放通訊權TK給與下級模組。
更具體地,所述指令封包中可以包含設定IAN腳位的控制指令。當擁有通訊權TK的模組2接收了指令封包後,即可根據指令封包的內容來設定其上的IAN腳位(例如由高電位切換為低電位)。此時,與此模組2串接的下一個模組2的IAU腳位會隨著此模組2的IAN腳位的設定而改變電位,使得下一個模組2的IAU腳位與IAN腳位處於相異電位,進而獲得通訊權TK。
於步驟S44中,第一模組21將其IAN腳位由高電位切換為低電位,此時第一模組21的IAU腳位與IAN腳位皆為低電位,因此第一模組21釋放通訊權TK。與第一模組21串接的第二模組22的IAU腳位也被切換為低電位,此時第二模組22的IAU腳位與IAN腳位具有相異電位,因而獲得通訊權TK。
步驟S44後,主機1再次執行步驟S34至步驟S40,以根據下一個要分配的節點站號產生新的分配封包、透過通訊腳位CAN_H、CAN_L發送新 的分配封包、由當前具有通訊權TK的第二模組22來依據新的分配封包的內容設定節點站號,並且由主機1等待接收回應封包。
本發明中,若主機1於步驟S40中判斷有接收到回應,則主機1重複執行步驟S34至步驟S44,以依序為CAN總線系統中的各個模組2分配對應的節點站號。
若主機1於步驟S40中判斷沒有接收到回應,則主機1可判斷CAN總線系統中的所有模組2的節點站號皆已分配完成。此時,主機1再次設定ME腳位(例如從高電位切換成低電位),以令複數模組2離開分配節點站號模式,並且進一步進行確認節點站號程序(步驟S46)。
續請參閱圖6,其為本發明的確認節點站號時序圖的實施例。本發明的確認節點站號程序包括確認節點站號未分配、未正確分配及重複分配的子流程。
如圖6所示,在確認節點站號未分配的子流程中,主機1在第一時間區間T1(例如20毫秒)內,確認是否有收到各個模組(以第一模組21及第二模組22為例)送出的錯誤訊息封包(步驟S50)。詳細來說,複數模組2中的每一者判斷當前使用的節點站號是否為預設節點站號;當前使用的節點站號為預設節點站號的模組2透過通訊腳位CAN_H、CAN_L發送錯誤訊息封包;以及由主機1於接收錯誤訊息封包時再次進入分配節點站號模式。
當第一模組21判斷當前使用的節點站號是預設節點站號時,第一模組21發送錯誤訊息封包給主機1(步驟S51)。同樣地,當第二模組22判斷當前使用的節點站號是預設節點站號時,第二模組22也會發送錯誤訊息封包給主機1(步驟S52),其他模組2依此類推。
於一實施例中,在確認節點站號未正確分配或重複分配的子流程中,主機1只要收到至少一筆的錯誤訊息封包,就會再次進入分配節點站號模式,以重新分配CAN總線系統中的所有模組2的節點站號。於其他實施例中,主機1可藉由其他設定手段,僅對發出錯誤訊息封包的一或複數模組2進行節點站號的設定。
接著,主機1在第二時間區間T2(例如1毫秒)內,確認第一模組21的節點站號是否未正確分配或重複分配。詳細來說,主機1發送確認封包,其中確認封包中包含複數已分配節點站號的其中之一(即第一模組21的節點站號)(步驟S53)。當第一模組21確認當前使用的節點站號與確認封包中記錄的節點站號相符時,會發送確認回應封包(步驟S54)以回應節點站號正確分配,其中確認回應封包中包含來源站號(即第一模組21的節點站號)。須注意的是,由於CAN總線系統中的所有模組2都可接收到包含第一模組21的節點站號的確認封包,若第二模組22判斷當前使用的節點站號與確認封包中記錄的節點站號相符,則第二模組22發送錯誤訊息封包(步驟S55)。
接著,主機1在第三時間區間T3(例如1毫秒)內,確認第二模組22的節點站號是否未正確分配或重複分配。詳細來說,主機1發送包含第二模組22的節點站號的確認封包(步驟S56),並且等待第二模組22的回應封包。當第二模組22確認當前使用的節點站號與確認封包中記錄的節點站號相符時,第二模組22會發送確認回應封包(步驟S57)。若其他模組2判斷當前使用的節點站號與確認回應封包中記錄的來源節點站號相符,則其他模組2會發送錯誤訊息封包(步驟S58)。
於一實施例中,在確認節點站號重複分配的子流程中,主機1只要收到至少一筆的錯誤訊息封包,就會再次進入分配節點站號模式,以重新分配CAN總線系統中的所有模組2的節點站號。於另一實施例中,主機1可在接收一或多筆錯誤訊息封包時,重新對發出錯誤訊息封包的一或複數模組2進行節點站號的分配動作。
續請參閱圖7,其為本發明的確認節點站號流程圖的實施例。確認節點站號流程包括確認節點站號未分配子流程,以及確認節點站號未正確分配或重複分配子流程,並包括以下步驟。
步驟S71:在第一時間區間內,確認節點站號未分配。
步驟S72:判斷是否接收錯誤訊息封包?若是,進行步驟S76;若否,進行步驟S73。
步驟S73:在第二時間區間內,確認節點站號未正確分配或重複分配。
步驟S74:判斷是否未收到當前節點回應或是接收錯誤訊息封包?若是,進行步驟S76;若否,進行步驟S75。
步驟S75:是否有下一個節點站號待確認?若是,回到步驟S73;若否,結束。
步驟S76:再次進入分配節點站號模式。結束。
確認節點站號未分配的子流程包括步驟S71、S72。於步驟S71,主機1在第一時間區間T1內,確認節點站號未分配(即,圖6的步驟S50)。
於步驟S72,若主機1在第一時間區間T1內接收到至少一個模組(以第一模組21、第二模組22為例)送出的錯誤訊息封包(即,圖6的步驟S51、 S52),則進行步驟S76。若主機1在第一時間區間T1內接沒有收到錯誤訊息封包,則進入確認節點站號重複分配的子流程。
確認節點站號未正確分配或重複分配的子流程包括步驟S73、S74、S75。於步驟S73,主機1在第二時間區間T2內,確認節點(例如第一模組21)站號未正確分配或重複分配(即,圖6的步驟S53)。於步驟S74,若主機1在第二時間區間T2內收到當前節點回應(即,圖6的步驟S54)並且沒有接收到錯誤訊息封包,則進行步驟S75以判斷是否所有已分配節點站號皆已確認完成。
於步驟S74,若主機1在第二時間區間T2內未收到當前節點回應,表示當前節點站號未正確分配,則進行步驟S76;或者,若主機1在第二時間區間T2內接收到錯誤訊息封包即,圖6的步驟S55),表示節點站號重複分配,則進行步驟S76。例如,當第一模組21判斷當前使用的節點站號與分配到的節點站號不相符時,則不傳送確認回應封包;或者,當第二模組22判斷當前使用的節點站號與第一模組21分配到的節點站號相符時,第二模組22發送錯誤訊息封包給主機1。
於步驟S75,若主機1判斷有下一個節點(例如第二模組22)的節點站號待確認,則回到步驟S73以在下一次的第二時間區間T2內,確認下一個節點(例如第二模組22)站號未正確分配或重複分配(即,圖6的步驟S56、S57)。再次於步驟S74,若主機1在第二時間區間T2(相當於圖6的第三時間區間T3)內未收到當前節點回應或是接收到錯誤訊息封包(即,圖6的步驟S58),則進行步驟S76以再次進入分配節點站號模式。例如,當第二模組22判斷當前使用的節點站號與分配到的節點站號不相符時,則不傳送確認回應封包;或者,當其他模組2判斷當前使用的節點站號與第二模組22分配到的節點站號相符時,其他 模組2發送錯誤訊息封包給主機1。於步驟S75,若主機1判斷沒有下一個節點站號待確認,則結束確認節點站號流程。
針對主機1,在確認節點站號未正確分配或重複分配的子流程中,由主機1透過通訊腳位CAN_H、CAN_L發送確認封包,其中確認封包中包含複數已分配節點站號的其中之一;由主機1於透過通訊腳位CAN_H、CAN_L接收錯誤訊息封包時,再次進入分配節點站號模式;由主機1於透過通訊腳位CAN_H、CAN_L接收當前節點回應或是沒有接收錯誤訊息封包時,判斷是否所有已分配節點站號皆已確認完成;及於所有已分配節點站號尚未全部確認完成前,由主機依據下一個已分配節點站號產生確認封包,並再次執行步驟S73至步驟S75。
針對複數模組2,在確認節點站號未正確分配或重複分配的子流程中,由複數模組2的每一者分別透過通訊腳位CAN_H、CAN_L接收確認封包;由複數模組2的每一者判斷當前使用的節點站號是否與確認封包中的已分配節點站號相符;由當前使用的節點站號與已分配節點站號相符的模組2透過通訊腳位CAN_H、CAN_L發送確認回應封包,其中確認回應封包中包含來源站號;由複數模組2的每一者分別透過通訊腳位CAN_H、CAN_L接收其他模組2發送的確認回應封包;由複數模組2的每一者分別判斷當前使用的節點站號是否與確認回應封包中的來源站號相符;及由當前使用的節點站號與來源站號相符的模組2透過通訊腳位CAN_H、CAN_L發送錯誤訊息封包。
於一實施例中,主機1可具有一個分配次數上限,例如三次或五次等,不加以限定。如上所述,主機1在接收錯誤訊息封包後,可以藉由ME腳位的設定重新進入分配節點站號模式。當進入分配節點站號模式的次數大於分配次數上限時,主機1將判斷CAN總線系統有其他問題而導致模組2的節點站 號無法被正確的分配或設定。此時,主機會停止節點站號的分配動作,並且發出警訊。
本發明在節點站號分配流程結束後確認節點站號未分配、未正確分配分配及重複分配,以檢查節點站號分配的正確性,並在節點站號無法被正確分配的情況下發出警訊。
綜上所述,本發明透過對主機及模組的硬體腳位的設定,可協助CAN總線上的主機自動分配所有模組的節點站號,並且在分配完成後進行確認。本發明的CAN總線系統透過硬體ME腳位來判斷操作模式以及透過硬體IAU、IAN腳位來循序傳遞通訊權TK的方式,其系統可靠度較高。藉此,可以有效提昇分配速度、便利性及系統可靠度,同時降低建置及維護CAN總線系統所需的成本。
以上所述僅為本發明之較佳實施例,非因此即侷限本發明之專利範圍,故舉凡運用本發明內容所為之等效變化,均同理皆包含於本發明之範圍內,合予陳明。
S10~S20:分配步驟

Claims (14)

  1. 一種自動分配節點站號的方法,應用於具有主機及通過通訊腳位及ME腳位與該主機並聯的複數模組的CAN總線系統,包括:a)由該主機設定該ME腳位以進入分配節點站號模式;a0)當一模組是該複數模組中的第一模組時,由該主機設定該第一模組的IAU腳位,以令該第一模組獲得通訊權;a1)當該模組不是該複數模組中的該第一模組時,由上級模組設定該模組的IAU腳位,以令該模組獲得該通訊權;b)由該主機透過該通訊腳位分配節點站號給該複數模組中擁有該通訊權的該模組;c)由主機於接收該模組的回應時,通知擁有該通訊權的該模組釋放該通訊權,令與該模組串接的下一個模組獲得該通訊權;及d)由該主機於無接收到任一模組的回應時設定該ME腳位,以進行確認節點站號程序。
  2. 如請求項1所述的自動分配節點站號的方法,其中該步驟c)包括由該主機於接收該模組的回應時,通知擁有該通訊權的該模組設定IAN腳位,藉此釋放該通訊權並令下級模組獲得該通訊權。
  3. 如請求項2所述的自動分配節點站號的方法,其中該步驟c)包括:c1)由該主機於接收該模組的回應時,透過該通訊腳位發送指令封包;c2)由該複數模組的每一者透過該通訊腳位接收該指令封包;及 c3)由擁有該通訊權的該模組依據該指令封包來設定該IAN腳位。
  4. 如請求項2所述的自動分配節點站號的方法,其中該複數模組的每一者分別透過該IAU腳位串接該上級模組的該IAN腳位,並透過該IAN腳位串接該下級模組的該IAU腳位,該主機透過該IAN腳位串接該複數模組中的該第一模組的該IAU腳位。
  5. 如請求項2所述的自動分配節點站號的方法,其中該複數模組的每一者的該IAU腳位及該IAN腳位預設為相同電位,並且於該步驟a0)、a1)與c)該模組的該IAU腳位及該IAN腳位處於相異電位以獲得該通訊權。
  6. 如請求項1所述的自動分配節點站號的方法,其中該步驟b)更包括:b1)由該複數模組的每一者透過該通訊腳位接收分配封包,其中該分配封包中包括該節點站號;b2)由擁有該通訊權的該模組根據該分配封包設定該節點站號;及b3)由擁有該通訊權的該模組透過該通訊腳位發送回應封包。
  7. 如請求項1所述的自動分配節點站號的方法,其中該確認節點站號程序包括確認節點站號未分配的子流程,包括:e1)在第一時間區間內,該複數模組的每一者判斷當前使用的該節點站號是否為預設節點站號;e2)在該第一時間區間內,當前使用的該節點站號為該預設節點站號的該模組透過該通訊腳位發送錯誤訊息封包;及e3)在該第一時間區間內,由該主機於接收該錯誤訊息封包時再次進入該分配節點站號模式。
  8. 如請求項1所述的自動分配節點站號的方法,其中該確認節點站號程序包括確認節點站號未正確分配或重複分配的子流程,包括:f1)在第二時間區間內,由該主機透過該通訊腳位發送確認封包,其中該確認封包中包含複數已分配節點站號的其中之一;f2)在該第二時間區間內,由該主機於透過該通訊腳位接收錯誤訊息封包時再次進入該分配節點站號模式;f3)在該第二時間區間內,由該主機於透過該通訊腳位接收當前節點回應或是沒有接收該錯誤訊息封包時,判斷是否所有該已分配節點站號皆已確認完成;及f4)於所有該已分配節點站號尚未全部確認完成前,由該主機依據下一個該已分配節點站號產生該確認封包,並再次執行該步驟f1)至該步驟f3)。
  9. 如請求項8所述的自動分配節點站號的方法,其中該確認節點站號未正確分配或重複分配的子流程包括:f5)由該複數模組的每一者分別透過該通訊腳位接收該確認封包;f6)由該複數模組的每一者判斷當前使用的該節點站號是否與該確認封包中的該已分配節點站號相符;f7)由當前使用的該節點站號與該已分配節點站號相符的該模組透過該通訊腳位發送確認回應封包,其中該確認回應封包中包含來源站號;f8)由該複數模組的每一者分別透過該通訊腳位接收其他模組發送的該確認回應封包;f9)由該複數模組的每一者分別判斷當前使用的該節點站號是否與該確認回應封包中的該來源站號相符;及 f10)由當前使用的該節點站號與該來源站號相符的該模組透過該通訊腳位發送該錯誤訊息封包。
  10. 一種CAN總線系統,包括:一主機;以及複數模組,通過通訊腳位及ME腳位與該主機並聯,並透過該ME腳位切換進入分配節點站號模式或般通訊模式;其中,該複數模組中的一者通過IAU腳位串接上級模組的IAN腳位,通過該IAN腳位串接下級模組的該IAU腳位,並且該主機通過其上的該IAN腳位串接該複數模組中的第一個模組的該IAU腳位。
  11. 如請求項10所述的CAN總線系統,其中該主機被配置為透過該通訊腳位分配節點站號給該複數模組中擁有通訊權的模組;其中,該主機被配置為於分配該節點站號後沒有接收回應時,設定該ME腳位以令該複數模組進行確認節點站號程序;其中,該主機被配置為於分配該節點站號後接收回應時,通知擁有該通訊權的該模組釋放該通訊權並令與該模組串接的下一個該模組獲得該通訊權。
  12. 如請求項11所述的CAN總線系統,其中該主機被配置為在進入該分配節點站號模式時設定該第一個模組的該IAU腳位,以令該第一個模組獲得該通訊權。
  13. 如請求項11所述的CAN總線系統,其中該主機被配置為於分配該節點站號後接收回應時,通知擁有該通訊權的該模組設定該IAN腳位來改變下級模組的該IAU腳位的電位,以令該下級模組獲得該通訊權。
  14. 如請求項11所述的CAN總線系統,其中該複數模組的每一者的該IAU腳位及該IAN腳位預設為相同電位,並且該主機被配置為令該複數模組的其中之一的該IAU腳位及該IAN腳位處於相異電位以獲得該通訊權。
TW111137171A 2022-09-30 2022-09-30 Can總線系統及其自動分配節點站號的方法 TWI827286B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW111137171A TWI827286B (zh) 2022-09-30 2022-09-30 Can總線系統及其自動分配節點站號的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW111137171A TWI827286B (zh) 2022-09-30 2022-09-30 Can總線系統及其自動分配節點站號的方法

Publications (2)

Publication Number Publication Date
TWI827286B true TWI827286B (zh) 2023-12-21
TW202416142A TW202416142A (zh) 2024-04-16

Family

ID=90053426

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111137171A TWI827286B (zh) 2022-09-30 2022-09-30 Can總線系統及其自動分配節點站號的方法

Country Status (1)

Country Link
TW (1) TWI827286B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW513636B (en) * 2000-06-30 2002-12-11 Via Tech Inc Bus data interface for transmitting data on PCI bus, the structure and the operating method thereof
CN101145046A (zh) * 2007-08-24 2008-03-19 上海正航电子科技有限公司 一种可编程逻辑控制器与扩展模块的接口
CN102364451A (zh) * 2011-06-27 2012-02-29 浪潮电子信息产业股份有限公司 一种扩展南桥pci总线请求与仲裁信号的方法
US20120257655A1 (en) * 2009-12-28 2012-10-11 Nxp B.V. Configuration of bus transceiver
US20180067159A1 (en) * 2014-12-19 2018-03-08 The Boeing Company Automatic data bus wire integrity verification device
TW201826139A (zh) * 2017-01-11 2018-07-16 國立中央大學 多微控制器系統、物聯網閘道系統、以及基於橋接器的多微控制器系統之控制方法
US20200049754A1 (en) * 2018-08-10 2020-02-13 Texas Instruments Incorporated Control area network (can) bus fault detection
CN111580454A (zh) * 2020-06-28 2020-08-25 山东省计算中心(国家超级计算济南中心) 一种工业安全plc控制器的安全控制方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW513636B (en) * 2000-06-30 2002-12-11 Via Tech Inc Bus data interface for transmitting data on PCI bus, the structure and the operating method thereof
CN101145046A (zh) * 2007-08-24 2008-03-19 上海正航电子科技有限公司 一种可编程逻辑控制器与扩展模块的接口
US20120257655A1 (en) * 2009-12-28 2012-10-11 Nxp B.V. Configuration of bus transceiver
CN102364451A (zh) * 2011-06-27 2012-02-29 浪潮电子信息产业股份有限公司 一种扩展南桥pci总线请求与仲裁信号的方法
US20180067159A1 (en) * 2014-12-19 2018-03-08 The Boeing Company Automatic data bus wire integrity verification device
TW201826139A (zh) * 2017-01-11 2018-07-16 國立中央大學 多微控制器系統、物聯網閘道系統、以及基於橋接器的多微控制器系統之控制方法
US20200049754A1 (en) * 2018-08-10 2020-02-13 Texas Instruments Incorporated Control area network (can) bus fault detection
CN111580454A (zh) * 2020-06-28 2020-08-25 山东省计算中心(国家超级计算济南中心) 一种工业安全plc控制器的安全控制方法

Also Published As

Publication number Publication date
TW202416142A (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
JP4195469B2 (ja) 非サイクル有向グラフで接続された構成要素間の通信方法
US11428430B2 (en) Air conditioning system having multiple outdoor units and multiple indoor units, method and device for operating air conditioning system
CA2698614C (en) Method and apparatus for unique address assignment, node self-identification and topology mapping for a directed acyclic graph
US6014715A (en) Method and apparatus for assigning port addresses
KR100729692B1 (ko) 마스터 노드 및 슬레이브 노드를 갖는 전자 장치 시스템
CN104641620B (zh) 用于动态地址分配的方法和装置
JPH08507623A (ja) ノードの任意トポロジー集合体を非サイクル有向グラフに変換する方法及び装置
KR20000033887A (ko) 홈네트웍 시스템 및 그 노드 아이디 할당방법
JP6976729B2 (ja) 通信装置、通信方法、プログラム、および、通信システム
CN102369716A (zh) 用于广播usb数据流的系统、设备和方法
US20070147387A1 (en) Interface link layer device for long delay connections
CN107734082B (zh) 一种地址分配方法及系统
CN108541079B (zh) 多个设备的低电力蓝牙连接方法
TWI827286B (zh) Can總線系統及其自動分配節點站號的方法
US20020152341A1 (en) Method and system for generating multiple self-ID packets on the 1394 bus using a standard PHY chip
CN117857243A (zh) Can总线系统及其自动分配节点站号的方法
US7139853B2 (en) Data transmission/reception system, connection establishing method and information transmission/reception apparatus
JP6976728B2 (ja) 通信装置、通信方法、プログラム、および、通信システム
TWI635729B (zh) 串聯通訊系統中的地址自動分配方法
CN114866111B (zh) 一种地址绑定方法、系统、主控节点和设备节点
CN116737469A (zh) 一种隔离数据传输故障的方法、装置、介质以及服务器
JPH02285745A (ja) 単チャネル通信バスシステム
WO2022179137A1 (zh) 一种光总线通信方法、系统、设备及介质
WO2023020279A1 (zh) 从站顺序编址方法和装置
EP4135268A1 (en) Methods, systems and devices for coordinating a plurality of nodes in a 10base-t1s ethernet network