bokee.net

系统集成工程师博客

正文 更多文章

TL系列智能仪表通信协议V.20

TL系列智能仪表通信协议
1.本协议,专为上位机与若干个下位机(智能仪表)之间的通信而制定。
2.上位机与若干个下位机(智能仪表)之间采用RS485通信方式。
3.上位机主动发送命令到各下位机,各下位机接收上位机发送的地址与自身的设备地址相比较,若相同,则接收上位机数据或发回上位机要求的数据。
4.波特率可选: 300,600,1200,2400,4800,9600
5.数据帧格式:1个起始位“0”,8位数据位(低位在先),1个停止位“1”,无奇偶校验位
6.每个下位机(智能仪表)内部参数的地址分配和见参数地址表,
命令格式说明如下:
一.单字节下传(写一个字节数据到下位机)命令格式:
起始符
命令
设备地址
机内地址
数据
校验和
结束符
起始符: “:”(冒号),即ASCII码3AH;
命令:30H,即字符“0”的ascii码,表示写单字节;
设备地址:两位ASCII码,范围(00—FFH,高地址在前),表示下位机设备地址;
机内地址:两位ASCII码, 范围(00—FFH,高地址在前),表示下位机数据地址,即代表下位机机内数据地址;
数据:两位ASCII码,范围(00—FFH,高地址在前),就是要下传的单字节数据;
校验和:两位ASCII码,依次为LRC高字节和LRC低字节(LRC算法见附录),也就是命令、设备地址地址、机内地址和数据六个字节无进位加结果的ASCII码;
结束符:“#”(井号),即ASCII码23H。
 
二.单字节上传(从下位机读一个字节数据)命令格式:
起始符
命令
设备地址
机内地址
校验和
结束符
起始符: “:”(冒号),即ASCII码3AH;
命令:31H,即字符“1”的ascii码;表示读单字节;
设备地址:两位ASCII码,范围(00—FFH,高地址在前),表示下位机设备地址;
机内地址:两位ASCII码, 范围(00—FFH,高地址在前),表示下位机数据地址,即代表下位机机内数据地址;
校验和:两位ASCII码,依次为LRC高字节和LRC低字节(LRC算法见附录),也就是命令、设备地址地址和机内地址五个字节无进位加结果的ASCII码;
结束符:“#”(井号),即ASCII码23H。
上位机发完读数据命令后,应马上转为接收状态,接收下位机回传数据。
 
三.下位机回送单字节数据值格式:
起始符
数据格式
设备地址
机内地址
数据
校验和
结束符
起始符: “:”(冒号),即ASCII码3AH;z
数据格式:31H, 即字符“1”的ascii码,表示回传为单字节数据;
设备地址:两位ASCII码,范围(00—FFH,高地址在前),表示下位机设备地址;
机内地址:两位ASCII码, 范围(00—FFH,高地址在前),表示下位机数据地址,即代表下位机机内数据地址;
数据:两位ASCII码,范围(00—FFH,高地址在前),内容为单字节数据的十六进制编码,高位在前,数据说明:如数数据为1AH(十六进制),则传送的格式为“1”和“A”,的ASCII码”31H”和”41H”;
校验和: 两位ASCII码,依次为LRC高字节和LRC低字节(LRC算法见附录),也就是数据格式、设备地址和机内地址和数据七个字节的相加的结果的ASCII码
结束符: “#”(井号),即ASCII码23H
 
 
 
四.双字节下传(写双字节数据到下位机)命令格式:
起始符
命令
设备地址
机内地址
数据
校验和
结束符
起始符: “:”(冒号),即ASCII码3AH;
命令:32H,即字符“2”的ascii码,表示写双字节;
设备地址:两位ASCII码,范围(00—FFH,高地址在前),表示下位机设备地址;
机内地址:两位ASCII码, 范围(00—FFH,高地址在前),表示下位机数据起始地址,即代表下位机机内数据地址;
数据:四位ASCII码,范围(00—FFFFH,高字节在前),就是要下传的双字节数据;
校验和:两位ASCII码,依次为LRC高字节和LRC低字节(LRC算法见附录),也就是命令、设备地址地址、机内地址和数据九个字节无进位加结果的ASCII码;
结束符:“#”(井号),即ASCII码23H。
 
五.双字节上传(从下位机读双字节数据)命令格式:
起始符
命令
设备地址
机内地址
校验和
结束符
起始符: “:”(冒号),即ASCII码3AH;
命令:33H,即字符“3”的ascii码,示读双字节;
设备地址:两位ASCII码,范围(00—FFH,高地址在前),表示下位机设备地址;
机内地址:两位ASCII码, 范围(00—FFH,高地址在前),表示下位机数据地址,即代表下位机机内数据地址;
校验和:两位ASCII码,依次为LRC高字节和LRC低字节(LRC算法见附录),也就是命令、设备地址地址和机内地址五个字节无进位加结果的ASCII码;
结束符:“#”(井号),即ASCII码23H。
上位机发完读数据命令后,应马上转为接收状态,接收下位机回传数据。
 
六.下位机回送双字节数据值格式:
起始符
数据格式
设备地址
机内地址
数据
校验和
结束符
起始符: “:”(冒号),即ASCII码3AH;
数据格式:32H, 即字符“2”的ascii码,表示回传为双字节数据;
设备地址:两位ASCII码,范围(00—FFH,高地址在前),表示下位机设备地址;
机内地址:两位ASCII码, 范围(00—FFH,高地址在前),表示下位机数据地址,即代表下位机机内数据地址;
数据:四位ASCII码,范围(00—FFFFH,高地址在前),内容为双字节数据的十六进制编码,高位在前,数据说明:如数数据为1A2BH(十六进制),则传送的格式为“1”、“A”、“2”和“B”的ASCII码“31H”、“41H”、“32H”和“42H”;
校验和: 两位ASCII码,依次为LRC高字节和LRC低字节(LRC算法见附录),也就是数据格式、设备地址和机内地址和数据七个字节的相加的结果的ASCII码
结束符: “#”(井号),即ASCII码23H
  
附录
A、LRC检测
本通信协议使用ASCII模式,消息包括了一基于LRC方法的错误检测域。LRC域检测了消息域中除开始的“:”及结束的“#”外的内容。
LRC域是一个包含一个8位二进制值的字节。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误。
LRC方法是将消息中的8Bit的字节连续累加,丢弃了进位。
 
LRC简单函数如下:
static unsigned char LRC(auchMsg,usDataLen)
unsigned char *auchMsg ; /* 要进行计算的消息 */
unsigned short usDataLen ; /* LRC 要处理的字节的数量*/
{ unsigned char uchLRC = 0 ; /* LRC 字节初始化 */
while (usDataLen--) /* 传送消息 */
uchLRC += *auchMsg++ ; /* 累加*/
return ((unsigned char)(-((char_uchLRC))) ;
}
 
分享到:

上一篇:求购仪器仪表,自动化产品

下一篇:

评论 (0条) 发表评论

抢沙发,第一个发表评论
验证码