一种基于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;
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脚本函数直接对数据进行解析,可以解析为各种各样的数据,非常方便
二、配置参数的定义
1)不同的工程或项目可以配置为不同的工程文件,由于不太熟悉xml,所以这里直接使用ini文件定义, VC也有直接的函数可以读取对应的参数值。
2)硬件接口定义:can通讯定义和串口定义
can数据可以使用一个ID,最多需要使用3个ID,一般一个ID即可
2)定义参数页,可以连续也可以间隔
3)定义参数:分为两种方式,一种是每个参数单独定义,一种是使用数组的方式批量定义,在同一页两种方式可以混合使用。每个参数可以定义为不同的类型,但是和单片机的定义要保持一致。
自定义参数
1、“串口”菜单,设置串口信息
2、“地址”菜单,选择modbus 从机的地址,软件默认0,不符合常规的地址“1”的要求,需要重新设置。注意,每次都要设置
3、“配置文件”-》“导入”:默认是选择安装目录\Script\FlexPara.ini 的文件,也可以选择其他地址的合格的配置文件。
4、G0-P0对应的地址是modbus rtu 40000(从0开始),
通过主菜单“辅助功能”-> “自定义参数”可以打开下面的界面,界面的所有参数使用配置文件*.ini生成,每个配置文件最多允许定义256组,每组最多256个参数,也就是说每个程序可以自由定有65536个参数,配置文件如下:
1、 通讯协议配置:
如上图所示,所有参数都必须定义,关键字定义如下:
[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] 参数组名,不可更改
Gn:n可以0-255之间,可以自行定义
3、参数信息配置:
[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 表示数组扩展的长度。
3.2枚举功能:Paran_Enumm = string n表示依赖于哪个参数值,m 表示当前参数值对应的定义,string表示表示具体的定义。
在参数值这一列,数值和定义使用“:”分开
3.3位定义:如下图位定义,使用Paran_BitDef 来表示,从bit0开始描述,知道bit15。注意bin定义的数据必须是16位u16,在下位机里面定义时要注意。