在本文中,我们将解释Modbus V2适配器脚本的基础知识,以及它与其他集成协议的不同之处。
注意:看到适配器脚本Overview-V2以全面了解V2适配器脚本。
指定版本
和所有其他V2适配器脚本一样,Modbus适配器脚本中的第一行应该指示您使用的是哪个版本的适配器脚本。要使用V2适配器脚本,请输入以下内容。
版本:2
注意:如果没有版本集,则假定为版本1。
基本设置
接下来,我们要声明一些Modbus特定的参数来控制如何轮询和解释数据。有几个选项可以选择包括:
- 的字节顺序
- 对于语序结构
- 地址空间
- 字符串编码
- scan-interval
这里我们会更详细地讲解这些是什么意思。
的字节顺序
- 要求:不
- 有效范围:[大,小]
- 默认值:大
所有Modbus寄存器都是16位的的字节顺序设置指定两个字节在返回值中的顺序。如果返回的16位值明显大于或小于预期值,请尝试切换字节顺序。
对于语序结构
- 要求:不
- 有效范围:[大,小]
- 默认值:大
所有的Modbus寄存器都是16位的,所以表示更大的值,如32位浮点数,需要在多个相邻寄存器中传输数据。的对于语序结构设置指示了返回两个(或多个)寄存器以表示较大值的顺序。如果正确读取16位值,但返回的32位值明显大于或小于预期值,请尝试切换词序。
地址空间
- 要求:不
- 有效范围:[1,2,3,4,混合]
- 默认值:混合
Modbus支持4种不同的读取数据的函数,并且有一个定义良好的约定,可以根据正在查找的地址的值来确定使用哪个函数。这个约定,由混合值地址空间选项如下:
- 地址00001 - 09999:从范围[0 - 9998]读取功能1(离散输出线圈)
- 地址10001 - 19999:用函数2(离散输入触点)从范围[0 - 9998]读取
- 地址30001 - 39999:用函数3(输出保持寄存器)从范围[0 - 9998]读取
- 地址40001 - 49999:用函数4(输入寄存器)从范围[0 - 9998]读取
Modbus中的每个读函数在[0 - 65535]范围内都有自己独立的地址空间,但是混合地址约定将每个函数的地址重新映射到更小的范围[0 - 9998]。
一些Modbus设备需要利用一个(或多个)可用读函数的完整地址空间,并通过指定地址空间作为其中一个功能号,地址将使用指定的功能原样传递给Modbus设备。
字符串编码
- 要求:不
- 有效范围:[ascii, utf8, ucs2, utf16le]
- 默认值:ascii
Modbus设备可以用不同的文本编码表示内存中的文本字符串,包括1字节、2字节和可变字节编码。设置字符串编码如果文本不是以ASCII格式传输的。
scan-interval
- 要求:不
- 有效范围:> 0
- 默认值:1.0
的scan-interval是适配器在扫描modbus设备以获取完整的线圈和寄存器列表之间等待的时间(以秒为单位)。如果扫描不能在间隔时间内完成,下一次扫描将被延迟到当前扫描完成。
这些字段都不是必需的,但是您需要了解它们的用途,以防在完整编写适配器脚本并尝试输出数据后出现连接问题。
下面是你的适配器脚本在这一步之后的样子:
版本:2
的字节顺序:大
对于语序结构:小
ascii字符串编码:
地址空间:混合
线圈
版本:2
的字节顺序:大
对于语序结构:小
ascii字符串编码:
地址空间:混合
线圈:
的线圈块是列出所有应该读取的modbus线圈的地方(函数1和2)。线圈可以用速记或手写格式指定。一个简化线圈的例子是:
线圈:
coil1: 1
coil2: 10007
每个线圈被列为一个标识符和一个线圈地址。地址(以及随后使用的线圈函数)的解释是由顶层定义的地址空间设置。标识符可以用作适配器脚本的其他部分中的数据源,例如变量或数据项.
版本:2
的字节顺序:大
对于语序结构:小
ascii字符串编码:
地址空间:混合
线圈:
coil1: 1
coil2: 10007
寄存器
版本:2
的字节顺序:大
对于语序结构:小
ascii字符串编码:
地址空间:混合
线圈:
coil1: 1
coil2: 10007
注册:
的寄存器在modbus中,寄存器是16位的数字,但可以用来表示不同大小的有符号和无符号整数、浮点值、字符串或打包位域。寄存器只有一个普通的表示法。
每个寄存器的键都是标识符,可以在适配器脚本的其他部分中用作数据源,例如变量或数据项.
可用的寄存器选项有:
- 地址
- 函数
- 类型
- 大小
- scan-interval
地址
- 要求:是的
- 有效范围:
- 混合模式:[30001 - 49999]
- 函数3,4:[0 - 65535]
一个显式的网络通讯协议地址必须为每个登记册提供。地址遵循规则概述在地址空间“基本设置”章节中的描述。属性指定读函数,可以进一步重写地址解释函数选择。
函数
- 要求:不
- 有效范围:[3,4,混合]
覆盖了全球地址空间设置此特定寄存器。如果全局地址空间设置对寄存器无效(函数1,2),则必须提供一个函数以避免错误。
类型
- 要求:是的
- 有效范围:[int16, uint16, int32, uint32, float32, string]
一个有效的类型必须为每个寄存器指定。
- 的
int16
和uint16
类型指的是有符号和无符号的16位整数,它们在modbus中消耗1个寄存器。 - 的
int32
,uint32
,float32
类型指的是有符号和无符号的32位整数和32位浮点值,它们在modbus中各消耗2个寄存器。 - 的
字符串
Type指存储在连续寄存器数组中的文本。
如果指定了字符串类型,还必须提供size选项。
大小
- 要求:
- 字符串类型:是的
- 其他类型:不
- 有效范围:[1 - 246]
一个大小当指定a字符串输入寄存器。尺寸载于字节,而不是寄存器或字符。所使用的寄存器数量或所表示的字符数量取决于全局字符串编码。对于ASCII文本,字符串的字节和字符是相同的。
scan-interval
- 要求:不
- 有效范围:> 0
覆盖了全球scan-interval设置此特定寄存器。这允许某些寄存器比其他寄存器读得更频繁或更少。
一旦你确定了寄存器要输入的指标,像这样将它添加到适配器脚本中:
版本:2
的字节顺序:大
对于语序结构:小
ascii字符串编码:
地址空间:混合
线圈:
coil1: 1
coil2: 10007
注册:
执行:
地址:30005
类型:float32
scan-interval: 2
下一个步骤
后寄存器节齐全,标准数据项节将像任何其他适配器脚本一样填充。以下是关于数据项的更多信息这个链接.
有问题吗?
接触support@machinemetrics.com额外的帮助。
评论
0评论
请登录留下评论。