libmodbus中文版手册

kostenlosKostenloses technisches Material

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

libmodbus中文版手册缩略图
🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.
本文目录
  1. 1. 特点
  2. 2. 描述
  3. 3. 环境(contexts)
  4. 4. 创建modbus RTU 环境

特点

libmodbus是一个快速、跨平台的Modbus库。

描述

libmodbus是一个与使用ModbusVereinbarungDie Ausrüstung进行DatenSenden Sie/Empfang的库。该库包含各种后端(backends)通过不同网络进行Kommunikation(例如,RTU模式下的Die Serie或TCP / IPv6中的Ethernet)。

http://www.modbus.orgWebseite提供了VereinbarungRegulierung der Dokumentehttp://www.modbus.org/specs.php。

libmodbus提供了较低Kommunikation层的抽象,并在所有支持的平台上提供相同的API。

本Dokumentation介绍了了libmodbus概念,介绍了libmodbus如何从在不同的硬件和平台中实现ModbusKommunikation,并为libmodbus库提供的函数提供了参考手册。

环境(contexts)

RTU后端(Fern entfernt终端单元)用于Serielle Kommunikation,并使用用于VereinbarungKommunikation的Daten的紧凑的Binärsystem表示形式。RTUDas Format遵循Befehl/Daten,和CRC(cyclic redundancy check循环冗余Prüfungen)作为Fehler.检查机制,以确保Daten的可靠性。Modbus RTU是可用于Modbus的am häufigsten verwendet的实现方式。Modbus RTU消息必须连续Senden Sie,不能有Charaktere间隔(摘自Wikipedia,Modbus, http://en.wikipedia.org/wiki/Modbus 截至2011Jahr3月13日,格林尼治Zeit20:51)。

Modbus RTU框架调用一个Von der Station,一个处理ModbusBitteDie Ausrüstung/Der Server,以及一个Anfrage senden的客户端(Hauptstation)。Kommunikation始终由Hauptstation服务端发起。

许多ModbusAusrüstung可以在同一个的物理链路上Verbindung在一起(总线结构),因此在Senden Sie消息之前,必须使用modbus_set_slave设置Von der Station(EmpfangAusrüstung )ID。如果您正在Betrieb一个Von der Station,则其Von der StationNr.将用于过滤Empfang的消息。

创建modbus RTU 环境

初试化RTU环境指针 modbus_t *modbus_new_rtu(const char *device, int baud, char parity, int data_bit, int stop_bit)

modbus_t *modbus_new_rtu(const char *device, int baud, char parity, int data_bit, int stop_bit);
 
 
//参考代码:
modbus_t *ctx;
 
ctx = modbus_new_rtu("/dev/ttyUSB0", 115200, 'N', 8, 1);
if (ctx == NULL) {
    fprintf(stderr, "Unable to create the libmodbus context\n");
    return -1;
}

这个 modbus_new_rtu()函数会生成并初始化一个modbus的结构体来在串行线路中使用RTU模式进行通讯。

device 指定OS处理的串行端口的Name,比如 /dev/ttyS0 or /dev/ttyUSB0,在windowsDas System上,如果COM编Nr.größer als9,必须要在COM前加上\.\ ,比如 \\.\COM10.,参照http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx

baud :指定Verbindung的Porter Rate,比如9600, 19200, 57600, 115200等。

parity :代表奇偶检验位,有如下值:

N 无奇Zufällige Prüfungen

E 偶数Prüfungen

O 奇数Prüfungen

data_bit :指定Daten的位数,允许值有: 5, 6, 7 ,8.

stop_bit :指定Stoppen Sie Platz位数,允许值有1和2.

返回:如果建立成功,modbus_new_rtu()函数将返回指向modbus_t结构的指针。 否则它将返回NULL并将errno设置为An invalid argument was given.。

设置Die Serie模式

获取gegenwärtigDie Serie模式 int modbus_rtu_get_serial_mode(modbus_t *ctx);

int modbus_rtu_get_serial_mode (modbus_t *ctx);

返回:如果成功, 函数应返回 MODBUS_RTU_RS232 或 MODBUS_RTU_RS485 。否则, 它将返回-1并将errno设为The current libmodbus backend is not RTU.

只用于RTU环境。

设置Die Serie模式 int modbus_rtu_set_serial_mode(modbus_t *ctx, int mode);

int modbus_rtu_set_serial_mode(modbus_t *ctx, int mode);

mode: 填入 MODBUS_RTU_RS232 或 MODBUS_RTU_RS485

返回值:如果成功, 函数应返回0。否则, 它将返回-1 并将 errno 设置为下面定义的值之一。

EINVAL The current libmodbus backend is not RTU.

ENOTSUP The function is not supported on your platform.。

如果对 ioctl () 的调用失败, 将返回 ioctl 的Fehler.代码。

在 RTU环境下 中获取gegenwärtigRTS模式 int modbus_rtu_get_rts(modbus_t *ctx)(3.1.4版本补充)

int modbus_rtu_get_rts (modbus_t *ctx);

可以获得在gegenwärtigctx环境下Anfrage senden的的模式。

返回值:

   MODBUS_RTU_RTS_NONE

   MODBUS_RTU_RTS_UP

   MODBUS_RTU_RTS_DOWN

   -1,即调用失败,并设置EINVAL为The libmodbus backend is not RTU.

在RTU环境下获取设置RTS模式 int modbus_rtu_set_rts(modbus_t *ctx, int mode)(3.1.4版本补充)

int modbus_rtu_set_rts(modbus_t *ctx, int mode);
 
//例子:启动有正极性的RTS模式
modbus_t *ctx;
uint16_t tab_reg[10];
 
ctx = modbus_new_rtu("/dev/ttyS0", 115200, 'N', 8, 1);
modbus_set_slave(ctx, 1);
modbus_rtu_set_serial_mode(ctx, MODBUS_RTU_RS485);
modbus_rtu_set_rts(ctx, MODBUS_RTU_RTS_UP);
 
if (modbus_connect(ctx) == -1) {
    fprintf(stderr, "Connexion failed: %s\n", modbus_strerror(errno));
    modbus_free(ctx);
    return -1;
}
 
rc = modbus_read_registers(ctx, 0, 7, tab_reg);
if (rc == -1) {
    fprintf(stderr, "%s\n", modbus_strerror(errno));
    return -1;
}
 
modbus_close(ctx);
modbus_free(ctx);

设置Anfrage senden模式用于在RS485串行总线上进行通讯,默认模式为MODBUS_RTU_RTS_NONE,在把Daten写入线路之前不会有信Nr.发出。

要aktiviert.RTS 模式, 必须使用 MODBUS_RTU_RTS_UP或MODBUS_RTU_RTS_DOWN, 这些模式aktiviert. RTS 模式并同时设置极性。使用MODBUS_RTU_RTS_UP时, 将RTS 标志位置为使能并进行 ioctl 调用, 然后在1毫秒的延迟后在总线上写入Daten, 然后将 RTS 标志位置为非使能进行另一个 ioctl 调用, 并再次延迟1毫秒。MODBUS_RTU_RTS_DOWN模式与之类似, 但使用相反的 RTS 标志位。

如果成功, 函数应返回0。否则, 它将返回-1 并将 errno 设置为The libmodbus backend isn’t RTU or the mode given in argument is invalid.。

Custom definiertRTS实现 int modbus_rtu_set_custom_rts(modbus_t *ctx, void (set_rts) (modbus_t ctx, int on))(3.1.4版本补充)

int modbus_rtu_set_custom_rts(modbus_t *ctx, void (set_rts) (modbus_t ctx, int on));

设置传输前后设置RST PIN要调用的Custom definiert函数,默认情况下,默认情况下,设置为使用IOCTL调用WechselnRTS PIN的内部函数。

注意,该函数遵循RTS模式,必须使用值MODBUS_RTU_RTS_UP或MODBUS_RTU_RTS_DOWN来调用该函数。

返回:如果成功, modbus_rtu_set_custom_rts ()函数应返回0。否则, 它将返回-1 并将 errno 设置为The libmodbus backend is not RTU.

Techniken术语(共 5 个)—— Klick auf展开
Modbus RTU基于串行链路的ModbusVereinbarung,使用BinärsystemCodierung和CRC-Test
RS485工业常用的schlechtUnterteilung串行Kommunikation标准,支持多点Kommunikation
RS232点对点串行Kommunikation标准,常用于短距离AusrüstungKommunikation
Porter Rate串行Kommunikation每秒传输符Nr.数,Modbus RTU常用9600/19200
Die SerieBerechnung机与外部Ausrüstung进行串行Kommunikation的物理Schnittstelle
来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung Debugging Software und Werkzeuge 字数 3669 字 · 阅读约 10 Unterteilung钟 更新 2026-07-01 永久链接 https://www.modbus.cn/6789.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
Relevante Etiketten
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.