组态王中Modbus字节顺序的调整

组态王通过modbus协议读取设备的浮点数和Long型的整数,有时候会出现数值很大,或者为0,还有字符串显示不对的情况,这时候就需要做字节顺序转换。本文重点介绍三种调整Modbus字节顺序的方法。

1.建Swap寄存器

利用给寄存器swapF0等特殊寄存器赋值来改变读取数据的高低字节排序,以浮点型数据为例,在数据词典中定义swapF变量,通道号为0,数据类型BYTE,只写,采集频率为0,如图1所示。

在这里插入图片描述

然后将swapF0在画面上输出,对其依次赋值0、1、2、3,观察浮点型变量的值,直到浮点型数据的值显示正确,记录swapF0最终的值。具体过程如图2、图3、如图4所示。

在这里插入图片描述
在这里插入图片描述

由图4可见,当 swapF0等于1时,浮点数显示正常,然后在应用程序命令语言的启动时把swapF0的赋值脚本写上,即swapF0=1,如图5所示。
在这里插入图片描述
需要注意的是,swapF0在数据词典中定义的初始值与最终调试所赋予的值不能一样,比如本例中swapF0=1,那么swapF0变量的初始值就不能为1,可以设为其他值,在程序启动时,swapF0的值需要有一个变化的过程。按照这种方法,同样可以调整字符串型、长整型、CRC校验、长BCD型字节顺序,其变量定义的如图6所示。
在这里插入图片描述

2.修改安装路径-Driver文件夹中modbusmaster.ini文件

打开组态王的安装路径,找到modbusmaster.ini文件,如图7所示。
在这里插入图片描述

在文档的最下方,找到[Swap],通过对long、float、longbcd、string赋值,就可以改变其对应的字节顺序,如图8所示。

在这里插入图片描述
注:此种方式修改会影响工程中所有的modbus设备,建议工程中只有一个modbus设备时使用。

3.设备地址后边加上Swap功能设定

定义设备时,在设备地址处设置该设备中某种数据类型的字节排列顺序。
串口连接方式(Rtu和ASCII):
Address[:Delay: BeforeDelay][|SwapF|SwapL|SwapC]
TCP连接方式:
IP[:Port] Address[/TimeOut] [|SwapF|SwapL|SwapC]

Address 0-255 设备地址
Delay 0-60000 发送每条命令帧后的延迟时间(毫秒)
BeforeDelay 0-60000 发送每条命令帧前的延迟时间(毫秒)
Port 0-65535 设备IP地址端口,(不写时默认为502)
TimeOut 0-65535 网络超时(不写时默认3秒)

SwapF 0-3 浮点数的字节顺序,默认为配置文件中所写
SwapL 0-3 长征性的字节顺序,默认为配置文件中所写
SwapC 0-1 CRC校验的字节顺序,默认为配置文件中所写

如:1:500:500|1|0|0
如:192.168.21.20:502 1/50|1|0|0
注:如果在设备定义中对Swap系列功能设定,需要同时设定3个Swap顺序,且SwapF、SwapL、SwapC次序不可更改。

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逍遥子@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值