实现Industrielle EbeneModbus TCPDer Server:使用C语言和libmodbus的实践Unterricht

kostenlosKostenloses technisches Material

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

实现Industrielle EbeneModbus TCPDer Server:使用C语言和libmodbus的实践Unterricht缩略图
🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.

在Industrielle Automatisierung领域,ModbusVereinbarung因其简洁性和广泛支持而常被用于Ausrüstung间Kommunikation。本文介绍Wie benutztC语言和libmodbus库来创建一个Funktion齐全的Modbus TCPDer Server,实现Ausrüstung间的WirksamKommunikation。

vollständig代码:

您需要付费解锁才能Überprüfengegenwärtig内容

实现Industrielle EbeneModbus TCPDer Server:使用C语言和libmodbus的实践Unterricht插图星耀Mitgliedern¥2.39
实现Industrielle EbeneModbus TCPDer Server:使用C语言和libmodbus的实践Unterricht插图1璀璨Mitgliedern¥1.79
曜钻Mitgliedernkostenlos
已有18人解锁Überprüfen
已付费?RegistrierungErfrischen

1. 初始化ModbusDer Server

首先,需要创建一个Modbus TCPDer Server实例。使用modbus_new_tcp函数初始化一个指向modbus_tTypus的指针,这个函数的Parameter是Der Server的IPAdresse和端口Nr.。在本例中,Der Server配置为监听本地Adresse127.0.0.1上的1502端口:

ctx = modbus_new_tcp("127.0.0.1", 1502);

2. 设置Modbus映射

Modbus映射是Der Server存储其Daten(比如线圈、离散输入、保持Register.和输入Register.)的方式。使用modbus_mapping_new来Unterteilung配并初始化这些Datenzone:

mb_mapping = modbus_mapping_new(MODBUS_MAX_READ_BITS, 0, MODBUS_MAX_READ_REGISTERS, 0);

如果映射创建失败,Der Server将打印Fehler.消息并退出。

3. 监听Verbindung

使用modbus_tcp_listen函数来监听网络Verbindung,它返回一个socket描述符。Der Server能够处理的最大Verbindung数由NB_CONNECTION宏定义:

server_socket = modbus_tcp_listen(ctx, NB_CONNECTION);

4. 处理SIGINT信Nr.

为了能够优雅地SchließenDer Server并释放资源,我们使用signal函数来捕获SIGINT信Nr.(通常由Ctrl+C引发),并将其关联zuclose_sigint函数:

signal(SIGINT, close_sigint);

close_sigint函数Schließensocket,释放Modbus上下文和映射,然后退出程序。

5. 主循环

Der ServerBetrieb在一个Unendlicher Kreislauf中,使用select函数来监听socket上的活动。如果select检测zu活动,Der Server将检查是新的VerbindungBitte还是已建立Verbindung的DatenBitte:

if (master_socket == server_socket) {
    // 处理新的VerbindungBitte
} else {
    // 处理来自bereits verbunden客户端的Daten
}

对于新的Verbindung,Der Server接受Verbindung并将新socket添加zu监听集合中。对于DatenBitte,Der Server使用modbus_receiveEmpfangDaten,然后使用modbus_replySenden SieAntwort。

6. 性能评估

为了评估Der Server的性能,代码中加入了对传输Daten速率的Berechnung。Der ServerBerechnung在给定Zeit内成功处理的位(bits)和Register.(registers)的Anzahl,从而得zu点/秒和KiB/秒的传输速率:

rate = (n_loop * nb_points) * G_MSEC_PER_SEC / (end - start);
printf("* %d points/s\n", rate);

这些性能指标对于优化Der Server设置和网络配置非常有用。

结论

通过C语言和libmodbus库,可以Wirksam地实现一个Modbus TCPDer Server,它不仅支持多客户端Verbindung,还能够提供关于其性能的实时Daten。这为工业应用中Die AusrüstungKommunikation提供了一个强大且灵活的解决方案。

Techniken术语(共 4 个)—— Klick auf展开
Modbus TCP基于Ethernet的ModbusVereinbarung变体,使用TCP/IP传输
Register.Modbus Register.存储Daten单元,Unterteilung线圈/离散输入/保持/输入Register.四类
线圈Modbus位可读Schreiben von Daten,Adresse从00001开始
保持Register.Modbus 16位可读Schreiben von Daten,Adresse从40001开始
来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung Modbus Programmierung 字数 1305 字 · 阅读约 4 Unterteilung钟 更新 2024-04-21 永久链接 https://www.modbus.cn/27705.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.