工业网络通信协议集 —— 微内核 + 协议 SDK 架构,覆盖 40 种工业协议,兼容 6 种 PHP 运行时环境
PHP 工业网络通信协议集 —— 微内核 + 协议 SDK 架构,覆盖 40 种工业协议,兼容 6 种 PHP 运行时环境。
English
目录
项目简介
Industrial Protocols 是一个面向 PHP 生态的工业通信协议集,采用 微内核 + 协议 SDK 架构。40 个协议包(15 个纯 PHP 实现 + 25 个 Bridge 桥接),每个包都是独立 GitHub 仓库和 Composer 包,通过 Packagist 按需安装。
核心理念: 内核只定义「协议是什么」,不包含任何具体协议实现。用户按需安装协议包,内核启动时通过 composer.json 的 extra 字段自动发现并注册。
1
| composer require erikwang2013/industrial-protocols-kernel erikwang2013/industrial-protocols-modbus
|
架构概览
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| ┌─────────────────────────────────────────────────┐ │ User Application │ ├─────────────────────────────────────────────────┤ │ Framework Adapters: Laravel · Webman · Hyperf │ │ ThinkPHP · Yii2 · Plain PHP │ ├─────────────────────────────────────────────────┤ │ Micro-Kernel │ │ ProtocolRegistry · ConnectionManager(3策略) │ │ ConfigRepository · GatewayEngine · CircuitBreaker│ │ CoroutineAdapter · Bridge Layer · Vendor Profiles│ │ Event System(PSR-14) · Log(PSR-3) · Retry(4种) │ │ Metrics(Prometheus) · Alert · Security · Exception│ ├─────────────────────────────────────────────────┤ │ Protocol SDK (6 Core Interfaces) │ ├─────────────────────────────────────────────────┤ │ 40 Protocol Packages: 15 Pure PHP + 25 Bridge │ └─────────────────────────────────────────────────┘
|
所有协议包
工业以太网(5)
现场总线(12)
IoT/消息(2)
汽车总线(5)
楼宇/照明(2)
硬件桥接(11)
系统总线(3)
支持的框架
| 框架 |
检测方式 |
协程 |
集成方式 |
| Plain PHP |
默认回退 |
Fiber |
Kernel 实例化 |
| Laravel |
Illuminate\Foundation\Application |
Octane Swoole |
ServiceProvider + Facade + artisan |
| Webman |
Workerman\Worker |
Swoole/Fiber |
config/plugin 自动发现 |
| Hyperf |
Hyperf\Framework\ApplicationFactory |
Swoole 原生 |
ConfigProvider + DI |
| ThinkPHP |
think\App |
think-swoole |
services.php + 单例 |
| Yii2 |
yii\base\Application |
swoole-yii2 |
Bootstrap + 组件 |
检测优先级:Laravel → Webman → Hyperf → ThinkPHP → Yii2 → Plain PHP
快速开始
1
| composer require erikwang2013/industrial-protocols-kernel erikwang2013/industrial-protocols-modbus
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <?php require 'vendor/autoload.php';
use Erikwang2013\IndustrialProtocols\Kernel; use Erikwang2013\IndustrialProtocols\Modbus\ModbusProtocol;
$kernel = new Kernel(['config_path' => __DIR__ . '/industrial-protocols.php']); $kernel->getProtocolRegistry()->register(new ModbusProtocol()); $kernel->boot();
$conn = $kernel->getConnectionManager()->connect('plc-001'); $result = $conn->read('40001'); echo $result['40001'];
$conn->write(['40001' => 25]);
$health = $kernel->getConnectionManager()->health('plc-001'); echo "{$health->state->value}, {$health->latencyMs}ms";
$kernel->shutdown();
|
配置参考
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?php return [ 'devices' => [ 'plc-001' => [ 'protocol' => 'modbus', 'variant' => 'tcp', 'host' => '192.168.1.10', 'port' => 502, 'unit_id' => 1, 'timeout' => 3000, ], ], 'gateway' => ['rules' => []], 'health_check_interval' => 30, 'default_retry_max' => 3, 'default_retry_backoff' => 'exponential', ];
|
文档
系统要求
License
MIT — Copyright (c) 2026 erik erik@erik.xyz — https://erik.xyz