关于自由艇的电机协议解析

关于自由艇的电机协议解析

准备工作:一台示波器,一个CANET盒子,一台电脑,一根网线。
软件:CANTest,CANNET-Config。

第一步:
用示波器测出CAN通信的波特率。
本次测得波特率为250K,如下图1所示:
图1:CAN通信波形
计算公式为:F=1/T
T为示波器上显示的周期,看波形,最短的间隔时间就是的。

第二步:
使用CANNET-Config设置CANET盒子的波特率为250k,如下图2所示:
图2:Canet盒子设置界面
第三步:
网线接好CANET盒子后,打开CANTEST软件,首先选择设备为CANET-TCP选择工作方式为客户端,ip为192.168.1.10,端口为4001。如下图3所示:
图3:CANET设置界面
点击启动后就可以接收到数据了,保存不同转速下收到的数据,保存为CSV格式,这样方便筛选。
图4:采集到的自由艇数据
反复对比不同转速下的各个地址,成功解析出转速,档位,游艇状态。如下图5所示:
图5:解析完成部分
下面是解析油压,油温,水压,水温,电池电压,电机运行时间。
首先得保存不同量值下采集到的数据,然后在通过分析各个地址的数据,找出感觉对的上的两组数据,求出它在X,Y轴下的直线方程,X代表实际测得的字节的16进制转化为10进制,Y代表船上表头独得的实际数值。
我们保存了四组数据,这四组数据相差的还比较大,所以这四组数据很适合用来解析。
首先解析的电压,一开始以为是按照正常的标准协议的分辨率来定义的,于是在j1939上找到电压分辨率是0.05V/位,两个字节,然而把采集到的实际值14.1V换算成16进制,在每个地址上都找了个遍,没找到。于是对比了14.1V和11.8V,找到了地址0x000001a0上的data[4],data[5],11.8V为2e78(16),为11896,14.1V为3752(16),为14162(10)。
11.8/14.1=0.8368。11896/14162=0.8399。可以看到比值差不多,所以断定这两位即为电压地址,分辨率应该为0.001/位,单位为V。
再来看水温,温度和电压不一样,不是从0开始的,所以不能和电压一样通过找到相同比值确定,这个只能找不同的地址慢慢试,唯一可以用的线索就是对比大小,温度高,则数据应该是对应大。这样的走势的数据有一些,首先找到一组,我找的水温69F和136F的,地址为0x000001a0,当data[0]=0x07时数据段为data[2],69F数据为15(16),即为21,136F数据为3a(16),
即为58,则有69=21k+b,136=58k+b,解得。然后将其余的点代入验证,125F对应数据为35(16),即53(10),代入方程得y=1.81153+31=126.983,和125相差不大。可能是采集过程不是实时对应的。
然后用同样的方法,找到油温地址为0x000001a0,当data[0]=0x05时数据段为data[6],同样也是:
y=1.811
x+31
然后水压,是地址和水温一样,数据段为data[5]和data[6],方程为:
y=0.00145x
油压地址和油温一样,数据段为data[3]和data[4],方程为:
y=0.00145
x
时间地址为0x000001e0,当Data[0]==0x01时,数据段为data[1],data[2],
data[3],data[4],方程为:
y=0.05*x-1
解析完得到协议如下表1所示:
表一:自由艇协议
根据以上解析得到的协议写一个简易的上位机界面,并通过现场实时检验,得出本次协议解析基本完全正确,以下图6为现场验证拍下来的图片:
图6:自由艇显示界面

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值