使用FbusIO_SendMsg
若要使用FbusIO_SendMsg,請安裝Fieldbus主機板。 FbusIO_SendMsg可用於傳送explicit的訊息至裝置,並傳回回應。此命令根據通訊協定操作。
語法如下:
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