使用FbusIO_SendMsg

若要使用FbusIO_SendMsg,需安装现场总线主板。 FbusIO_SendMsg用于向设备发送Explicit报文并返回回答。该指令根据协议运行。

FbusIO_SendMsg其语法为:

FbusIO_SendMsg bus, device, msgParam, sendBytes(), recvBytes()

  • 参数描述

    共有两个阵列传至参数。sendData阵列包括以字节形式发送至设备的数据。必须将该阵列的尺寸标定为正确的待发送字节数。如果没有需要发送的字节,则必须对该参数置“0”。recvData 阵列会以字节形式返回响应。该阵列会自动重新将尺寸标定为接收到的字节数。

    对于DeviceNet,需要用下例所示的指令、等级、实例和属性初始化sendData阵列。有关可使用的数值,请查阅设备随附的文件。对于DeviceNet消息,msgParam参数值始终为“0”。

以下为DeviceNet和EtherNet/IP示例:

下例需要设备信息MacID = 1。

' Send explicit message to the device
Byte sendData(5)
Byte recvData(10)
Integer i
sendData(0) = 14 ' Command (GetAttributeSingle)
sendData(1) = 1  ' Class
sendData(3) = 1  ' Instanc
sendData(5) = 7  ' Attribute
FbusIO_SendMsg 16, 1, 0, sendData(), recvData()
For i = 0 To UBound(recvData)
   Print recvData(i)
Next i

对于PROFIBUS DP,需要在msgParam参数中指定服务编号。有关所支持的服务,请查阅设备随附的文件。一些服务需要“0”发送字节。在这种情况下,对sendBytes参数置“0”。

以下为PROFIBUS DP示例:

' Send message to Profibus device
Byte recvData(10)
Integer i
' Service 56 - read all inputs
' sendBytes = 0
FbusIO_SendMsg 1, 1, 56, 0, recvData()
For i = 0 To UBound(recvData)
  Print recvData(i)
Next i