首页 技术服务 智能显示屏 SmartDisplay Custom CAN protocol 简介

SmartDisplay Custom CAN protocol 简介

前言

SmartDisplay 目前支持CANbus硬件通讯接口,并使用CANopen软件通讯协议,CANopen是基于CAN总线的工业标准通讯协议,被广泛应用于各种领域,如医疗设备,车辆,铁路应用或建筑自动化。然而,使用CANopen协议时, 由于它是一种基于节点之间的通讯,因此客户端需要在其主机端实作协议,这可能对那些想简单使用CANbus的应用是个负担。因此,为了简化客户的使用,我们设计出新的Custom CAN协议,其不需要在客户端实作CANopen协议,只需要透过自定义的DBC文件设置数据, 就能轻易地将CAN ID / 数据和显示器上的Widget相关联, 从而实现及时的互动, 此种互动方式可以帮助客户更好的掌握和控制系统中的数据,并达到弹性高、维护方便等目的。

介绍

Custom CAN protocol 主要是透过 DBC(CAN Database)文件来设置数据并和显示器上的部件之间的互动方式。DBC 文件是用来定义系统中的 CAN ID、消息格式译码等相关信息的重要工具。使用自定义的 DBC 文件可以轻松地将不同的 CAN ID / 数据和显示器上的部件相关联,这样就可以实现及时的互动, 例如透过 CAN ID / 数据来控制显示器上的图形或者文字,显示器上的按钮或滑动条可以用来控制 CAN 的数据. 这种互动方式可以帮助客户更好的掌握和控制系统中的数据。

DBC 介绍

DBC档案通常是ASCII纯文本档, 其中包含各种关于在CAN总在线传输的物理信号的信息, 包括信号的CAN ID、名称、转换比例、定义等, 这些档案用于将原始的CAN数据译码成有意义的值, 并将不同的CAN ID映像到其对应的信号。DBC档案提供了将CAN讯息有效载荷转换为物理信号值所需的信息。

以下为Raw CAN 数据测试数据范例

raw-can-data-testing-data-example01

假设你有CAN DBC 档案, 且这个档案. 有包含此CAN Id (0x181) 的解译规则设定, 则你可从此DBC File 信息译码出下列的信息

raw-can-data-testing-data-example02

DBC 文件的主要功能为描述如何译码 CAN 消息和信号的规则,
下列为 DBC 档案节录的测试数据说明

test-data-description-excerpted-from-dbc-file01

由上列DBC 信息中, 可得知下列这些译码信息

test-data-description-excerpted-from-dbc-file02

由上列的译码规则设定, 可将先前取得的Raw CAN Data 译码成下列信息

test-data-description-excerpted-from-dbc-file03

藉由以上的说明,有了DBC档案设定,我们就可以正确解碼出CAN ID与CAN Data所代表的实际值. DBC文件包含讯息和信号布局,可以解析数据并将原始数据转换为物理值,系统能理解透过CAN传输的真实讯息.

DBC 编辑器
DBC档案通常是ASCII文本档,其中包含了关于在CAN总线上传输的物理信号的信息,这些档案由于内容格式的关系,很难读取和编辑。为了解决这个问题,市面上已经有许多关于DBC编辑器软件。这些软件可以帮助用户更轻松地建立和编辑自定义DBC档案。 其中一个常用的DBC编辑器是 vector CANdb++,由 Vector Informatik GmbH开发,这个软件可以用于建立和编辑DBC档案,提供了一个易于使用的接口,可以新增讯息、新增信号、定义讯息和信号的属性,如讯息ID、起始位、长度、比例、偏移量等等。

dbc-editor

SmartDisplay GUI Builder – Custom CAN 设定说明

SmartDisplay GUI Builder 为您提供了一个直观友好的操作界面,让您可以轻松创建属于自己的 CAN 项目,您只需要导入 DBC 档案并进行信号/讯息与对应的 Widget 的映像,即可在 SmartDisplay 装置上轻松显示与互动。操作简单且具有灵活性功能,能够满足您的各种需求,让您的工作更加高效率。

以下会依序介绍SmartDisplay GUI Builder 如何建立Custom CAN project与设定 DBC 与 Widget 关系

● 建立Custom CAN project
依据需求, 输入project 名称, 选择SmartDisplay 机种, 于protocol 选择 Custom CAN Id (CANbus), 即可建立Custom CAN project.

create-custom-can-project

● 汇入自定义 DBC File

import-custom-dbc-file

● 于主画面新增一个 Gauge 和 Horizontal Slider widget
点选Gauge object, 并于 Gauge 属性页面, 于 CAN Signal 字段, 设定Message 为 EEC1, Signal为 EngSpeed, 代表此 Gauge对象与EngSpeed 绑上关系, 此Gauge 对象画面显示变化是来自 EngSpeed value 值。

add-gauge-and-horizontal-slider-widget-in-the-main-page

点选Horizontal Slider object, 并于 Horizontal Slider 属性页面, 于 CAN Signal 字段, 设定Message 为 HorizontalSliderMessage, Signal为 HorizontalSliderSignal1, 代表此 Horizontal Slider对象与HorizontalSliderSignal1 绑上关系, 此Gauge 对象画面显示变化是来自 HorizontalSliderSignal1 值。

add-gauge-and-horizontal-slider-widget-in-the-main-page02

