欢迎来到天天文库
浏览记录
ID:45575158
大小:58.49 KB
页数:20页
时间:2019-11-15
《串口及通讯协议》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、串口及通讯协议§1.1关于通讯方面问题的问答(1)问:为什么连接不上流最计?,接上后它不做任何反应?答:A.检查串口参数是否匹配;位于M63窗口的协议选择是否正确B.检查物理连线是否接好D.位于M46窗口的地址是否设置正确C.把流量计匣新上电,应该能接收到字符“AT”,否则A和B步存在问题D.检查命令是否正确。在使用扩展协议时命令后面要紧跟者一个回车符号(2)问:为什么MODBUS读出的量值乱七八糟的,和显示值完全不一•致?答:一般来说如果MODBUS协议能够读出数据就表明协议本身没有问题了。乱七八糟的数据是因为存在如下错课:A.数据格式错谋;B.寄存器地址有误,导致数据
2、发牛了位移而产牛错误。比如REAL4这种实型变量(IEEE754格式的单精度浮点数),按照字和字节共有4种不同的排列方式,TDS1OO使用的是最常规的一种,即低word和高byte在前格式。您可以修改您的软件的数据存放榕式解决这个问题。使用C语言吋的数据存放顺序请参考本节的问答(8)如果使用通用的组态软件,则组态软件一-般具有一个选择格式的方法。(3)问:我的系统要求每次1小时只发出一次命令然后要求同时收到多个变量,应该使用那个协议?答:一条MODBUS命令可以一次读出很多变量。如果MODBUS-RLR不能解决问题,町以使用使用“&”连接符号连接起來的海峰扩展协议。还可以
3、使用简易兼容协议,或者Metor-BUS协议。(4)问:为什么通过协议读岀的最值和流最计显示的不一致?答:A.确认变量地址是否就是您要求的那个变量?因为流量计内部的变量太多,是否混淆了?注意在读取数据时,REG0001在命令字符串中表示为0000,而不是000L0001在命令字符串中表示读出REG0002的内容。B.对于累积量只能显示7位10进制数字,而通过MODBUS协议可以读出8位10进制数字。这种情况下,读出来的数值的后7位是一样的。(5)问:我的系统不能支持长整数以及实型变量格式,应该怎么办?答:需耍采用数值转换方式,或查找新驱动程序解决。(6)问:MODBUS有
4、测试程序吗?答:有!推荐使用MODSCAN这个软件,可以在网上搜到。这个程序很是方便,有助于方便检查读出的数据,理解各种类型数据的含义。(7)问:流量计是否具有模拟运行状态以方便测试,怎样设置?答:有!在Mil窗口屮输入0值即启动模拟运行状态。模拟运行状态下总是设置流速为1.23456781H/S,瞬时流量等于0,并且显示“R”状态。如果要求瞬时流量为设定值,则可以通过在M44窗口屮输入一个负的设定值实现。例如在M44窗口小输入-3600立方米/秒。瞬时流量就会显示为3600立方米/秒。这时所何累积器也会做相应的累积。因此就得到了变化的累积量输出。使用这个功能,能在不接传
5、感器的条件下,特别方便与联网软件的调试以及流量计功能的测试。(8)问:使用C时,浮点数存放顺序是怎样的?答:例如3F9E0651四个字节为1.2345678的TEEE754格式单精度浮点形式。在MODBUS数据流中的顺序是06513F9EO在X86计算机中使用C语言时,按照内存从低到高存放顺序51069E3F0§1.2MODBUS协议MODBUS协议的两种格式都能支持。通过在菜单窗口M63中,选择使川MODBUSRLR还是MODBUSASCTT格式。默认状态下支持MODBUS-ASCII格式。LRE-2000型系列超声波流量计/热能表只能支持MODBUS功能代码03和06
6、以及16三种功能代码,分别是读寄存器和写单一寄存器以及数据块写入功能。例如在RLR方式下读取1号设备的流速,即读寄存器5,6共2个寄存器,命令如下:01030004000285CA(十六进制数字)设备号功能起始寄存器寄存器数H效验和其中85CA是16进制数值,是按照CRC-16(B1SYNCH,多项式是x16+x15+x2+l屏蔽字为0A001H)循环冗余算法得到的。请参考MODBUS有关资料了解进一步的算法。返回的数据应该为(设定状态为模拟运行状态,流速=1.2345678n)/s):01030406513F9E3B32(
7、•六进制数字)设备号功能数据字节数数据=1.2
8、34567效验和其中3F9E0651四个字节即为1.2345678的1EEE754格式单精度浮点形式。再举例,读净累积流量,REG25,REG26两个寄存器命令如下:0103000400180002440C(十六进制数字)返回数据应该为(设净累积器=802609,其4字节16进制表示为000C3F31)0103043F31000CA7ED(十六进制数字)请注意上而例子中数据存放的顺序。对于使用C语言解释数值时,可以使用指针总接把所需的数据放入相应的变量地址屮即可,一般常用的存放顺序为低字节在前,例如上面的1.23456m/s例
此文档下载收益归作者所有