Professional Documents
Culture Documents
截圖 2022-11-22 下午4.21.23
截圖 2022-11-22 下午4.21.23
搜尋 f
在此⾴⾯上:
q 建模原則 CAN匯流排具有多主伺服器功能,這意味著匯流排上的任何節點都可以啟動與網路中任何其他節點的通訊。
模型分割槽
CAN網路上的所有節點都必須以相同的標稱比特率執⾏,否則接收端將出現錯誤。
p 元件庫
CAN規格是國際標準。 現在有兩個版本正在使⽤。 CAN 2.0A,低速版本,有時被稱為基本或標準CAN,由
q 斷路器
ISO11519標準定義。 CAN 2.0B,⾼速版本,也稱為Full CAN或擴充套件幀CAN,由ISO11898標準定義
p 溝通
CAN匯流排網路上需要兩個或多個節點才能進⾏通訊。 訊息或幀主要由ID(識別符號)組成,ID代表訊息的
IEEE C37.118協議
優先順序,最多由八個資料位元組組成。 CRC、確認插槽(ACK)和其他開銷也是訊息的⼀部分。 CAN匯流
CAN匯流排協議
排訊息框如圖1所⽰
CAN FD協議
FigureCAN: 匯流排訊息框
CANOpen協議
J1939協議
DNP3外站
ISO 15118協議
EtherCAT從裝置
⼄太網可變交換
IEC 60870伺服器
IEC 61850取樣值協議
Modbus裝置
Modbus客⼾端
SunSpec Modbus裝置
OPC UA伺服器
訊息由網路上分配⼀個或多個節點的識別符號(ID)標記。 所有節點都會收到訊息並執⾏過濾操作。 也就是
SFP模擬連結
說,每個節點對識別符號執⾏驗收測試,以確定訊息及其內容是否與該特定節點相關。 只有與訊息相關的節
連續劇 點才會處理它。 所有其他⼈都忽略了這條訊息。
q 接觸器
識別符號還有兩個功能。 它包含指定訊息優先順序的資料,並允許硬體為匯流排進⾏仲裁。 也就是說,如果
q 轉換器 多個節點試圖同時傳輸,它⽤於確定要傳輸哪個節點。 訊息ID必須在單個CAN匯流排網路中是唯⼀的,否則
q 轉換器-額外功能 兩個節點將在仲裁欄位(ID)結束後繼續傳輸,導致錯誤。 數字ID越低,訊息優先順序就越⾼。
q 機器
透過單個CAN匯流排訊息可以傳輸多達8位元組的資料。 DLC欄位或資料長度程式,說明資料欄位中有多少位
q 測量 元組的資料。
q 微電網
DLC值為0表⽰⼀種名為遠端幀的特殊型別的訊息幀。 遠端幀⽤於從網路內的特定節點請求資料,這些幀不攜
q 電路分割槽元件 帶任何資訊。 如果節點接收到具有正確ID的遠端幀,該節點將⾃動透過網路傳送其資料。
q PHIL介⾯
p 颱風HIL⼯具鏈中的CAN匯流排協議
q 被動元件
埠元件 ⽬前,只有HIL404、HIL602+和HIL604裝置⽀援CAN匯流排協議。
q 來源 出:
FigureCAN: 控制器聯結器引腳輸出
q 系統
q 測試套件
q 變壓器
q 輸電線路
q 元件附加資訊
參考資料
q 第三⽅整合
q 希爾·斯卡達
指令碼編輯器
q 波浪發⽣器⼯具
q HIL韌體管理器
測試和校準⼯具
q 訊號分析儀
每個CAN控制器波特率和執⾏率可以使⽤CAN設定元件進⾏配置,該元件可以在原理圖編輯器庫瀏覽器的“通
q 查詢表提取⼯具 訊/CAN匯流排”選項卡下找到。
使⽤⽇誌記錄
每個CAN控制器可⽤於接收和傳輸訊息。 CAN匯流排傳送和CAN匯流排接收元件⽤於定義訊息的傳送和接
Python⼝譯員 收。 這兩個元件可以在原理圖編輯器庫瀏覽器的“通訊/CAN/CAN匯流排”選項卡下找到。
雖然CAN匯流排協議⽀援傳送和接收64位資料,但HIL裝置中的所有暫存器都是32位長的,因此接收的資料
將轉換為32位,傳送64位資料將等於傳送32位資料。
此外,值得⼀提的是,⽬前不⽀援處理遠端幀。
p 可以設定
每個HIL404/602+/604裝置都有兩個CAN控制器(稱為CAN1和CAN2),CAN設定元件⽤於為模型中使⽤的
每個HIL裝置配置這些控制器。
如果使⽤CAN協議,模型中必須有⼀個CAN設定元件。 每個節點都能夠傳送和接收訊息,但不能同時傳送和
接收訊息。
CAN設定元件對話⽅塊視窗顯⽰在表1中
p 表1。 可以設定
元件 元件對話⽅塊視窗 元件引數
HIL裝置ID
指定CANx的位定時
CANx波特率
CANx執⾏率
可以設定
隱藏引數:
CANx時鐘分隔器
CANx時間段1
CANx時間段2
CANx重新同步跳轉寬度
CAN設定元件的引數描述⾒表2
p 表2。 CAN設定引數描述
引數名稱 描述
HIL裝置ID 此組合框的值指定了CAN控制器配置的HIL裝置
指定CANx的位定時 位定時常數(時分隔符、時間段1、時間段2和重新
同步跳轉寬度)可以以兩種⽅式指定:
⾃動位定時常數使⽤指定的波特率和100
MHz的控制器參考時鐘⾃動計算。 計算這些
值時,時間量⼦的符⽂數為8-25,樣本點約
為85%,重新同步跳轉寬度為4
⼿動-位定時常量由使⽤者⼿動設定。 如果選
擇⼿動⽅法,則會出現三個新引數,允許使
⽤者指定定時常數,如圖3所⽰
注:
如果使⽤者不熟悉CAN位計時的概念,強烈
建議指定位計時常量的⽅法保持⾃動
CANx波特率 控制器x的鮑德速率值
CANx執⾏率 控制器x執⾏訊息傳送的執⾏率
CANX時鐘分隔器(隱藏) 如果選擇⼿動⽅法,則指定位計時的時鐘分隔器常
數
CANx時間段1(隱藏) 如果選擇⼿動⽅法,則指定位計時的時間段1常量
CANx時間段2(隱藏) 如果選擇⼿動⽅法,則指定位計時的時間段2常量
CANx重新同步跳轉寬度(隱藏) 如果選擇⼿動⽅法,則指定位計時的重新同步跳轉
寬度常量
圖: ⼿動指定CAN控制器的位定時
p 可以匯流排傳送
CAN匯流排傳送元件⽤於指定要傳送的單個CAN訊息的格式和值。
CAN匯流排傳送元件如表3所⽰,⽽CAN匯流排傳送對話⽅塊視窗如圖4所⽰。
p 表3。 可以匯流排傳送
元件 元件屬性
CAN控制器
資料輸入
匯入DBC檔案
選擇訊息
訊息ID
可以匯流排傳送 識別符號型別
訊息長度
傳輸訊息
隱藏引數:
傳輸期
FigureCAN: 匯流排傳送對話⽅塊視窗
CAN匯流排傳送元件的引數描述⾒下表。
p 表4。 CAN匯流排傳送屬性描述
物業名稱 描述
CAN控制器 選擇傳送訊息的控制器(CAN1或CAN2)
資料輸入 選擇訊息是⼿動定義的透析視窗,還是透過.dbc檔
案定義訊息
匯入DBC檔案 選擇.dbc檔案進⾏解析
選擇訊息 從.dbc檔案中選擇訊息進⾏模擬
注:
識別符號值必須在CAN網路中是唯⼀的。
雖然可以為不同的CAN控制器指定相同的ID
值(透過CAN1和CAN2傳輸的訊息都可以
具有相同的ID),但使⽤者必須意識到,將
這些控制器連線到同⼀網路可能會導致意外
的通訊錯誤。
訊息長度 指定訊息⽀付負載的長度(以位元組(8位)為單
位)。 長度範圍從1到8不等。 由於不⽀援遠端幀,
因此不允許長度為0。
多個訊號可以透過單個CAN訊息傳輸。 使⽤+(加)按鈕,新訊號將新增到CAN匯流排傳送對話⽅塊的訊號
表中。 所有訊號都按照訊號引數定義的⽅式包裝在⼀條訊息中。 訊息預覽可以在表格的右側看到。
圖5顯⽰瞭如何定義訊號。
圖: CAN匯流排傳送訊號定義
對於每個訊號,可以定義以下引數:
訊號名稱-CAN匯流排傳送元件上顯⽰的訊號名稱
起始位-CAN訊息中訊號的起始位
長度-以位為單位的訊號長度
位元組順序-表⽰訊號的位元組順序。 訊號可以定義為⼩端或⼤端⼦
資料型別-訊號資料型別。 訊號可以定義為uint、int或real
Mux型別-在None、Muxer和Muxed之間進⾏選擇,以定義在傳送訊息時是否使⽤多路複⽤器。 如果型
別為None,訊號將正常執⾏,並將始終在訊息中打包。 如果型別是Muxer,該訊號將打包在訊息中,
其值將⽤作多路複⽤器,以確定將打包哪些Muxed訊號。 如果型別是Muxed,則僅當Muxer值與該訊
號Mux值相同時,該訊號才會被打包在訊息中。
Mux值-如果訊號被定義為Muxed,Mux值將定義該訊號何時被打包。 多個訊號可以重疊,Mux值將⽤
於定義哪個訊號被打包。
刻度-定義對訊號值執⾏的刻度
偏移-定義對訊號值執⾏的偏移量
Min-定義最⼩訊號值
最⼤值-定義最⼤訊號值
單位-定義訊號單元
因⼦和偏移量定義了線性轉換,將編碼值的訊號轉換為訊號物理值,反之亦然:
最⼩值和最⼤值定義了訊號的有效物理值範圍。
將訊號新增到列表中後,CAN匯流排傳送元件看起來像圖6。 訊號埠可以連線到模型的任何訊號處理部分。
: 帶有定義訊號的圖: CAN匯流排傳送元件
⽰意圖中可能存在許多CAN匯流排傳送元件,每個此類元件都描述了要傳送的CAN訊息。 當向傳送多條訊息
的模型新增額外的CAN匯流排傳送元件時,使⽤者必須確保所有訊息都有唯⼀的ID。
p CAN巴⼠接收
CAN匯流排接收元件⽤於解壓透過CAN網路接收的訊息。
CAN匯流排接收元件如表5所⽰,⽽CAN匯流排傳送對話⽅塊視窗如圖7所⽰。
p 表5。 CAN巴⼠接收
元件 元件引數
CAN調變器
資料輸入
匯入DBC檔案
選擇訊息
訊息ID
識別符號型別
訊息長度
圖: CAN匯流排接收對話⽅塊視窗
p 表6。 CAN匯流排接收引數描述
引數名稱 描述
CAN控制器 選擇接收訊息的控制器(CAN1或CAN2)
資料輸入 選擇訊息是⼿動定義的透析視窗,還是透過.dbc檔
案定義訊息
匯入DBC檔案 選擇.dbc檔案進⾏解析
選擇訊息 從.dbc檔案中選擇訊息進⾏模擬
訊息長度 指定以位元組(8位)為單位的付費負載長度。 長
度範圍從1到8不等。 由於不⽀援遠端幀,因此不允
許長度為0。
使⽤+(加)按鈕,在CAN匯流排接收對話⽅塊的訊號表中新增新訊號。 所有訊號都以訊號引數定義的⽅式
解開。
圖8顯⽰瞭如何定義de訊號。
FigureCAN: 匯流排接收訊號定義
對於每個訊號,可以定義以下引數:
訊號名稱-CAN匯流排傳送元件上顯⽰的訊號名稱
起始位-CAN訊息中訊號的起始位
長度-以位為單位的訊號長度
位元組順序-表⽰訊號的位元組順序。 訊號可以定義為⼩端或⼤端⼦
資料型別-訊號資料型別。 訊號可以定義為uint、int或real
Mux型別-在None、Muxer和Muxed之間進⾏選擇,以定義解碼訊息時是否使⽤多路複⽤器。
Mux值-如果訊號被定義為Muxed,Mux值將定義該訊號何時解開。
刻度-定義對訊號值執⾏的刻度
偏移-定義對訊號值執⾏的偏移量
Min-定義最⼩訊號值
最⼤值-定義最⼤訊號值
單位-定義訊號單元
因⼦和偏移量定義了線性轉換,將編碼值的訊號轉換為訊號物理值,反之亦然:
最⼩值和最⼤值定義了訊號的有效物理值範圍。
將訊號新增到列表中後,CAN匯流排接收元件看起來像圖9。 訊號埠可以連線到模型的任何訊號處理部分。
: 帶有定義訊號的圖: CAN匯流排接收元件
原理圖中可能存在許多CAN匯流排接收元件,每個此類元件都⽤於接收具有定義ID值的CAN訊息。 具有ID值
的訊息不會在CAN匯流排接收元件中定義的任何ID值,則會被忽略。
每次收到新訊息時,rcv_cnt值都會增加1。
p 使⽤DBC檔案指定CAN訊息
傳送和接收都可以匯入DBC檔案來定義訊息。 兩個元件的原理是相同的,它只會在傳送上演⽰。
要載入DBC檔案,使⽤者必須選擇Candb檔案作為資料輸入屬性,然後使⽤“匯入DBC檔案”按鈕導航到所需的
檔案。 如果檔案解析正確,則“選擇訊息組合”框將填充檔案中的訊息名稱。 選擇不同的訊息將更改對話⽅塊
中的訊息和訊號引數。 該⽰例顯⽰在。
: 使⽤DBC檔案定義的FitCAN: 訊息
當使⽤DBC檔案定義CAN訊息時,所有訊息和訊號引數都會被禁⽤進⾏編輯。 如果資料輸入更改為對話⽅塊
視窗,則將啟⽤引數進⾏編輯。 如果將資料輸入更改回Candb檔案,引數將更改回DBC檔案中定義的值。
p 使⽤原理圖API更改元件屬性值
⾃定義元件對話⽅塊旨在輕鬆定義CAN訊息引數。 使⽤標準原理圖API函式也可以更改這些值,但可以修
改。 也就是說,除傳輸訊息和訊號資訊外,所有屬性都以標準⽅式更改,其中傳輸訊息被指定為Python字典
型別,請求資訊必須指定為Python字典型別的列表。
為了更改Transmit訊息值,必須向transit_type屬性指定Python字典。 字典有以下欄位:
p 表7。 傳輸訊息詞典
欄位名稱 允許的值
關於活動 真,假
計時器 真,假
p 表8。 訊號資訊字典欄位
欄位名稱 允許的值
“名字” ASCII字串
“start_bit” 0 - 63
“長度” 1 - 64
“byte_order” “⼩端點”、“⼤端點”
“data_type” “int”、“uint”、“real”
"mux_type" “無”、“Muxer”、“Muxed”
"mux_val" 正整數
“規模” 實數
“偏移” 實數
“分鐘” 實數
“最⼤值” 實數
“單位” ASCII字串
為了指定在圖5中定義的事件和請求上傳送的傳輸訊息,應執⾏以下程式:
transmit_type = {
"On event": True,
"On timer": False
}
mdl.set_property_value(mdl.prop(can_component, "transmit_type"), transmit_type)
signals = [
{"name": "signal0", "start_bit": 0, "length": 8, "byte_order": "Little Endian", "data_type": "uint", "mux_type": "Non
{"name": "signal1", "start_bit": 8, "length": 8, "byte_order": "Little Endian", "data_type": "uint", "mux_type": "Mux
{"name": "signal2", "start_bit": 16, "length": 8, "byte_order": "Little Endian", "data_type": "uint", "mux_type": "Mu
{"name": "signal3", "start_bit": 16, "length": 8, "byte_order": "Little Endian", "data_type": "uint", "mux_type": "Mu
]
mdl.set_property_value(mdl.prop(can_component, "signals"), signals)
要使⽤DBC檔案來指定訊息引數,只需將file_path屬性設定為所需的DBC檔案的路徑即可。 該元件將⾃動解
析檔案,您只需選擇所需的訊息。 以下程式說明了這⼀點:
dbc_file_path = r"C\dbc_files\ford_fusion_2018_pt.dbc"
mdl.set_property_value(mdl.prop(can_component, "file_path"), dbc_file_path)
mdl.set_property_value(mdl.prop(can_component, "choose_message"), "Lane_Keep_Assist_Control")
p 虛擬HIL⽀援
r
颱風HIL Inc. www.typhoon-hil.com