libmodbusライブラリModbus単体テスト用ヘッダファイル

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

libmodbusライブラリModbus単体テスト用ヘッダファイル

ヘッダファイルHeader fileは、宣言または定義を含むテキストファイルの一種であり、通常はプログラムに外部コードを取り込むために使用されます。CおよびC++では、ヘッダファイルには通常、関数、変数、定数の宣言、型定義、マクロ定義などの情報が含まれています。ヘッダファイルの主な役割は、ソースコードファイルが他のモジュールやライブラリの関数、変数、定数にアクセスできるようにするインターフェイスと宣言を提供することであり、コードのモジュール化と整理を容易にする。

このコードはModbus単体テスト用のヘッダファイルで、テスト中に簡単に使用できる定数と構成が含まれています。説明させてください

/* 著作権情報 */
#ifn_UNIT__H_
#ine_UNIT__H_

/* config.acで定義された定数 */
#define HAVE_INTTYPES_H @ HAVE_INTTYPES_H @
#define HAVE_STDINT_H @ HAVE_STDINT_H @

//HAVE_INTTYPES_Hが定義されている場合、inttypes.hライブラリが含まれます。
#ifdef HAVE_INTTYPES_H
#include inttypes.h>
#endif
//HAVE_STDINT_Hが定義されている場合、コンパイラーが含めるstdint.hライブラリを決定します。
#ifdef HAVE_STDINT_H
#ifn_MSC_VER
# include stdint.h>
# elseさん
# include stdint。Hは"
# endif
#endif

#define SERVER_ID         17 //通常のサーバID
#define INVALID_SERVER_ID 18 //エラー処理をトリガーする不正なサーバー ID

// Modbusアドレスと数の定義
const uint16_t UT_BITS_ADDRESS = 0 x 130; //コイルアドレス
const uint16_t UT__NB = 0x25;        //コイルのvalue
const uint8_t UT__TAB[] = { 0xCD 0x6B 0xB2 0x0E 0x1B}; //プリセットコイル

const uint 16_t UT_INPT_BITS_AD DRESS = 0 x 1 C 4; //入力コイルアドレス
const uint16_t UT_INPT_BITS_NB = 0x16;        //入力コイル数
const uint8_t UT___TAB[] = { 0xAC 0xDB 0x35}; //ステータスを入力

const uint 16_t UT_REGISTERS_AD DRESS = 0 x 160; //レジスタアドレス
const uint 16_t UT_REGISTERS_NB = 0 x 3;         //レジスタの数
const uint 16_t UT_REGISTERS_NB_MAX = 0 x 20;    //レジスタの最大数
const uint16_t UT_ISTERS_TAB[] = {0x022B 0x0001 0x0064}; //レジスタ値

//単体テストで例外や特殊な振る舞いをトリガーするための特別なアドレス
const uint16_t UT_ISTERS_ADDRESS_SPECIAL = 0x170               //特別なレジスタアドレス
const uint 16_t UT_REGISTERS_AD DRESS_INVALID_TID_OR_SLAVE = 0 x 171; //無効なTIDまたはスレーブアドレス
const uint16_t UT_REGISTERS_ADDRESS_SLEEP_500_MS = 0 x172;          // 500ミリ秒のスリープアドレス
const uint16_t UT_REGISTERS_ADDRESS_BYTE_SLEEP_5_MS = 0 x173;       // 5 msバイトのスリープアドレス

//エラー応答テスト用の特別なレジスタ数
const uint 16_t UT_REGISTERS_NB_SPECIAL = 0 x 2; // 特殊レジスタ数

const uint 16_t UT_INPT_REGISTERS_AD DRESS = 0 x 108; //入力レジスタアドレス
const uint 16_t UT_INPT_REGISTERS_NB = 0 x 1;         //入力レジスタの数
const uint 16_t UT_INPT_REGISTERS_TAB [] = {0 x 000A }; //入力レジスタ値

const float UT_REAL = 123456.0 0; //浮動小数点数テスト値

//Modbusプロトコルでの浮動小数点数のアクセステストのためのサイズサイド変換配列
const uint8_t UT_IREAL_ABCD_SET[] = {0x47 0xF1 0x20 0x00};   // ABCDフォーマット
const uint16_t UT_IREAL_ABCD_GET[] = {0x47F1 0x2000};          // ABCD形式で取得
const uint8_t UT_IREAL_BA_SET[] = {0x00 0x20 0xF1 0x47};   // DCBA形式
const uint16_t UT_IREAL_DCBA_GET [] = {0x0020 0xF147};          // DCBA形式の取得
const uint8_t UT_IREAL_BADC_SET[] = {0xF1 0x47 0x00 0x20};   // BADCフォーマット設定
const uint16_t UT_IREAL_BADC_GET[] = {0xF147 0x0020};          // BADCフォーマット取得
const uint8_t UT_IREAL_CDAB_SET[] = {0x20 0x00 0x47 0xF1};   CDABフォーマット
const uint16_t UT_IREAL_CDAB_GET[] = {0x2000 0x47F1};          // CDAB形式で取得

#endif /*_UNIT_TEST_H_*

このヘッダファイルには主に以下が含まれます。

  • 定数の定義
  • SERVER_IDそして、INVALID_SERVER_ID正常なサーバIDと不正なサーバIDがそれぞれ定義されている.
  • Modbusアドレスと数の定義
  • コイルアドレス、コイル数、コイルデータセット、入力コイルアドレス、入力コイル数、入力データセット、レジスタアドレス、レジスタ数、最大レジスタ数、レジスタ値などがされる。
  • 特別住所の定義
  • 無効なTIDやスレーブアドレス、スリープアドレスなど、ユニットテストで例外や特殊な動作をトリガするために使用されるレジスタアドレス。
  • 特殊なレジスタ数の定義
  • エラー応答テストに使用する特殊なレジスタ数。
  • 浮動小数点数テスト値の定義
  • 浮動小数点数テスト値が定義されます。
  • サイズ·エンド変換配列定義{{さいずへんかんはいれつていぎ}}
  • Modbusプロトコルでの浮動小数点数のアクセステストのための異なるフォーマットの配列定義。

これらの定義は、Modbusプロトコル関連の単体テストをより便利かつ体系的に実行する。

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.