IXXAT CANBridge产品是一款性能优异的CAN网桥/路由器设备,支持CAN网络耦合,可以实现强大的过滤,ID转换、数据映射和多路复用,使用事件触发的方式执行预定义的操作。除通过CAN-Gateway Configurator工具的图形菜单配置不同CAN网络之间的数据映射外,CANBridge NT还支持使用Lua编写操作规则,方便实现不同CAN网络之间的数据转换。
1. 创建lua脚本
Ixxat Lua ADK基于标准的Lua 5.3.5发行版,针对嵌入式系统开发和执行进行了优化,以提供可以在资源有限的嵌入式处理器上运行的脚本框架。
IXXAT Lua ADK使用3中类型的回调函数:initialize, on_...和loop。Initialize在系统初始化时被调用,用于注册事件和设置CAN消息过滤。loop在初始化之后,启动并运行设备时,每100毫秒调用一次,用于触发循环任务。on_can和on_mqtt函数用于处理来自CAN和MQTT的事件。
安装配置工具CAN-Gateway Configurator后,在C:UsersPublicDocumentsHMSIxxat CAN-Gateway ConfiguratorExamplesLua examples目录中,提供了lua示例脚本。
can_demo.lua文件,展示如何通过Lua处理(发送和接收)CAN报文。
-最大频率50赫兹(20毫秒)
-修改字节7和8的数据
并在CAN1上循环发送ID为0x300的消息。
1.1.1 initialize
在固件初始化时调用一次。它用于注册需接收的CAN和MQTT消息,初始化变量。本例中,initialize调用can_register_msg注册需处理的报文。
function initialize() print("initialize") can.register_msg({ format = "std", data_as = "array", ident = 0x200, topic = 1, port = 1, max_frequency = 20, }) end
1.1.2 on_can
处理设备收到的CAN消息,本例中,处理接收到ID 0x200的报文,修改字节7和8的数据后,发送到CAN2。
function on_can(topic, port, format, ident, data) data[7] = data[7] << 1 data[8] = cnt cnt = cnt + 1 can_send(2, format, 0x201, data) end
1.1.3 loop
本例中,通过loop实现在CAN1上循环发送ID为0x300的消息。
function loop(ticks, elapsed) can_send(1, "csd", 0x300, payload) end
2. 使用Lua ADK
为了能够在CANBridge设备上使用Lua ADK,必须使用Lua framework更新设备,并在CAN-Gateway Configurator中启用Lua。具体步骤如下:
1、连接CANBridge设备到PC,并上电。
2、启动安装的最新版本CAN-GatewayConfigurator工具,并connect到设备。
3、配置设备的操作模式和CAN端口的波特率
4、在工具栏中打开Lua ADK菜单并选择update Lua ADK。选择C:Program FilesHMSIxxat CAN-Gateway Configurator V6下的lua_framework_vx文件更新Lua ADK。
5、在配置树中选择General,在其下拉列表中选择use of Lua as ADK,选择target 模式。
6、在Target菜单中,选择Write configuration to target,将配置写入连接的CAN设备。
7、在Lua ADK菜单,选择Write Lua script to target,将创建好的lua脚本写入CANBridge设备,在设备启动后,Lua脚本将自动运行。
使用Lua ADK 可以为IXXAT 的CAN@net N及 CANBridge NT设备开发Lua应用,方便的实现不同网络直接的数据映射。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !