Modbus-Anleitung zur Programmierung in Mainstream-SPS: Siemens, Mitsubishi, Delta, Huichuan

kostenlosKostenloses technisches Material

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

Modbus-Programmierung in Mainstream-SPSs (Siemens, Mitsubishi, Delta, HSBC)

In der industriellen Automatisierung ist die Programmierung von Modbus-SPSsModbus PLC-Programmierungeine Kernkompetenz, die jeder Automatisierungsingenieur haben muss. Egal, ob es sich um die spezielle Kommunikationsbefehle von Siemens S7 - 1200 / 1500 oder die ADPRW-Befehle von Mitsubishi FX5U oder die MODRW-Befehle von Delta DVP-Serie oder die Free-Port - Programmierung von HSBC H3U handelt, es gibt signifikante Unterschiede zwischen den verschiedenen SPS-Marken in der Implementierung der Modbus-Kommunikation. Dieser Artikel, ein wichtiger Teil der Reihe von Tutorialsmodbus.cn, vergleicht systematisch die Modbus-Programmiermethoden der vier führenden SPS-Marken und bietet vollständige Trapezoid-Beispiele und Adress-Mapping - Beziehungen, die Ingenieuren helfen, die Entwicklung der Modbus-Kommunikation für SPS-Marken schnell zu meistern.

Übersicht über die Modbus-Implementierung der einzelnen PLC-Marken

Modbus-Anleitung zur Programmierung in Mainstream-SPS: Siemens, Mitsubishi, Delta, HuichuanAbbildung
▲ Abbildung 1: Mainstream-PLC Modbus Kommunikationsverdrahtung Topologie und die Konfiguration der Kommunikationsanschlüsse der einzelnen Marken.

Bevor wir in die spezielle Programmierung eingehen, müssen wir einen entscheidenden Unterschied verstehen: Die Art und Weise, wie verschiedene SPS-Marken das Modbus-Protokoll unterstützen, sind in zwei Kategorien unterteilt: "spezifische Anweisungen" und "freie Port-Programmierung". Spezielle Anweisungsmethode vom SLC-Hersteller verpackt Modbus-Protokoll - Stack, Ingenieure müssen nur Anweisungen aufrufen und Parameter konfigurieren, um die Kommunikation abzuschließen; und die freie Port-Programmierungsmethode erfordert Ingenieure, um manuell Modbus-Nachrichtenrahmen zu erstellen, durch serielle Anschlüsse durch Byte-Receiver zu implementieren Protokoll. Beide Methoden haben Vorteile und Schwächen, die folgende Tabelle gibt einen visuellen Vergleich.

Marke / SerieImplementierungKernbefehle / MechanismenSchwierigkeit der EntwicklungFlexibilität
Siemens S7-1200/1500Spezielle BefehleMB_COMM_LOAD / MB_MASTER / MB_SLAVE
Mitsubishi FX5USpezielle AnweisungenADPRW
Mitsubishi FX3USpezielle AnweisungenADPRW (Adapter erforderlich)
Delta DVP-SerieSpezielle AnweisungenMODRW
Delta AS-SerieSpezielle BefehleMODRW / M_MODRW
H3UFreie Port-ProgrammierungRS-Befehl + CRC-Prüfung
Spezielle BefehleSpezielle AnweisungenModbus-Funktionen

Wie man aus der obigen Tabelle sieht,Siemens Modbus RTUMitsubishi Modbus Communicationein spezielles Anweisungsprogramm verwenden und eine niedrige Entwicklungsschwelle haben; währenddie H3U-Serie in der Huichuan Modbus-ProgrammierungDie H3U-Serie erfordert eine freie Programmierung und erfordert ein höheres Verständnis des Protokolls von Ingenieuren.Das Modbus PLCvon Delta PLC ist für seine Einfachheit und Benutzerfreundlichkeit bekannt.

Siemens S7 - 1200 / 1500 Modbus-Programmierung

Die Siemens TIA Portal-Plattform bietet eine vollständige Modbus-Kommunikationsbibliothek für die SPS-Serie S7-1200 und S7-1500 mit drei Kernbefehlen: MB_COMM_LOAD (Initialisierung der Kommunikation), MB_MASTER (Master-Kommunikation) und MB_SLAVE (Slave-Kommunikation). Diese Befehle befinden sich unter dem Pfad "Andere" → "Modbus" in der Befehlgruppe "Kommunikation".

MB_COMM_LOAD - Initialisierung des Kommunikationsmoduls

Modbus-Anleitung zur Programmierung in Mainstream-SPS: Siemens, Mitsubishi, Delta, HuichuanAbbildung1
▲ Abbildung 2: Vollständige Zuordnung von Siemens / Mitsubishi / Delta / Huichuan-PLC mit Modbus-Standardadressen.

Bevor Sie eine Modbus-Kommunikation verwenden, müssen Sie die MB _ COMM _ LOAD-Befehl aufrufen, um das Kommunikationsmodul zu konfigurieren. Die Funktion dieser Anweisung ist ähnlich wie die Festlegung der grundlegenden Parameter wie die Baudrate, die Check-Bits, die Daten-Bits und die Stopp-Bits des seriellen Anschlusses und die Angabe des Betriebsmodus (RTU oder ASCII) für Modbus.

