在CAN總線通信過程中,當某個信息緩沖器的數據發送完成后,發送完成寄存器中相應的位將被置為1。在查詢發送過程中,通過判斷這一寄存器可以知道該次發送是否完成。但如果發送不成功,則會使系統一直在等待,造成系統死機。所以軟件必須在這里設定一個等待時段,超過這一時段則調用CAN冗余系統,停止主CAN通道,啟用從CAN通道。
軟件設計中還要注意這樣一個問題,備用CAN切換完成后,如何恢復原來的通信任務。解決辦法是編制一個任務標志列表,備用CAN切換后,讀該表即可獲取系統原來進行的任務,實現原來通信任務的可靠切換。
2.2 實現總線管理功能
在本系統的軟件設計中,除了用于數據發送和接收的實時數據通信程序外,還包括用于對各個節點進行管理的通信管理程序。所有節點分為主節點和從節點。它們的區別在于主節點具有總線管理功能,可以進行在線節點統計,識別離線節點并采取處理措施;而從節點沒有這個功能。主節點只設一個,而允許多個從節點。總線管理功能程序供主節點每隔一段時間調用,來判斷所有的節點是否都在線:如果所有節點都在線,則認為總線正常;否則識別離線節點,并作相應處理。設計思路是系統主節點定時向總線上所有從節點發送一遠程幀,各個從節點收到后,將自己的節點編號放在一數據幀中發送給主節點,主節點根據收到的節點編號來判斷是否有節點故障離線。在本系統中,節點編號(模塊地址)由模塊上的DIP開關設定。
6FX5002-2EQ10-1CF0 TSXAEZ414
TSXAEZ801
TSXAEZ802
TSXAEY414
TSXAEY800
TSXAEY1600
TSXCAY22
TSXCAY41
TSXCTY2A
TSXCFY11
TSXDEP216
TSXDEF81
TSXDEZ32D2
TSXDEY16A4
TSXDEY16A5