EtherCrab -- 一个用 Rust 编写的 EtherCAT 主站
什么是 EtherCAT
EtherCAT 名称的由来是:Ethernet for Control Automation Technology,也就是用于控制自动化技术的以太网协议技术,其实也就是工业以太网的一种。EtherCAT 是倍福公司旗下的 ETG( EtherCAT 技术协会)负责研发并推广的一种实时以太网技术,它是一种开放的网络协议,可以进行主从设备之间的通信。通过主从系统架构进行控制。主站发送“目标数据”,从站接收目标数据并写入“实际数据”。目标数据可以是用于有源设备(执行器)的控制指令,以便执行特定的动作,例如设置电动机的转速。另一方面,实际数据表示来自被测设备(传感器)的有关各种状态(例如当前位置,转速或温度)的信息。
EtherCAT 主站是做什么的
EtherCAT 主站组装 EtherCAT 数据报,然后通过所有连接的从站发送它们。EtherCAT 的特殊之处在于,在通过过程中,每个从站都将从循环数据报中取出其特定目标数据,同时将自己的实际数据放入数据报中。所有不打算用于从站的剩余数据都将原封不动地转发。数据报经过所有从站后,它会返回并由主站接收。即使对于大量互连的 EtherCAT 从站,此过程也非常快捷,因为单个从站的通过延迟仅为几纳秒。
而 EtherCrab 就是用 rust 编写的 EtherCAT 主站。目前 EtherCrab 正在招募赞助商
- https://github.com/ethercrab-rs/ethercrab
RuSTy -- 一个用 Rust 编写的结构化文本编译器
RuSTy 是用 Rust 编写的结构化文本 (ST) 编译器,基于 LLVM 编译器后端。使用 logos crate 库在自定义解析器运行之前执行词法分析。RuSTy 通过翻转命令行标志来输出静态或共享对象以及 LLVM IR 或位码。作者的目标是打造至少支持第 2 版 IEC 61131 标准中的功能的开源工业级 ST 编译器。
- https://github.com/PLC-lang/rusty
- https://plc-lang.github.io/rusty/
- https://plc-lang.github.io/rusty/build_and_install.html
Cnosdb 的 Rust 教学
- 课程主题:内存布局
- 内容概览:Struct内存布局,成员顺序优化,enum内存布局等
-