🦀 Rust 实现三菱 PLC MC 协议(二进制 3E 帧)通信
最近我写了一个用 Rust 实现三菱 PLC MC 协议 3E 帧(二进制格式)通信的库,支持 bit/word 的读写。
📦 项目地址:tokio-mc GitHub 仓库
✅ 支持特性
- ✅ 支持三菱 3E 协议(二进制格式)
- ✅ 支持读写位(bit)/字(word)数据等数据
- ✅ 支持异步(基于 tokio)
- ✅ 支持 Keyence 和 Mitsubishi PLC(仿三菱通信)
- ✅ 提供模拟服务器,方便测试
- ✅ 架构参考 tokio-modbus,面向通用 PLC 通信而设计
🔧 架构设计与扩展性
该库使用模块化结构设计,底层通信解耦,后续可以轻松支持其他品牌 PLC(如松下):
- 通信帧编码器/解码器可插拔
- 寄存器地址支持抽象封装
👉 计划支持目标:
- 松下 PLC 通信适配
- 扩展支持 ASCII 格式帧
- 提供 Python / C# / C++ FFI 调用封装
🚀 快速上手
use tokio_mc::{
client::tcp::*,
frame::Model,
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut context = connect("127.0.0.1:5000".parse()?).await?;
context.set_plc_model(Model::Mitsubishi); // or Model::Keyence
// 写入 word 数据
context.write_u8s("D100", &[0x12, 0x34]).await?;
// 读取 bit 状态
let bits = context.read_bits("M0", 8).await?;
println!("Bits: {:?}", bits);
Ok(())
}
Rust 在工业控制方向几乎没看到有三菱通信协议的实现(Modbus 倒是很多)
想做成一个 跨平台 + 跨语言 的通用 PLC 通信库,提供 FFI(Python/C#/C++)接口。
🎯 项目初衷 -为工业自动化通信打造一个高性能、高可扩展性的通用库
-填补 Rust 在 PLC 通信协议方面的空白
💬 欢迎交流 如果你从事工业控制、PLC 通信、异步架构或希望参与开源协议栈的开发,欢迎:
🔧 issue / PR
🌟 Star 支持
🧵 参与讨论
1
共 0 条评论, 1 页
评论区
写评论还没有评论