ParameterDatentypenBeschreibungTypischer Wert
REQBoolAufsteigende Rende-Trigger - KonfigurationM0.0
PORTUIntHardware-Identifier des Kommunikationsmoduls269 (CM1241 RS485)
BAUDUIntBaudrate9600 / 19200 / 38400 / 115200
PARITYUIntCheckbits: 0 = Keine 1 = ungerade 2 =偶el2 (Par-Check)
FLOW_CTRLUIntStrömungsteuerung: 0 = Keine 1 = RTS / CTS0
RTS_ON_DLYUIntRTS Öffnverzögerung (ms)0
RTS_OFF_DLYUIntRTS Ausschaltenverzögerung (ms)0
RESP_TOUIntResponse Timeout (ms)1000
MB_DBVariantHintergrundblock für MB_MASTER / SLAVEDB-Nummer für die entsprechende Anweisung
DONEBoolKonfiguration abgeschlossen Flag
ERRORBoolFehler Flag
STATUSWordStatuscode (16#0000 = kein Fehler)

MB_MASTER - Modbus-Master - Kommunikationsbefehl

Mit der MB _ MASTER-Befehl wird der S7-1200/1500 als Modbus RTU-Master verwendet, der Lese - und Schreibanfragen an Slave-Geräte sendet. Diese Anweisung unterstützt die Funktionscodes 01 (Lese-Spule), 02 (Lese-diskreter Eingang), 03 (Lese-Halt - Register), 04 (Lese-Eingang - Register), 05 (Schreib-Einzel - Spule), 06 (Schreib-Einzel - Register), 15 (Schreib-Multi - Spule) und 16 (Schreib-Multi - Register).

// MB_MASTER 梯形图参数说明(SCL 表示)
"MB_MASTER_DB"(
    REQ    := #Start_Read,        // 上升沿触发
    MB_ADDR:= 1,                  // 从站地址(1-247)
    MODE   := 0,                  // 0=读 1=写
    DATA_ADDR := 40001,           // 从站数据起始地址
    DATA_LEN  := 10,              // 数据长度(字数)
    DATA_PTR  := P#DB1.DBX0.0 WORD 10  // 本地数据存储区指针
);

// 常见模式:
// MODE=0, DATA_ADDR=40001 → 功能码 03 读保持寄存器
// MODE=1, DATA_ADDR=40001 → 功能码 06/16 写保持寄存器

MB_SLAVE - Modbus Slave-Kommunikationsanweisung

Die MB_SLAVE-Anweisung macht den S7-1200/1500 als Modbus-RTU - Slave-Station, um auf Lese - und Schreibanfragen des Master-Stations zu antworten. Diese Anweisung ermöglicht es der Masterstation, auf bestimmte Datenbereiche innerhalb der SPS zuzugreifen (Spule, diskreter Eingang, Eingangsregister, Halteregister).

// MB_SLAVE 梯形图参数说明(SCL 表示)
"MB_SLAVE_DB"(
    MB_ADDR    := 1,              // 本从站地址
    MB_HOLD_REG := P#DB2.DBX0.0 WORD 100  // 保持寄存器映射区
);

Beispiel für das vollständige Trapezoid-Diagramm: Temperatur-Feuchten - Sensor auslesen

Hier ist ein Beispiel für das vollständige Programm für das Lesen eines Modbus-Temperatur - Feuchten-Sensors mit dem Siemens S7-1200. Die Sensor-Station - Adresse ist 1, Temperatur und Feuchtigkeit werden in den Haltregistern 40001 und 40002 gespeichert, die Baudrate 9600, Par-Prüfungen.

网络 1:初始化通信模块(首次扫描调用)
┌──────────────────────────────┐
│  M0.0    MB_COMM_LOAD        │
│──┤P├────┤EN              DONE├──M0.1
│         │PORT:  269   ERROR├──M0.2
│         │BAUD:  9600  STATUS├──MW2
│         │PARITY:2           │
│         │FLOW_CTRL:0        │
│         │RESP_TO:1000       │
│         │MB_DB:MB_MASTER_DB │
└──────────────────────────────┘

网络 2:周期性读取传感器数据(每 500ms)
┌──────────────────────────────┐
│  M0.5    MB_MASTER           │
│──┤P├────┤EN              DONE├──M1.1
│         │MB_ADDR:1    ERROR├──M1.2
│         │MODE:0       STATUS├──MW4
│         │DATA_ADDR:40001     │
│         │DATA_LEN:2          │
│         │DATA_PTR:P#DB3.DBX0.0 WORD 2
└──────────────────────────────┘
// 读取结果:
// DB3.DBW0 = 温度值(需要除以 10 得到实际温度)
// DB3.DBW2 = 湿度值(需要除以 10 得到实际湿度)

Eine detaillierte Modbus-Konfiguration für die Siemens-Botou - Plattform finden Sie im Artikelmodbus.cnüber die Auswahl der Siemens-Kommunikationsmodule. Schauen Sie sich auch unsereSiemens Modbus RTU vollständige Konfiguration Tutorial an.

Detaillierte Programmierung für Mitsubishi FX5U Modbus

Mitsubishi Modbus KommunikationDie Implementierung auf der FX5U-Serie durch spezielle ADPRW-Befehle ist ein qualitativer Sprung gegenüber den Szenarien der FX3U - Ära, die zusätzliche Adapter benötigten. Der integrierte RS - 485 - Anschluss der FX5U unterstützt direkt das Modbus-RTU - Protokoll, ohne zusätzliche Hardware-Aufwand. Die Stärke der ADPRW-Befehl ist, dass die Angabe des Modbus-Funktionscodes und das Senden und Empfangen von Daten mit einer einzigen Befehl erledigt werden können.

Die ADPRW-Richtlinie

OperandBeschreibungEinstellungsbereichBeispiel
S1Slave-Station - AdresseH1-HF7 (1 - 247)H1
S2FunktionscodeH1-H6, HF, H10H3 (Lese - und Halten-Register)
S3Modbus AdresseH0 - HFFFFH0 (entsprechend 40001)
S4DatenpunktzahlH1-H7D0 (Wort)K2
D1Senden / Empfangen von Daten Initiation SoftwareBit / Word SoftwareD100

Bei Ausführung der ADPRW-Befehl erstellt die SLC automatisch einen Modbus-Nachrichtenrahmen, berechnet den CRC-Checkcode, sendet die Nachricht und wartet auf die Antwort des Slaves. Für Schreibvorgänge (Funktionscodes H6 / H10) speichert der von D1 angegebene Soft-Bereich die zu senden Daten; für Lesvorgänge (Funktionscodes H1 - H4) speichert der von D1 angegebene Soft-Bereich die empfangenen Daten.

ADPRW Wichtige Hinweise

  • Adress-Ofset - Regeln: Modbus-Protokoll - Adressen beginnen mit 0 nummeriert, aber Adressen in Dokumenten (z. B. 40001) beginnen mit 1. Im S3 - Operand von ADPRW entspricht das Haltregister 40001 ab H0 und die Spule 00001 ab H0.
  • Der Funktionscode H3 (Lese-Halt - Register) liest bis zu 125 Wörter gleichzeitig (H7D).
  • Der Funktionscode H10 (Schreib-Multi - Register) schreibt bis zu 123 Wörter gleichzeitig (H7B).
  • ADPRW-Befehl Für die Ausführung einer vollständigen Anweisung sind mehrere aufeinanderfolgende Scanzyklen erforderlich, um eine Kommunikation abzuschließen.
  • Die Beurteilung des Kommunikationszustands muss über das spezielle Relais SM und das spezielle Register SD erfolgen.

Trapezoid-Beispiel: FX5U Lesen von Frequenzumrichterparametern

// 网络 1:通信参数设置(通过 PLC 参数配置,无需梯形图)
// 通道 1(CH1):内置 RS-485
// 协议:Modbus RTU
// 波特率:19200 bps
// 数据位:8
// 停止位:1
// 校验:偶校验

// 网络 2:读取变频器运行频率和输出电流
┌──────────────────────────────┐
│ M0               [ADPRW    ]│
│──┤├──────────────┤S1: H1    │  // 从站地址 1
│                  │S2: H3    │  // 功能码:读保持寄存器
│                  │S3: H100  │  // 起始地址:40101(频率)
│                  │S4: K2    │  // 读取 2 个字
│                  │D1: D100  │  // 数据存储到 D100-D101
└──────────────────────────────┘

// 网络 3:数据处理
// D100 = 运行频率(单位 0.01Hz,需要除以 100)
// D101 = 输出电流(单位 0.1A,需要除以 10)

// 网络 4:写入运行频率设定
┌──────────────────────────────┐
│ M1               [ADPRW    ]│
│──┤├──────────────┤S1: H1    │  // 从站地址 1
│                  │S2: H6    │  // 功能码:写单寄存器
│                  │S3: H200  │  // 目标地址:40201
│                  │S4: K0    │  // 写操作时忽略
│                  │D1: D200  │  // 写入的数据
└──────────────────────────────┘

Mit Modbus-Kommunikationsgeschwindigkeiten von 115200 bps leistet der Mitsubishi FX5U hervorragende Leistungen in Multi-Station - Polling-Szenarien. Weitere Informationen zu Mitsubishi Modbus-Kommunikation finden Sie untermodbus.cnoben.Mitsubishi Modbus-Kommunikation - Vollständige Tutorial

Modbus-Programmierung der Delta DVP / AS-Serie

Die Kommunikation mit der PLC ModbusDie Kommunikation ist auf den DVP - und AS-Serie sehr elegant implementiert.Modrw-BefehlDie Kernbefehle für die Modbus-Kommunikation der Delta-SPS ist so konzipiert, dass „alle Probleme mit einer Befehl gelöst werden" - ob Lese - oder Schreib -, Spule - oder Register-Befehl. Die AS-Serie bietet eine erweiterte Version des M_MODRW-Befehls, der mehr Funktionscode unterstützt.

Modrw-Befehlparameter beschreiben

ParameterBedeutungDVP-SerieAS-Serie
SOnline-GerätadresseK1 - K254K1 - K254
S1FunktionscodeK1 / K2 / K3 / K4 / K5 / K6 / K15 / K16Ähnlich wie oben + Erweiterung
S2Zielgerätadresse0-99990-65535
S3Datenlänge1-1271-200
DNative DatenstartregisterD-RegisterD-Register

Trapezoid-Diagramm Beispiel: Delta-DVP - Smart-Zähler lesen

// 台达 DVP-ES2 通过 COM2(RS-485)读取智能电表数据
// 电表从站地址:1,波特率 9600,无校验

// 网络:触发读取电表数据
┌───────────────────────────────┐
│ M1002             [ SET  M0 ]│  // 上电初始化
└───────────────────────────────┘

┌───────────────────────────────┐
│ M1013             [ MODRW   ]│  // 1 秒时钟脉冲触发
│──┤├───────────────┤S:  K1    │  // 从站地址 1
│                   │S1: K3    │  // 功能码:读保持寄存器
│                   │S2: K0    │  // 起始地址:040001
│                   │S3: K6    │  // 读取 6 个字
│                   │D:  D0    │  // 存储到 D0-D5
└───────────────────────────────┘

// 读取结果映射(某品牌智能电表):
// D0 = 电压(单位 0.1V → D0/10 = 实际电压)
// D1 = 电流(单位 0.01A → D1/100 = 实际电流)
// D2 = 有功功率(单位 1W)
// D3 = 无功功率(单位 1Var)
// D4 = 功率因数(单位 0.001 → D4/1000)
// D5 = 频率(单位 0.01Hz → D5/100)

Erweiterte Funktionen der Delta AS-Serie M _ MODRW

Die SPS der AS-Serie von Delta (wie AS228T-A) bieten M_MODRW-Befehle auf der Basis von MODRW, die wichtigsten Verbesserungen sind: Unterstützung für 32 - Bit-Datenlesen und Schreiben, Unterstützung für Stringübertragung, Unterstützung für Bit-Schreiben, konfigurierbarer Kommunikationszeitüberschreitungen und die gleichzeitige Aktivierung von bis zu 8 Kommunikationsbefehlen. Diese Verbesserungen verschaffen die AS-Serie einen deutlichen Vorteil in komplexen Modbus-Kommunikationsszenarien.

// 台达 AS 系列 M_MODRW 示例:读取 32 位电能累计值
┌───────────────────────────────────┐
│ M0                  [ M_MODRW   ]│
│──┤├────────────────┤S:  K1       │  // 从站地址
│                    │S1: K3       │  // 功能码:读寄存器
│                    │S2: K100     │  // 起始地址
│                    │S3: K2       │  // 读取 2 个字(含 32 位数据)
│                    │D:  D100     │  // 存储到 D100(低字)、D101(高字)
│                    │Mode: D200   │  // 模式设定
└───────────────────────────────────┘

Die Modbus-Programmiererfahrung von Delta PLC ist unter den inländischen Marken erstklassig, und die Einfachheit der MODRW-Befehle senkt die Entwicklungshürfen erheblich. Weitere technische Details zur PLC-Modbus - Kommunikation finden Sie unter:modbus.cnÜberprüfenVollständige Anleitung zur Modbus-Kommunikation von Delta PLC

Detaillierte Programmierung von HSBC H3U Modbus Free Port

Die HSBC Modbus-Programmierungist einzigartig in der H3U-Serie. Im Gegensatz zu anderen Marken, die dedizierte Modbus-Befehle anbieten, verwendet H3U eine Freie-Port - Kommunikation, bei der Ingenieure manuell Modbus-Nachrichtenrahmen erstellen und über RS-Befehle senden müssen. Dieser Ansatz erhöht die Entwicklungshwierigkeiten, gibt den Ingenieuren die volle Kontrolle über den Kommunikationsprozess und ist in nicht-standard - Protokollen oder speziellen Anforderungs-Szenarien sehr nützlich.

Grundlagen der H3U-Freie - Port-Kommunikation

Die serielle Port-Kommunikation von H3U basiert auf den RS-Befehl (Datenübertragungsanweisung) und den RC-Befehl (Datenempfangsanweisung). Um die Modbus-RTU - Kommunikation zu implementieren, müssen die Nachrichtenframe gemäß den Modbus-Protokollspezifikationen manuell erstellt werden, einschließlich der Slave-Station - Adresse, Funktionscode, Datenfeld und CRC-Prüfcode.

CRC - 16 - Überprüfungsalgorithmus Implementierung

Der CRC-Prüfcode der Modbus RTU ist der wichtigste Teil der Free-Port - Programmierung. Im Folgenden ist die Logik des Trapperdiagramms zur Implementierung der CRC - 16 - Verifikation auf H3U (Verifikationspolynomial: 0xA001).

// CRC-16 计算流程(Modbus RTU 标准算法)
// 输入:待校验数据存储在 D100-D105(6 字节,不含 CRC),字节数存于 D0
// 输出:CRC16 结果高字节存于 D200,低字节存于 D201
//
// 算法伪代码:
// 1. 预置 16 位 CRC 寄存器为 0xFFFF
// 2. 将第一个 8 位数据与 CRC 寄存器低字节异或,结果存入 CRC 寄存器
// 3. CRC 寄存器右移一位,最高位补 0
// 4. 移出位如果为 1,则 CRC 寄存器与 0xA001 异或
// 5. 重复步骤 3-4 共 8 次
// 6. 处理下一个字节,重复步骤 2-5
// 7. 所有字节处理完成后,CRC 寄存器的值即为 CRC16 校验码

// H3U 梯形图中的实现(使用循环指令)
// 注意:H3U 内置了 CRC 校验指令(CRC),可将校验码追加到发送数据末尾
// CRC D100 D106 K6
// 功能:对 D100 开始的 6 字节数据计算 CRC,结果存入 D106-D107

Beispiel für eine vollständige freie Modbus-RTU - Masterstation

// 汇川 H3U 自由口通信实现 Modbus RTU 主站
// 目标:读取从站地址 1 的保持寄存器 40001(2 个字)

// 网络 1:构建 Modbus 读保持寄存器报文
// 报文格式:[从站地址][功能码][起始地址高][起始地址低][字数高][字数低][CRC低][CRC高]
//
// 发送报文数据准备:
// D100 = H0103    // 从站地址 01 + 功能码 03
// D101 = H0000    // 起始地址 0000(对应 40001)
// D102 = H0002    // 读取 2 个字
// CRC 校验放入 D103

// 网络 2:配置串口参数(通过特殊寄存器)
// D8120 = H0C81   // 8位数据+偶校验+1停止位+9600bps
// M8161 = ON      // 8位数据处理模式

// 网络 3:发送数据
┌──────────────────────────────┐
│ M0               [ RS     ]│
│──┤├──────────────┤D100      │  // 发送起始寄存器
│                  │K8        │  // 发送 8 个字节(含 CRC)
│                  │D200      │  // 接收起始寄存器
│                  │K9        │  // 接收 9 个字节(含 CRC)
└──────────────────────────────┘

// 网络 4:接收数据处理
// D200 = 从站地址(应为 H01)
// D201 = 功能码(应为 H03)
// D202 = 字节数(应为 04)
// D203 = 第一字高字节
// D204 = 第一字低字节
// D205 = 第二字高字节
// D206 = 第二字低字节
// D207 = CRC 低字节
// D208 = CRC 高字节

Die HSBC AM600 - Serie (Codesys-Plattform) bietet eine modernere Modbus-Kommunikationsmethode, die über spezielle Funktionsblöcke realisiert wird und dem Siemens-Szenario näher kommt. Für einen Vergleich der Modbus-Programmierung für die gesamte SPS-Serie von HSBC, lesen Sie bittemodbus.cnoben.die Anleitung zur vollständigen Programmierung von HSBC Modbus auf

Adresse der Markenverbindung

Eines der fehleranfälligsten Teile der Modbus-Kommunikation ist die Adresszuordnung. Verschiedene SPS-Marken haben unterschiedliche Darstellungen für Modbus-Adressen, und es gibt Unterschiede in den Regeln für die Adressversarialung bei der Programmierung. Die folgende Tabelle fasst die Modbus-Adressenzuordnung der vier großen SPS-Marken zusammen und deckt die Kernlogik von über 2000 Adresszuordnung Regeln ab.

Modbus AdressbereichProtokoll-AdressenSiemensMitsubishi FX5UDelta DVPHuichuan H3U
Schlagworte 00001 - 099990-9998Q0.0 - Qx.yM0 - MxM0 - MxM0 - Mx
Diskreter Eingang 10001 - 19990-9998I0.0 - Ix.yX0 - XxX0 - XxX0-Xx
Eingangsregister 30001-399990-9998IW0-IWxSD Spezielles Register
Aufbewahrungsregister 40001-499990-9998DBx.DBW0 +D0-D7999D0 - D9999D0 - D7999
Aufbewahrungsregister 400001-4655350-65534Erweiterte Adressierung erforderlichD0 - D7999 / R0 +D0 - D9999 / ErweiterteD0 - D7999 / Erweiterte

Adress-Ofset - Regeln Details

Das Verständnis der Adressverschiebung ist der Grundstein, um Modbus-Kommunikationsfehler zu vermeiden. Die Adressen, die im Modbus-Protokoll definiert werden, beginnen mit 0 nummeriert, aber die Anwendungsschicht-Nummern (z. B. 40001) beginnen mit 1. Die Adressen, die von verschiedenen SPS-Marken in den Anweisungen verwendet werden, sind normalerweise Protokoll-Adressen (0 - basiert), was zu einem häufigen Fehler "Gehindes 1" führt.

SzeneDokumentadresseProtokolladresse (in der Anweisung)Offset
Lesen-Halt - Register 40001400010x0000 (H0 / K0)-1
Lesen-Halt - Register 40100401000x0063 (H63 / K99)-1
Lesespule 00001000010x0000 (H0 / K0)-1
Schreib-Eingangsregister 40010400100x0009 (H9/K9)-1
Leseneingangsregister 30050300500x0031 (H31 / K49)-1

Häufige Fehler und Fallen.

Im praktischen Engineering nimmt das Debugging der Modbus-Kommunikation oft viel Entwicklungszeit ein. Im Folgenden haben die Autoren die häufigsten Fehler und Fallstricke in Hunderten von praktischen Projekten zusammengestellt, um dem Leser zu helfen, weniger Abweichungen zu gehen.

1. Adresse verschiebt Fehler

Dies ist einer der häufigsten Fehler, die nicht. Die Registeradresse im Gerätehandbuch ist "40001" und der Ingenieur ist falsch, wenn er die Startadresse als "1" oder "40001" in der SLC-Befehl ausfüllt. Die richtige Vorgehensweise ist die Eingabe von "0" (Protocol Adresse = Application Adresse - 1). Die Ausfüllung des DATA_ADDR-Parameters für Siemens MB_MASTER 40001 ist korrekt (Siemens hat das Paket gemacht), aber der S3 - Parameter für Mitsubishi ADPRW sollte mit H0 und der S2 - Parameter für Delta MODRW mit K0 ausgefüllt werden.

2. Das Problem der Endianness

Wenn Modbus 32 - Bit-Daten überträgt (z. B. Gleitkommazahlen, zwei-Wort - Ganzzahlen), kann ein Byte-Sequenz - Problem zu Datenanalysefehlern führen. Es gibt vier häufige Kombinationen von Byte-Sequenzen: Big-Endian + Big-Endian (Standard Modbus), Big-Endian + Little-Endian, Little-Endian + Big-Endian und Little-Endian + Little-Endian. Siemens PLC verwendet Big-Endian, Mitsubishi und Delta verwenden Little-Endian, und bei der markenübergreifenden Kommunikation muss die Byte-Sequenz - Konvertierung beachtet werden.

3.Überstunden falsch eingestellt

Modbus-RTU - Standards für das Inter-Frame - Intervall sind 3,5 Zeichenzeit (ca. 3,6 ms bei 9600 bps). Wenn die Timeout-Einstellungen der Masterstation zu kurz sind, wird die Timeout aufgrund des normalen Frame-Intervalls falsch beurteilt; Wenn sie zu lang sind, wird eine Menge Scanzeit verschwendet, wenn das Gerät abgeschaltet ist. Es wird empfohlen, die Antwort-Zeitüberschreitung auf "(maximale Antwortzeichen × Zeichenzeit) + Gerät-Verarbeitungszeit + Rest" einzustellen, zum Beispiel 10 Register bei 9600 bps zu lesen, eine vernünftige Zeitüberschreitung beträgt 200 - 500 ms.

4. Mehrere Hauptkonflikte

Modbus RTU ist ein Single-Master - Protokoll, das nicht mehrere Master-Stationen auf demselben Bus erlaubt. Wenn der HMI-Touchscreen und die SPS gleichzeitig als Masterstation auf das gleiche Gerät zugreifen, treten Buskonflikte auf. Die Lösung besteht darin, dass die HMI über die transparente Übertragung der SPS indirekt auf das Gerät zugreifen kann oder über das Modbus TCP-Gateway für die Protokollübertragung verwendet wird.

5. Kommunikationsparameter sind nicht vereinbar

Die Baudrate, die Datenbits, die Stop-Bits und die Check-Bits müssen mit den Slaven identisch sein. Hinweis: Einige Geräte behaupten, "9600, 8, N, 1" zu unterstützen, aber die tatsächlichen Datenbits sind 9 Bits (8 Datenbits + 1 Checkbit) und die Kommunikation schlägt fehl, weil die Bytelänge nicht übereinstimmt. Es wird empfohlen, die tatsächlichen Kommunikationsparameter des Geräts mit dem Modbus-Debugging - Tool zu bestätigen.

Integration in SCADA-Systeme

Die Integration von PLCs in SCADA-Systeme (Monitoring and Data Acquisition) über das Modbus-Protokoll ist eine der häufigsten Architekturen in der industriellen Automatisierung. Im Folgenden werden einige typische Integrationsmethoden und bewährte Verfahren beschrieben.

Typische Integrationsarchitektur

  • Direktanschlussmodus: SCADA verbindet die SPS direkt über Modbus RTU / TCP-Treiber. Geeignet für kleine Systeme (1 - 5 SPS), die Vorteile sind einfache Architektur, geringe Latenz; Nachteile sind schlechte Skalierbarkeit, SCADA-Last.
  • OPC-Server - Übertragungsmodus: PLC → OPC-Server (z. B. Kepware, Matrikon) → SCADA. Geeignet für mittelgroße und große Systeme, die Vorteile sind die Protokoll-Entkopplung, Multi-Client - Unterstützung; Nachteile sind die Zwischenlagerung und die Wartungskosten.
  • Data Gateway-Modus: PLC → Modbus Data Gateway → SCADA / MES / ERP. Geeignet für Systeme auf Unternehmensklasse, mit den Vorteilen eines einheitlichen Datenexports, Unterstützung von Daten-Cache - und Weiterleitung.

SCADA-Konfigurationspunkte

Bei der Konfiguration von Modbus-Treibern in SCADA ist es wichtig, die Register-Adressen - Zuordnung korrekt einzurichten. Gängige SCADA-Plattformen (wie WinCC, Configuration King, Power Control, Intouch) stellen Modbus-Adressen unterschiedlich dar. Zum Beispiel verwendet WinCC "4x0001" für die Aufbewahrung des Registers, während Configurator King das Format "4 - 1" verwendet. Sie müssen die Modbus-Treiber - Dokumentation für die einzelnen Plattformen überprüfen, um das Adressformat zu bestätigen, bevor Sie die Konfiguration vornehmen.

Debugging-Tipps und - Tool-Empfehlungen

Ein effizientes Debugging ist der Schlüssel für die erfolgreiche Entwicklung von Modbus-Kommunikation. Hier sind die Werkzeuge und Methoden, die der Autor empfiehlt.

Erforderliche Debugger-Tools

Name des ToolsTypAnwendbares SzenarioEmpfehlungsgrund
Modbus PollDesktop-SoftwareHost-Station - SimulationIntuitive Benutzeroberfläche, Unterstützung aller Funktionscodes, Abfragezeit
Modbus SlaveDesktop SoftwareSlave-Simulationkann mit Poll kombiniert werden, Simulation des Slave-Verhaltens
QModMasterOpen-Source - SoftwareDebugger für die Master-StationKostenlose Open-Source - Software, RTU / TCP-Unterstützung, plattformübergreifend
ModScanDesktop-SoftwareMaster-ScanBatch-Scanning von Slave-Registern, schnelle Erstellung von Adress-Mapping - Tabellen
Serial-Port - Monitoring-ToolsHardware / SoftwareBus-AushörUSB-to - 485 - Überwachungsmodus, Aufzeichnung von Original-Nachrichten
WiresharkNetzwerk-Packet - CaptureModbus TCP-AnalyseModbus TCP-Protokoll - Analyse unterstützt, leistungsstarke Funktionen

Testmethodik

  • Hierarchische ValidierungDie physikalische Schicht (Kabel, Terminationswiderstand, Biaswiderstand) wird zuerst mit dem Stromzähler bestätigt, dann mit Modbus Poll die Linkschicht (Bolt-Rate, Verifikation) bestätigt und schließlich mit dem SPS-Programm die Anwendungsschicht (Adresse, Datenformat) bestätigt.
  • Minimalisierte TestsMit dem einfachsten Funktionscode (Lese-Register 03) wird der Kommunikationstest durchgeführt, um die grundlegende Verbindung zu überprüfen, bevor Sie komplexe Funktionen testen.
  • Nachrichten-Aufzeichnungen - Gesetz: Verwenden Sie das Serienportüberwachungstool, um eine vollständige Nachricht zu protokollieren, indem Sie manuell die Nachricht-Frame - Positionierung Probleme analysieren. Die Modbus-Nachrichten sind einfach strukturiert und erkennen in der Regel das Problem auf einen Blick.
  • Überstrittenen GesetzBeginnen Sie mit einer längeren Zeitüberschreitung (z. B. 3000ms) und bestätigen Sie, dass die Kommunikation normal ist, um die Zeitüberschreitung schrittweise zu verkürzen, um den besten Wert zu finden.

Modbus-Programmierung von vier großen Marken

Dimensionen im VergleichSiemens S7-1200/1500Mitsubishi FX5UDelta AS-SerieUmsetzungsmethoden
UmsetzungenSpezielle Anweisungen (Bibliothek)Spezielle BefehleSpezielle BefehleFreie Port-Programmierung
KernbefehleMB_COMM_LOAD / MB_MASTER / MB_SLAVEADPRWMODRW / M_MODRWRS + CRC
Schwierigkeit der Programmierung★ ★ ☆ ☆ ☆★ ★ ☆ ☆ ☆★ ★ ☆ ☆ ☆★ ★ ★ ★ ☆
Funktionscode Unterstützung01/02/03/04/05/06/15/1601/02/03/04/05/06/15/1601/02/03/04/05/06/15/16Alle (Manuell)
Maximale Anzahl von Slaves247247254247 (begrenzt durch die Scan-Zeit)
Maximale Datenmenge in einem einzelnen Mal125 Wörter (Lesen) / 123 Wörter (Schreiben)127 Wörter (Lesen) / 123 Wörter (Schreiben)127 Wörter (lesen) / 123 Wörter (schreiben)Unbegrenzt (manuell)
AdressfehlertoleranzAutomatische Verarbeitung von OffsetManuelle Offset erforderlich (-1)Manuelle Offset erforderlich (-1)Manuelle Offset erforderlich (-1)
Multi-Befehl - ParallelitätNicht unterstützt (Warteschlangen erforderlich)Nicht unterstützt (Warteschlangen erforderlich)Unterstützt (bis zu 8)Manuelle Verwaltung
FehlerdiagnoseSTATUS Detaillierte StatuscodesSM / SD-RegisterFehler-FlagbitsManuelle Beurteilung
TCP-UnterstützungMB_CLIENT / MB_SERVERIntegrierte Ethernet-AnschlüsseIntegrierte Ethernet-AnschlüsseErweiterungsmodul erforderlich
Gleitkomma-UnterstützungByte-Sequential - Konvertierung erforderlichByte-Sequential - Konvertierung erforderlichBytreihenfolge erforderlichBytreihenfolge erforderlich
EntwicklungsumgebungTIA PortalGX Works3ISPSoft/DIAStudioAutoShop
LernressourcenReichReichMittelwertWeniger
Typische Kommunikationsrate19200-1152009600-1152009600-1152009600-19200
Passend für SzenarienGroße Systeme / StandardisierungsprojekteKleine und mittlere Geräte / Schnelle EntwicklungInländische Alternativen / Preis-Leistungs - VorrangAnpassungsanforderungen / Tiefe-Kontrolle

Häufig gestellte Fragen

F1: Benötigen Sie für die Modbus-Kommunikation des Siemens S7 - 1200 zusätzliche Hardwaremodule?

Ja, das stimmt. S7 - 1200 CPU-Körper in der Regel nur Ethernet-Anschluss und gewöhnliche RS - 232 / RS - 485 (einige Modelle), wenn die Modbus RTU-Kommunikation erforderlich ist, wird empfohlen, CM1241 RS485 Kommunikationsmodul (Hardware-Identifikationsnummer 269) oder CB1241 Signalplatte zu verwenden. Für die Modbus-TCP - Kommunikation wird der eigene Ethernet-Anschluss der CPU unterstützt, ohne dass zusätzliche Hardware erforderlich ist. Der S7 - 1500 ist ähnlich und verwendet das CM PtP-Kommunikationsmodul.

F2: Wie viele Geräte kann der ADPRW-Befehl des Mitsubishi FX5U gleichzeitig lesen und schreiben?

Die ADPRW-Befehl kann pro Zeit nur mit einem Slave-Gerät kommunizieren. Wenn Sie mehrere Slaves abfragen müssen, müssen Sie mehrere Sätze von ADPRW-Befehlen im Programm verwenden und sicherstellen, dass nur eine Befehl gleichzeitig aktiviert ist. Die nächste Anweisung kann durch das Abschluss-Flag der vorherigen Anweisung ausgelöst werden, um eine serielle Abfrage zu implementieren. Typische Multi-Station - Polling-Zyklus = Anzahl der Stationen × (Anforderungszeit + Antwortzeit + Inter-Frame - Intervall).

F3: Wie beheben Sie den Fehler bei der Kommunikation von Delta MODRW-Befehl?

Zuerst überprüfen Sie, ob die Kommunikationsparameter (Bud-Rate, Check-Bit, Datenbit, Stop-Bit) übereinstimmen. Prüfen Sie dann, ob das A / B-Kabel des RS - 485 umgekehrt angeschlossen ist - dies ist das häufigste Hardwareproblem. Mit einem speziellen Register, das in der Delta PLC integriert ist, können Kommunikationsfehlercodes angezeigt werden. Stellen Sie schließlich sicher, dass die Zieldresse der MODRW-Befehl mit der tatsächlichen Adresse des Slaves übereinstimmt. Der COM2 - Anschluss der Delta-SPS ist standardmäßig Modbus-Sklaven - Modus, um als Master-Station zu verwenden, müssen Sie M1143 im Programm auf ON gesetzt haben.

Q4: Wie zuverlässig ist die HSBC H3U Free Port Programmierung für Modbus?

Die Freie-Port - Modbus-Kommunikation von UPM H3U ist sehr zuverlässig, wenn die Baudrate nicht mehr als 19.200 bps beträgt. Um die Stabilität der Kommunikation zu gewährleisten, wird empfohlen, die folgenden Mechanismen in das Programm zu integrieren: Timeout-Wiederversuch (empfohlen 3), CRC-Prüfungs - Ergebnisüberprüfung, empfangene Datenlänge-Prüf, Antwort-Adresse - Überprüfung (Bestätigung, dass die Antwort-Slaven - Adresse mit der Anforderung übereinstimmt) und Fehler-Zählung und Alarm nach einem Kommunikationsfehler. Bei groß angelegten Massenprojekten wird empfohlen, die HSBC AM600 - Serie (Codesys-Plattform) zu verwenden, deren Modbus-Funktionsblock ausgereift ist und stabiler ist.

F5: Wie löse ich das Byte-Sequenz - Problem mit 32 - Bit-Fließkomma - Zahlen in der Modbus-Kommunikation?

32 - Bit Fließkommazahlen werden in Modbus mit zwei aufeinanderfolgenden 16 - Bit-Registern übertragen, wobei die Byte-Sequenz vom Gerät bestimmt ist. Siemens und Schneider verwenden typischerweise die Big-Endian - Reihenfolge (Register N 16 Bits oben, N + 1 16 Bits unten), während Mitsubishi, Delta und Huichuan typischerweise die Little-Endian - Reihenfolge verwenden (Register N 16 Bits unten, N + 1 16 Bits oben). Die Lösung ist der Byte-Switch am Empfangseite: Siemens kann SWAP-Befehl verwenden, Mitsubishi kann SWAP-Befehl verwenden oder direkt Wörter-Switch verwenden, Delta kann XCH-Befehl verwenden, und HSBC kann Cyclic Shift verwenden.

Schlussfolgerung

Modbus-SPS - Programmierungist eine der Kernkompetenzen von Ingenieuren in der industriellen Automatisierung. Von der MB_MASTER-Befehl vonSiemens Modbus RTUanMitsubishi Modbus KommunikationDie ADPRW-Richtlinie, vonDelta PLC Modbusbis hin zu der Free-Port - Implementierung fürHSBC Modbus Programminghaben verschiedene Marken ihre eigene Designphilosophie und Best Practices. Die Beherrschung der Modbus-Kommunikationsfähigkeiten für markenübergreifende SPS ermöglicht nicht nur die Bewältigung verschiedener Projektanforderungen, sondern auch ein tiefes Verständnis für das Wesen industrieller Kommunikationsprotokolle.

Dieser Artikel ist ein wichtiges Kapitel in der Modbus-Technologie - Seriemodbus.cnund bildet zusammen mit anderen Artikeln auf der Plattform eine vollständige technische Architektur. Die Leser werden empfohlen, die folgenden Artikel zu lesen:

Der Weg zur industriellen Steuerung ist lang und lang. Möge dieser Artikel ein zuverlässiger Begleiter für Sie auf dem Weg zur Modbus-Programmierung sein.

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.