erikwang2013/industrial-protocols-modbus

There is no license information available for the latest version (v1.1.3) of this package.

Modbus TCP/RTU/ASCII 协议包 — 支持 FC 01/03/04/06/10,纯 PHP Socket 实现

Maintainers

Package info

github.com/erikwang2013/industrial-protocols-modbus

Type:industrial-protocol

pkg:composer/erikwang2013/industrial-protocols-modbus

Transparency log

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v1.1.3 2026-08-02 07:31 UTC

This package is auto-updated.

Last update: 2026-08-02 07:34:48 UTC


README

English

Modbus 工业以太网协议,纯 PHP Socket 实现,支持 TCP/RTU/ASCII 三种变体,FC 01(读线圈)、03(读保持寄存器)、04(读输入寄存器)、06(写单寄存器)、10(写多寄存器)。

安装

composer require erikwang2013/industrial-protocols-modbus

架构

实现 6 个核心 SDK 接口:ProtocolInterface、ConnectorInterface、DriverInterface(TCP+RTU 双驱动)、FrameInterface(Request+Response 双帧)。通过 composer.json 的 extra.industrial-protocols.protocol 自动注册到内核。

功能

Modbus TCP 驱动(端口 502,FC 01/03/04/06/10)、Modbus RTU 驱动(串口,CRC16 校验)、地址格式解析(40001-49999 保持寄存器 / 30001-39999 输入寄存器 / 0-9999 原始偏移)、批量读写、健康检查、ModbusException 分层异常(fromErrorCode 工厂方法)

使用说明

$kernel = new Kernel(['config_path' => __DIR__ . '/config.php']);
$kernel->getProtocolRegistry()->register(new ModbusProtocol());
$kernel->boot();

$conn = $kernel->getConnectionManager()->connect('plc-001');
$result = $conn->read('40001');              // ['40001' => 42]
$conn->write(['40001' => 25]);               // 单寄存器写入
$conn->write(['40001', '40002'], [100, 200]); // 批量写入

配置示例

'devices' => [
    'plc-001' => [
        'protocol' => 'modbus', 'variant' => 'tcp',
        'host' => '192.168.1.10', 'port' => 502,
        'unit_id' => 1, 'timeout' => 3000,
    ],
    'plc-rtu' => [
        'protocol' => 'modbus', 'variant' => 'rtu',
        'device' => '/dev/ttyUSB0', 'baud_rate' => 19200,
        'parity' => 'N', 'data_bits' => 8, 'stop_bits' => 1,
        'unit_id' => 1,
    ],
],

兼容框架

Laravel / Webman / Hyperf / ThinkPHP / Yii2 / Plain PHP

系统要求

  • PHP >= 8.1
  • Composer
  • erikwang2013/industrial-protocols-kernel

License

MIT — Copyright (c) 2026 erik erik@erik.xyzhttps://erik.xyz