液位监控系统通讯说明
罐存报告
功能代码:201
功能类型:罐内存量报告
头=0x02
命令格式:
<SOH>i201TT
命令是ASCII码.
<SOH>指的是 0x01
TT指的是油罐编号(十进制),比如可以用01指定返回01号罐罐存, 当TT为 00 时,意思就是取所有对象(所有罐),
即可以向液位仪发送如下命令代码,要求液位返回所有罐的罐存数据.
unsigned char ucCommand[7] = {0x1,'i','2','0','1','0','0'};
将ucCommand 从串口发送出去后,等待液位返回数据
返回格式如下
<SOH>i201TTYYMMDDHHmmTTpssssNNFFFFFFFF……TTpssssNNFFFFFFFF&&CCCC<ETX>
1: YYMMDDHHmm –当前的日期时间
2:TT : 油罐号. 液位仪根据指定的TT,返回对应的数据.如果是’01’,则就回来’01’罐的数据.如果是’00’,返回所有的
3: p : 产品代码,一个ASCII字符,可以是 0x20到0x7E,这个字符可以是自己定的,比如可以设定’a’代表93#汽油,然后可以通过603协议设置液位里某个罐的产品代码为’a’.即是93#汽油油品.如果对方的后台要用这个字段,需要先商定一个协议,哪个字符代表什么油品
4: ssss :油罐状态位
Bit 1 – LSB(即Least Significant Bit 最低有效位,字节的最低位) 油罐是否在卸油过程中
Bit 2 – 油罐是否在测漏过程中
Bit 3 – 液位高度报警失效 (仅在使用MAG探针时使用此标志位)
Bit4-16 – 未定义
5:NN : (16进制) 指出后面的8字节浮点数据字段的个数,此处应为0x07
6:FFFFFFFF: ASCII 16进制 浮点数 (注意,此处数据为以ASCII表示的16进制,即各字段都是8个字符的ASCII,需要转换为4字节的16进制浮点数数据,并进行大小尾格式转换,数据类型可定义为float)
1:油品体积
2 TC VOLUME (即temperature compensated volume)计算温度补偿后的油品体积
3:罐内空容,即可添油量.
4:油高
5:水高
6:温度
8:水体积
7:&&: 数据结束标志
8:CCCC : 数据校验和
此检验和检验数据完整性,校验内容包括前面所有的数据及控制字符.
9:<ETX> ASCII 0x03
//计算数组的和
unsigned int JisuanBUFH(unsigned char *P,unsigned short n)
{
unsigned short k;
unsigned int D,F;
F=0;
D=0;
for(k=0;k<n;k++)
{
D+=*P;
P++;
}
F=65536-(D%65536);
return F;
}
//HEX转换为ASCII码
unsigned char HEX_to_ASCII(unsigned char d)
{
if(d>=10)
return ((d-10)+0x41);
else
return d+0x30;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~