● 模拟 CAN ID / CAN Data 与 Widget 的互动
点选 icon:"Simulator With GUI" 启动仿真器

add-gauge-and-horizontal-slider-widget-in-the-main-page03

启动仿真器后, 可拉动下方 EngSpeed slider 来模拟Host端送出 EngSpeed 数据, 观察仿真器Gauge 变动, 也可以从右方的Message Log 看到, CAN ID 与 CAN Data 的变化,也可以操作仿真器的Horizontal Slider, 仿真Device端送出的数据。

add-gauge-and-horizontal-slider-widget-in-the-main-page04

● 更新SmartDisplay 装置设定
经由仿真器验证功能后, 如果没有问题后, 就可以连上 Device, 将project 设定上传到 SmartDisplay 装置端。

add-gauge-and-horizontal-slider-widget-in-the-main-page05

等待上传并更新完毕

add-gauge-and-horizontal-slider-widget-in-the-main-page06

● 验证 Device CAN ID / CAN Data 与 Widget 的互动
上传Project到Device端后, 可以进一步验证, SmartDisplay 装置端功能, 用GUI Builder 连上Device 端后, 点选 "Test Device", 即可测试Host 端与 Device 端的互动了。

verify-data-and-the-widget

Test Device Window

藉由此测试画面, 可模拟 Host 端依据 DBC 设定送出相对应的 CAN Id 与 CAN Data。
拉动下方 EngSpeed slider 仿真Host端送出 EngSpeed 数据, 观察装置Gauge 变动, 也可以从右方的Message Log 看到, CAN ID 与 CAN Data 的变化, 也可以操作Device的Horizontal Slider, 验证 Device端送出的资料是否合乎需求

test-device-window

SmartDisplay 装置实际画面

actual-display-of-the-smartdisplay-device

Custom CAN command说明

接下来将说明Custom CAN所使用的command protocol。透过这些指令,Host端可轻松控制SmartDisplay,包括换页、调整背光亮度,或者使Buzzer发出声音。

下列为command protocol 所使用到的CAN Id 设定:

  • CAN Id format:29 bit
    CAN Id:0xEF0000 + 0x7B00 (default channel id. 可透过GUI Builder修改)

以下为 Send Command 的基本数据格式

Header Byte (1 Byte) Length (1 Byte) Payload (N byte) CRC (2 Byte)
固定为0x53 (S) Value = 4 + Payload length
Payload max size: 250
数据内容与长度参阅Send Command Payload Modbus CRC16

以下为 Response Command 的基本数据格式

Header Byte (1 Byte) Length (1 Byte) Payload (N byte) CRC (2 Byte)
固定为0x52 (R) Value = 4 + Payload length
Payload max size: 250
数据内容与长度参阅Response Command Payload Modbus CRC16
 

● Command Payload
下列为各个command payload 的说明

  • Set Brightness:0x6
    Send Command
Command Code 1 Byte 0x6
Brightnes 1 Byte Brightness value
 

Response command

Command Code 1 Byte 0x6
Error Code 1 Byte 0:Success
1:Failed
  • Set Buzzer: 0x7
    Send Command
Command Code 1 Byte 0x7
Cycle 1 Byte Cycle value
High 1 Byte High value
Low 1 Byte Low value
 

Response command

Command Code 1 Byte 0x7
Error Code 1 Byte 0:Success
1:Failed
  • Set Page Index:0x8
    Send Command
Command Code 1 Byte 0x8
Page Index 1 Byte Page Index value
 

Response command

Command Code 1 Byte 0x8
Error Code 1 Byte 0:Success
1:Failed
  • Get Page Count: 0xA
    Send Command
Command Code 1 Byte 0xA
 

Response command

Command Code 1 Byte 0xA
Error Code 1 Byte 0:Success
1:Failed
High 1 Byte Page Count value
  • Get Current Page Index:0xF
    Send Command
Command Code 1 Byte 0xF
 

Response command

Command Code 1 Byte 0xF
Error Code 1 Byte 0:Success
1:Failed
Page Index 1 Byte Page Index value
  • Set Device State:0x20
    Send Command
Command Code 1 Byte 0x20
Device State 1 Byte 0: ConfigMode
1: DisplayMode
 

Response command

Command Code 1 Byte 0x20
Error Code 1 Byte 0:Success
1:Failed

● 传输范例
  • 设定亮度为 90

transmission-example-set-brightness-to-90

  • 切换Page Index 为 1

切换Page 时, 需要先设定Device State 为ConfigMode, 之后在下换页命令, 结束换页命令后, 就再设定Device State Mode 为Display Mode, 即可完成换页的命令, 相关命令顺序如下:

transmission-example-switch-page-index-to-1

结论

经由Custom CAN protocol , 客户可透过标准 DBC file, 自由无限制地定义CAN Id 与 CAN Data 的设定, 再透过SmartDisplay GUI Builder 绑定Message / Signal 与 Widget 的关系, 就这么简单, 一个客制的CAN HMI 就完成了, 不需要复杂的CAN protocol (如 CANopen, J1939…) 与设定即可简易无缝地与SmartDisplay Device 接轨, 心动了吗? 赶快下载 SmartDisplay GUI Builder, 在还没购买SmartDisplay 前, 可先试用仿真器确认SmartDisplay 是否能满足你的需求!

回分类页
go top
close