PLCなどでIOデータをログに取って解析するとき、16進数から10進数や2進数に変換したいときがあります。そんなときの変換・解析方法について紹介します。
例えば1ByteデータがD2と16進数で表示されているときに、以下のように変換・抽出しました。
- 10進数へ変換
- 2進数へ変換
- 各ビットの抽出
- 再度結合
関数で表すとこのようになります。
- 16進数→10進数:HEX2DEC関数
- 16進数→2進数:HEX2BIN関数
- 抽出:RIGHT、LEFT、MID関数
- 連結:CONCATENATE関数
BIN関数で2進数に変換したので、*bitは右から数えたときの順番になります。
連結するときは大きい方の4bitから書くので注意が必要です。
アナログデータなどでそのまま読みたい場合は10進数に変換して見やすくなりますし、IOなどのデジタルデータを扱う時は2進数に変えてビット単位で見た方が分かりやすくなります。
Wordデータを扱う場合も同様の考え方でデータを分解・解析できます。
最初は8bitの先頭に1が入る時で説明をしましたが、0が来る場合には注意が必要です。
例えば、6Bのようなデータを同様に分解するとこのようになります。
赤字で書いている部分が誤っている箇所です。
8bit目が0ですが、通常Excelでは上位側の0は表示されないのでその分ずれてしまいます。
扱う単位が決まっているため、TEXT関数を使って毎回8桁表示させるようにすることで解決できます。
この結果がこちらになります。
これで先頭に0が来ても正しく値を抽出することができます。
サンプルはこちら
【Excel】 サンプル公開
コメント