ADDM 功能块可将显示为字符串的目标地址转换为 ADDRESS 结构。您可以将 ADDRESS 结构用作通讯功能块中的条目。
 
  
| 输入/输出 | 类型 | 注释 | 
|---|---|---|
| AddrTable | ADDRESS | 这是由功能块填充的 ADDRESS 结构。 | 
| 输入 | 类型 | 注释 | 
|---|---|---|
| Execute | BOOL | 在上升沿执行功能。 | 
| Addr | STRING | 要转换为 ADDRESS 类型的 STRING 类地址(参见下面的详细信息)。 | 
| 输出 | 类型 | 注释 | 
|---|---|---|
| Done | BOOL | 功能成功完成后,Done 设置为 TRUE。 注意: 当使用 Abort 输入中止操作后,Done 不设置为 1(仅限 Aborted)。 | 
| Error | BOOL | 当功能由于检测到错误而停止时,Error 设置为 TRUE。检测到错误时,CommError 和 OperError 包含有关检测到的错误的信息。 | 
| CommError | BYTE | CommError 包含通讯错误代码。 | 
注意: Execute 输入上的上升沿执行转换,并返回 AddrTable 的立即更新。但是,当检测到错误时(即当 Addr 字符串不正确时),AddrTable 保持上一个值。
功能块需要上升沿才能进行初始化。功能块需要先看到 Execute 输入为 FALSE,然后才能检测后续的上升沿。
| 
 | 
| 意外的设备操作 | 
| 请务必首先通过将功能块的 Execute 输入设为 FALSE 来调用功能块,这样它便可以检测后续的上升沿。 | 
| 不遵循上述说明可能导致人员伤亡或设备损坏。 | 
对于 ASCII 寻址,只请求通讯端口号:
'<communication port number>'
例如,要在串行线路 2 上发送用户定义的消息,请使用字符串 '2'。
下表定义了 ASCII 地址格式的 ADDM 输出中的字段:
| 字段 | 类型 | 值 | 示例 | 
|---|---|---|---|
| _Type | BYTE | 保留 | 未使用 | 
| _CliID | BYTE | 保留 | 未使用 | 
| Rack | BYTE | 机架编号(始终为 0) | 0 | 
| Module | BYTE | 模块编号(始终为 0) | 0 | 
| Link | <communication port number> | 2 | |
| _ProtId | BYTE | 未使用 | 未使用 | 
| AddrLen | BYTE | 0 | 0 | 
| UnitId | BYTE | 未使用 | 未使用 | 
| AddrExt | ADDR_EXT | 未使用 | 未使用 | 
Modbus TCP 标准从站的地址
对于 Modbus TCP 标准从站地址格式,会请求通讯端口号(对于嵌入式以太网端口为 3)和目标 IP 地址:
'<communication port number>{<IP address>}'
注意: Modbus TCP 标准从站使用 Modbus 地址 255(UnitId 缺省值)。但是,Modbus TCP 设备的值可能不同(例如,TeSys 具有 Modbus 地址 1)。在这种情况下,请添加 UnitId 值:
'<communication port number>{<IP address>}<UnitId>'
默认情况下使用 TCP 端口 502。也可以使用非标准端口,方法是将请求的端口号添加到 IP 地址:
'<communication port number>{<IP address>:<port>}'
例如,要使用标准 TCP 端口 502 在 Modbus TCP 从站 IP 地址 192.168.1.2 上发送消息,请使用以下字符串:'3{192.168.1.2}'
ADDM 功能使用以下这些值填充 AddrTable 输入/输出:
| 字段 | 类型 | 值 | 示例 | 
|---|---|---|---|
| _Type | BYTE | 保留 | 未使用 | 
| _CliID | BYTE | 保留 | 未使用 | 
| Rack | BYTE | 机架编号 | 0 | 
| Module | BYTE | 模块编号 | 0 | 
| Link | <communication port number> | 3 | |
| _ProtId | BYTE | 0(对于 Modbus) | 0 | 
| AddrLen | BYTE | UnitID + AdrExt 长度(以字节为单位) | 7 | 
| UnitId | BYTE | Modbus 地址(默认为 255) | 255 | 
| AddrExt | TCP_ADDR_EXT | A | 192 | 
| B | 168 | ||
| C | 1 | ||
| D | 2 | ||
| <端口>(默认值 = 502) | 502 | 
通过以太网/串行线路网关对 Modbus 串行从站进行寻址
也可以通过以太网/串行线路网关对 Modbus 从站进行寻址:
 
  
请求包括通讯端口号、网关 IP 地址(包括或不包括 TCP 端口)以及 Modbus 串行从站地址(UnitId 参数):
'<communication port number>{<IP address>}<slave address>'
例如,要使用标准 TCP 端口 502 通过以太网/串行线路网关(IP 地址为 192.168.1.2)在 Modbus 串行从站地址 5 上发送消息,请使用以下字符串:'3{192.168.1.2}5'
ADDM 功能使用以下这些值填充 AddrTable 输入/输出:
| 字段 | 大小 | 值 | 示例 | 
|---|---|---|---|
| _Type | BYTE | 保留 | 未使用 | 
| _CliID | BYTE | 保留 | 未使用 | 
| Rack | BYTE | 机架编号 | 0 | 
| Module | BYTE | 模块编号 | 0 | 
| Link | <communication port number> | 3 | |
| _ProtId | BYTE | 0(对于 Modbus) | 0 | 
| AddrLen | BYTE | UnitID + AdrExt 长度(以字节为单位) | 7 | 
| UnitId | BYTE | <从站地址> | 5 | 
| AddrExt | TCP_ADDR_EXT | A | 192 | 
| B | 168 | ||
| C | 1 | ||
| D | 2 | ||
| TCP 端口号(默认 = 502) | 502 | 
这个示例显示结合 SINGLE_WRITE 功能块执行 ADDM 功能块。ADDM 功能块将给定的 STRING '1.8’ 转换成 ADDRESS 类型的变量 stSlave8OnSL1。如果转换成功,便会触发后续功能块 SINGLE_WRITE 的输入 Execute。
