16進形式で記述されたModbusレジスタを解釈する

更新しました Apr 3, 2023

使用製品

ソフトウェア

  • Lookout Server
  • Lookout Client
  • LabVIEW Datalogging and Supervisory Control Module

問題

Modbusプロトコルで通信するデバイスがあります。デバイスのマニュアルでは、16進形式のレジスタが使用されています。LabVIEWとLookoutはレジスタアドレスに10進形式を使用します。単純に16進数から10進数に変換しようとしましたが、うまくいかないようです。

解決策

Modbusプロトコルアドレッシングスキームには、さまざまな範囲と生アドレスが含まれています。たとえば、30000の範囲と40000の範囲があります。各範囲には、それらの中に生アドレスと異なるデータ型があります(いくつかはブール値ですが、他は16ビット数です)。16進数のレジスタ値を10進数に変換するには、アドレスがどの範囲にあるかをまず調べなければなりません。次に、16進数を10進数に変換し、範囲で加算します。 G7 Yasawa Driveの例を参照してください。

YasawaのG7 Driveのマニュアルでは、構成レジスタに05Ahアドレスを使用すると記載されています。G7 Driveは、40000の範囲(読み取り/書き込み16ビット)を使用することが判明しました。16進数(05A)を90に変換します。範囲と組み合わせると40090のアドレスが得られます。このレジスタからの書き込みまたは読み取りは、Modbus経由でG7の構成レジスタを制御します。