在本文中,我们将解释Modbus V2适配器脚本的基础知识,以及它与其他集成协议的不同之处。
注意:看到适配器脚本概述-v2整体看看V2适配器脚本。
指定版本
与所有其他v2适配器脚本一样,Modbus适配器脚本中的第一行应指示您正在使用的适配器脚本的哪个版本。要使用V2适配器脚本,请输入以下内容。
版本:2
注意:如果没有版本集,则假定为版本1。
基本设置
接下来,我们希望声明某些Modbus特定参数来控制数据如何被轮询和解释。有一些选择可以选择包括:
- 的字节顺序
- 词序
- 地址空间
- 字符串编码
- 扫描间隔
在这里,我们将更详细地详细介绍这些是什么和卑鄙的。
的字节顺序
- 要求:不
- 有效范围:[大,小]
- 默认值:大
所有Modbus寄存器都是16位的的字节顺序设置决定了返回值中的两个字节的排序。如果16位值返回明显大或小于预期,则尝试切换字节顺序。
词序
- 要求:不
- 有效范围:[大,小]
- 默认值:大
所有Modbus寄存器都是16位,因此表示诸如32位浮点的较大值需要在多个相邻寄存器中发送数据。的词序设置指示了返回两个(或多个)寄存器以表示较大值的顺序。如果正确读取16位值,但返回的32位值明显大于或小于预期值,请尝试切换词序。
地址空间
- 要求:不
- 有效范围:[1,2,3,4,混合]
- 默认值:混合
Modbus支持4种不同的读取数据的函数,并且有一个定义良好的约定,可以根据正在查找的地址的值来确定使用哪个函数。这个约定,由混合值地址空间选项如下:
- 地址00001 - 09999:从范围[0 - 9998]读取功能1(离散输出线圈)
- 地址10001 - 19999:从范围[0 - 9998]读取功能2(离散输入触点)
- 地址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格式传输的。
扫描间隔
- 要求:不
- 有效范围:> 0
- 默认值:1.0
的扫描间隔是适配器在扫描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线圈(功能3和4)。Modbus中的寄存器是16位数字,但可用于表示不同大小的符号和无符号整数,浮点值,字符串或打包位字段。寄存器只有一个龙手表示。
每个寄存器的键是标识符,可用作适配器脚本的其他部分中的数据源,例如变量要么数据项.
可用的寄存器选项有:
- 地址
- fun
- 类型
- 大小
- 扫描间隔
地址
- 必填:是的
- 有效范围:
- 混合模式:[30001 - 49999]
- 函数3,4:[0 - 65535]
明确的Modbus.地址必须为每个登记册提供。地址遵循规则概述在地址空间“基本设置”部分中的说明。可以通过指定读取功能来进一步覆盖地址的解释fun选项。
fun
- 要求:不
- 有效范围:[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文本,字符串的字节和字符将是相同的。
扫描间隔
- 要求:不
- 有效范围:> 0
覆盖了全球扫描间隔设置此特定寄存器。这允许某些寄存器比其他寄存器读得更频繁或更少。
一旦确定了寄存器将要输入的指标,将其添加到如下所示的适配器脚本:
版本:2
的字节顺序:大
对于语序结构:小
ascii字符串编码:
地址空间:混合
线圈:
coil1: 1
coil2: 10007
注册:
执行:
地址:30005
类型:float32
scan-interval: 2
下一个步骤
后寄存器节齐全,标准数据项节将像任何其他适配器脚本一样填充。以下是关于数据项的更多信息这个链接.
有问题吗?
接触support@machinemetrics.com.额外的帮助。
评论
0评论
请登录留下评论。