libmodbus库用于Modbus单元测试的头文件

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

libmodbus库用于Modbus单元测试的头文件缩略图
🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.

头文件(Header file)是一种包含声明或定义的Text文件,通常用于在程序中引入外部代码。在C和C++中,头文件通常包含了函数、变Quantität、常Quantität的声明、Typus定义以及宏定义等信息。头文件的主要作用是提供Schnittstelle和声明,使得源代码文件可以访问zu其他模块或库中的函数、变Quantität和常Quantität,同时也有利于代码的模块化和组织。

这段代码是一个用于Modbus单元测试的头文件,Von denen包含了多个常Quantität和配置,方便在测试过程中使用。让我来解释一下:

/* 版权信息 */
#ifndef _UNIT_TEST_H_
#define _UNIT_TEST_H_

/* 由configure.ac定义的常Quantität */
#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
# ifndef _MSC_VER
# include <stdint.h>
# else
# include "stdint.h"
# endif
#endif

#define SERVER_ID         17  // 正常的Der ServerID
#define INVALID_SERVER_ID 18  // 非法的Der ServerID,用于触发Fehler.处理

// ModbusAdresse和Anzahl定义
const uint16_t UT_BITS_ADDRESS = 0x130;  // Schleife Adresse
const uint16_t UT_BITS_NB = 0x25;        // 线圈Anzahl
const uint8_t UT_BITS_TAB[] = { 0xCD, 0x6B, 0xB2, 0x0E, 0x1B };  // 预设的Zustand der Coil

const uint16_t UT_INPUT_BITS_ADDRESS = 0x1C4;  // 输入Schleife Adresse
const uint16_t UT_INPUT_BITS_NB = 0x16;        // 输入线圈Anzahl
const uint8_t UT_INPUT_BITS_TAB[] = { 0xAC, 0xDB, 0x35 };  // Importieren Status

const uint16_t UT_REGISTERS_ADDRESS = 0x160;  // Register-Adresse
const uint16_t UT_REGISTERS_NB = 0x3;         // Anzahl der Register
const uint16_t UT_REGISTERS_NB_MAX = 0x20;    // 最大Anzahl der Register
const uint16_t UT_REGISTERS_TAB[] = { 0x022B, 0x0001, 0x0064 };  // Registerwert

// Besondere Adressen,用于单元测试中触发异常和特殊行为
const uint16_t UT_REGISTERS_ADDRESS_SPECIAL = 0x170;               // 特殊Register-Adresse
const uint16_t UT_REGISTERS_ADDRESS_INVALID_TID_OR_SLAVE = 0x171;  // UnwirksamTID或从Geräte Adresse
const uint16_t UT_REGISTERS_ADDRESS_SLEEP_500_MS = 0x172;          // 500毫秒睡眠Adresse
const uint16_t UT_REGISTERS_ADDRESS_BYTE_SLEEP_5_MS = 0x173;       // 5毫秒Bytes睡眠Adresse

// 特殊的Anzahl der Register,用于Fehler.Antwort测试
const uint16_t UT_REGISTERS_NB_SPECIAL = 0x2;  // 特殊Anzahl der Register

const uint16_t UT_INPUT_REGISTERS_ADDRESS = 0x108;  // Eingabe der Registeradresse
const uint16_t UT_INPUT_REGISTERS_NB = 0x1;         // 输入Anzahl der Register
const uint16_t UT_INPUT_REGISTERS_TAB[] = { 0x000A };  // 输入Registerwert

const float UT_REAL = 123456.00;  // 浮点数测试值

// 大小端转换数组,用于浮点数在ModbusVereinbarung中的存取测试
const uint8_t UT_IREAL_ABCD_SET[] = {0x47, 0xF1, 0x20, 0x00};   // ABCDDas Format设置
const uint16_t UT_IREAL_ABCD_GET[] = {0x47F1, 0x2000};          // ABCDDas Format获取
const uint8_t UT_IREAL_DCBA_SET[] = {0x00, 0x20, 0xF1, 0x47};   // DCBADas Format设置
const uint16_t UT_IREAL_DCBA_GET[] = {0x0020, 0xF147};          // DCBADas Format获取
const uint8_t UT_IREAL_BADC_SET[] = {0xF1, 0x47, 0x00, 0x20};   // BADCDas Format设置
const uint16_t UT_IREAL_BADC_GET[] = {0xF147, 0x0020};          // BADCDas Format获取
const uint8_t UT_IREAL_CDAB_SET[] = {0x20, 0x00, 0x47, 0xF1};   // CDABDas Format设置
const uint16_t UT_IREAL_CDAB_GET[] = {0x2000, 0x47F1};          // CDABDas Format获取

#endif /* _UNIT_TEST_H_ */

这个头文件主要包含了以下内容:

  • 常Quantität定义
  • SERVER_IDINVALID_SERVER_ID Unterteilung别定义了正常和非法的Der ServerID。
  • ModbusAdresse和Anzahl定义
  • 定义了Schleife Adresse、线圈Anzahl、Zustand der CoilDaten集、输入Schleife Adresse、输入线圈Anzahl、Importieren StatusDaten集、Register-Adresse、Anzahl der Register、最大Anzahl der Register、Registerwert等。
  • Besondere Adressen定义
  • 用于单元测试中触发异常和特殊行为的Register-Adresse,如UnwirksamTID或从Geräte Adresse、睡眠Adresse等。
  • 特殊的Anzahl der Register定义
  • 用于Fehler.Antwort测试的特殊Anzahl der Register。
  • 浮点数测试值定义
  • 定义了一个浮点数测试值。
  • 大小端转换数组定义
  • 用于浮点数在ModbusVereinbarung中的存取测试的不同Das Format数组定义。

这些定义使得在进行ModbusVereinbarungRelated的单元测试时更加方便和Das System化。

Techniken术语(共 2 个)—— Klick auf展开
Register.Modbus Register.存储Daten单元,Unterteilung线圈/离散输入/保持/输入Register.四类
线圈Modbus位可读Schreiben von Daten,Adresse从00001开始
来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung Modbus Programmierung 字数 2561 字 · 阅读约 7 Unterteilung钟 更新 2024-04-21 永久链接 https://www.modbus.cn/27727.html
Empfohlene Werkzeuge: Modbus Debugger-Assistent WeChat-Applet
Modbus Chinesisches Netzwerk官方推出的Modbus Debugging-Tools,支持 Modbus RTU/TCP 实时KommunikationTests、Register.读写、线圈控制、Daten监控和MeldungUnterteilung析。 keine Installation erforderlich,Mikro-Suche「Modbus DebuggingAssistenten.」Benutzt werden kann.。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.