一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU

本软件已经上传 https://download.****.net/download/wukuan_123/10509907

也可以到百度网盘下载 链接: https://pan.baidu.com/s/1nrj9hylF5b1JZOebMB68OQ 密码: 7jvd

一、通讯协议功能的基本介绍

1、该通讯协议支持车载CAN接口,允许*设定CAN ID和选择扩展帧或标准帧,只需要一个CAN ID就可以。

2、该通讯支持串口通讯,暂时使用标准的MODBUS RTU通讯协议,读参数使用0x03功能码、写参数使用0x06 0x10两个功能码。

3、该通讯方式最多可以定义256页,每页最多可以定义256个参数,也就是在最多可以自定义65536个参数,足可以满足各类设备调试和参数配置的要求。

4、所有的参数地址是唯一的,可以连续,也可以间隔。

5、参数类型支持如下:

    1)bin :按位设置和显示,16bit;

         一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU

    2)s8 u8 :表示有符号8bit数和无符号8bit数,配合偏移量和比例系数变换后为64bit 双精度浮点数,最多可显示6个小数位。

    3)s16 u16 :表示有符号16bit数和无符号16bit数,配合偏移量和比例系数变换后为64bit 双精度浮点数,最多可显示6个小数位。

    4)s32 u32 :表示有符号8bit数和无符号8bit数,配合偏移量和比例系数变换后为64bit 双精度浮点数,最多可显示6个小数位。

    5)float: 单精度浮点数,配合偏移量和比例系数变换后为64bit 双精度浮点数,最多可显示6个小数位。

    6)enum :枚举数据,每个参数最多可以枚举65536个不同的字符串;如下对参数11的不同值时进行枚举,显示非常直观。

        Para11_Enum0 = 正常
        Para11_Enum1 = 一级告警
        Para11_Enum2 = 二级告警
        Para11_Enum3 = 三级告警

    7)string:可以显示并设置最大100个字符。

    8)Lua:调用Lua脚本函数直接对数据进行解析,可以解析为各种各样的数据,非常方便

一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU

二、配置参数的定义

    1)不同的工程或项目可以配置为不同的工程文件,由于不太熟悉xml,所以这里直接使用ini文件定义, VC也有直接的函数可以读取对应的参数值。

    2)硬件接口定义:can通讯定义和串口定义

一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU

can数据可以使用一个ID,最多需要使用3个ID,一般一个ID即可

2)定义参数页,可以连续也可以间隔

    一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU

3)定义参数:分为两种方式,一种是每个参数单独定义,一种是使用数组的方式批量定义,在同一页两种方式可以混合使用。每个参数可以定义为不同的类型,但是和单片机的定义要保持一致。

        一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU

        一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU



自定义参数

   

1、“串口”菜单,设置串口信息

2、“地址”菜单,选择modbus 从机的地址,软件默认0,不符合常规的地址“1”的要求,需要重新设置。注意,每次都要设置

3、“配置文件”-》“导入”:默认是选择安装目录\Script\FlexPara.ini 的文件,也可以选择其他地址的合格的配置文件。

4、G0-P0对应的地址是modbus rtu 40000(从0开始),

通过主菜单“辅助功能”-> “自定义参数”可以打开下面的界面,界面的所有参数使用配置文件*.ini生成,每个配置文件最多允许定义256组,每组最多256个参数,也就是说每个程序可以*定有65536个参数,配置文件如下:

1、  通讯协议配置:

一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU

如上图所示,所有参数都必须定义,关键字定义如下:

[CANDriver]:CAN驱动参数组名,不可更改

IDType = Ext ; Ext-扩展帧 Std-标准帧,定义发送接收的CAN格式

;以下三个定义id为十进制,请将十六进制转换为十进制表示

IDRead = 268872363  ;发送读命令的ID,eg:0x1006AAAB= 268872363

IDStr = 268937899;接收参数信息ID

IDRec = 268807082;接收MCU数据的ID,0x1005ABAA = 268807082

注意:以上配置无效,但是必不可少

2、  组信息配置:定义参数组信息,如下面两个图所示,

[GROUPInfo] 参数组名,不可更改

Gnn可以0-255之间,可以自行定义

3、参数信息配置:一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU

[GROUPn]:如下图的[GROUP1],n的取值范围0-255之间的任意值;

Paran:如下图,每个GROUP下面可以定义0-255个参数,可以连续,也可以间隔;

每个Para有以下几部分组成:RW ,Name,Type, Max Min Zoom,Shift,单位,描述

RW:R  W  RW  这三个参数可选

Type:bin  s8 u8 s16 u16 s32 u32 float enum string

显示值= (Can数据 + Shift)* Zoom;

显示值最多显示5位小数,但是Zoom的小数位不限制。

在“Name”、“单位”以及“描述”等参数中不允许有半角“,”符号,因为系统按照“,”来解析数据。如果该参数为空,这必须使用添加一个空格,不允许出现连续两个分隔符“,”,否则解析错误。

       3.1在参数组中定义数组:

Paran_ArrayStart= m: n表示以Paran表示模板进行数组扩展,m 表示数组扩展的起始索引,也就是下图方括号中的第一个值,m必须是整数:负数,0,正数均可。

Paran_ArrayLen=m: n表示以Paran表示模板进行数组扩展,m 表示数组扩展的长度。

一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU 一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU

   3.2枚举功能:Paran_Enumm = string n表示依赖于哪个参数值,m 表示当前参数值对应的定义,string表示表示具体的定义。

在参数值这一列,数值和定义使用“:”分开

 一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU

3.3位定义:如下图位定义,使用Paran_BitDef 来表示,从bit0开始描述,知道bit15。注意bin定义的数据必须是16位u16,在下位机里面定义时要注意。

一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU

一种基于CAN/串口通讯的变量参数任意扩展增加的方法 MODBUS RTU