FbusIO_SendMsgの使用

FbusIO_SendMsgを使用するには、フィールドバスマスター基板を実装してください。 FbusIO_SendMsgは、Explicitメッセージをデバイスに送ったり、その答えを取得したりするときに使われます。このコマンドは、プロトコルに基づいて機能します。

FbusIO_SendMsgの書式:

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

  • 引数の説明

    この関数は2つの配列を引数に取ります。sendData配列は、デバイスに送られるByte型データを含みます。この配列は、送られるバイト数と同じ次元でなければなりません。Byte型データを送信しない場合は、パラメーターを"0"にしてください。recvData配列は、デバイスからの返答を受け取るByte型変数です。この配列は、受信したバイト数に応じた次元数に自動的に変換されます。

    DeviceNetの場合、以下の例のように、コマンド, クラス, インスタンス, アトリビュートを含むsendDeta 配列を初期化してください。使用可能な値については、デバイスに添付されたマニュアルを参照してください。DeviceNetメッセージでは、msgParamパラメーターは常に"0"になります。

DeviceNet, Etheret/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