机器专家编程 Skill(Schneider Machine Expert · ST 为主)
Overview
本 skill 把施耐德 EcoStruxure Machine Expert 的专用库、项目结构、命名规范、ST 编程模式
固化成可复用知识,并约定如何通过 esme-machine-expert MCP 把代码真正写进工程。
核心目标:让 WorkBuddy 在 Machine Expert 里编程时,默认用施耐德那一套,而不是套用
通用/CODESYS 通用库或凭空编造库名。机器专家基于 CODESYS,但施耐德在系统库之上叠加了
应用库(运动控制、通信、可视化等),这些才是"正确写法"。
何时使用
- 用户要求编写、改写、审查 Machine Expert 中的 PLC 程序(ST 为主)。
- 用户提到"用机器专家""施耐德 PLC""TM 系列/Logic 控制器"等。
- 需要把一段通用 PLC 逻辑改成施耐德正确实现。
- 涉及 Modbus / Modbus TCP / 串口自由口(RS232、RS485 ASCII)通讯时,应使用施耐德
PLCCommunication 库(命名空间 SEN),详见references/plc-communication.md。 - 涉及时间同步 / SNTP / NTP / RTC 校时 / UTC 对齐时,应使用施耐德
TimeSync 库(命名空间 TIMS),详见references/timesync.md。 - 选型为 TM241 系列 PLC 且需要高速计数 / 编码器 / 频率计 / 周期计 / 比较输出 / 捕捉时,应使用
施耐德 M241 HSC 库(HSCMain_M241/HSCSimple_M241+EXPERT*管理块),
详见references/hsc.md。 - 选型为 TM241 系列 PLC 且需要高速脉冲输出 / 步进/伺服开环定位 / PTO 单轴运动时,应使用
施耐德 M241 PTOPWM 库(MC_xxxx_PTO系列功能块),详见references/ptopwm.md。 - 需要通过 MCP 在已连接的 Machine Expert 工程里建 POU、写代码、编译、下载。
核心原则(必须遵守)
- 先查库,再写码。 永远先用 MCP 的库查询工具(
find_library/
find_library_element/read_libraries_in_project)确认当前工程里真实存在的
施耐德库名、功能块名、数据类型名,绝不凭记忆臆造标识符。 - 优先施耐德/应用库,而非通用库。 运动控制用 SMC 系列库、通信用施耐德通信库、
可视化用 Visu 库等(具体清单见references/libraries.md,按工程实际补充)。 - 遵循 IEC 61131-3 与机器专家工程结构。 POU 类型(Program / Function / Function Block)、
DUT、GVL 的划分与命名见references/coding-standards.md。 - 写完即编译验证。 用
compile_app确认无错,再考虑login_and_download。
实操流程(结合 MCP)
按以下顺序操作,细节见 references/mcp-workflow.md:
- 确认连接:调用
is_host_connected/discover_tools确认 MCP 可用、工具清单已知。 - 定位工程与控制器:
list_controllers_and_applications找到目标应用;
set_active_application设为活动;必要时list_online_devices查看在线设备。 - 查正确的库/元素:
find_library_element(按功能关键字,如 "MC_MoveAbsolute"、
"Modbus")确认施耐德库与确切名称;read_help读取该元素的帮助/参数签名。 - 建结构:按需要在应用下
create_folder、create_pou(Program/FB/FUN)、
create_udt、create_interface、create_method、create_property。 - 写 ST 实现:
write_declaration_and_implementation写入变量声明 + ST 主体,
引用第 3 步确认过的施耐德库与类型。常见 ST 模式见references/st-patterns.md。 - 编译校验:
compile_app;若有报错,读取错误后在对应 POU 修正,再次编译。 - (可选)下载/测试:
login_and_download下载到控制器;run_all_unit_tests/
run_specific_test跑单元测试;save_project保存。
> 读取/复用既有代码时,用 read_project_element、find_project_element、find_in_code、
> most_used_code、most_complex_code;重命名/移动用 rename_project_element /
> move_project_element。
参考资料
按需加载,避免一次性占满上下文:
references/libraries.md— 施耐德专用库 vs 通用库对照,按任务域列出应优先使用的库
(运动控制 / 通信 / 可视化 / 系统),并标记待用户补充的具体库名。references/plc-communication.md— PLCCommunication 库(命名空间 SEN)详解:做
Modbus / Modbus TCP / 串口自由口(RS232/RS485 ASCII)通讯时使用,含 6 个功能块参数、
数据类型、ADDM 地址字符串格式与 ST 示例。references/timesync.md— TimeSync 库(命名空间 TIMS)详解:做时间同步 / SNTP / NTP /
RTC 校时使用,含 FB_SntpClient、FC_EtResultToString、枚举(ET_ComMode / ET_Result)、
结构(ST_TimeRequest / ST_TimeResponse)、全局常量与完整 ST 示例。references/hsc.md— M241 HSC 高速计数库详解:TM241 选型且用高速计数 / 编码器 / 频率计 /
周期计 / 比较输出 / 捕捉时使用。含计数器类型↔功能块映射(Simple→HSCSimple_M241、
Main/频率/周期→HSCMain_M241)、实例名称规则、HSCMain_M241 / HSCSimple_M241 引脚、
EXPERT* 管理块(诊断/参数/捕捉/即时值)、枚举与完整 ST 示例。references/ptopwm.md— M241 PTOPWM 高速脉冲输出库详解:TM241 选型且用 PTO 控制步进/
伺服、高速脉冲输出、单轴定位时使用。含 PTO 功能块分类(MC_Power_PTO、MC_MoveAbsolute_PTO、
MC_MoveRelative_PTO、MC_MoveVelocity_PTO、MC_Home_PTO、MC_Stop_PTO、管理块)、
实例名称规则(PTO_0…PTO_3 由硬件配置自动生成,不要重复声明)、常用引脚表、枚举
(MC_BUFFER_MODE / MC_DIRECTION / PTO_HOMING_MODE / PTO_PARAMETER / PTO_ERROR)与完整 ST 示例。
含「使能只需一处、不要在运动 FB 内部嵌套调用 MC_Power_PTO」的约定与直接调用库功能块的示例。
铁律:所有 PTO/PWM 功能块均来自 SEC_PTOPWM 库,一律用完整限定名SEC_PTOPWM.MC_xxxx_PTO,
不封装自定义 FB、不调用同名其它库。references/pto_sr_main_example.md— 完整可直接套用的 SR_Main 范例:使能(MC_Power_PTO) →
回原点(MC_Home_PTO) → 错误复位(MC_Reset_PTO) → 相对定位(MC_MoveRelative_PTO) → 受控停止(MC_Stop_PTO),
全部SEC_PTOPWM.MC_xxxx_PTO直接实例化调用,含JerkRatio1/2/3/4正确用法与 Stop 只有 JerkRatio1/2 的提示。references/coding-standards.md— 工程结构、POU/DUT/GVL 命名规范、变量声明约定。references/st-patterns.md— ST 常用语法与可复用代码模式(时序、状态机、边沿检测等)。references/mcp-workflow.md—esme-machine-expertMCP 各工具的职责与典型调用顺序。references/mcp-connection.md— WorkBuddy ↔ Machine Expert 连接 Runbook:施耐德内部
Motion Remote Interfaces HTTP MCP Server、探测器脚本、动态端口、配置文件mcp.json(非.mcp.json)、
一键注册脚本与排错速查。这是使用本 skill 所有 MCP 工具的前置条件。references/full-project-example.md— 端到端工程范例:一个 TM241CEC24T 工程从建工程到
Modbus 轮询 / RTC 读时钟 / PTO 相对定位 / 编译保存的完整可对照链路。
注意事项
- 机器专家工程是 CODESYS 内核,但不同控制器(M2xx / M3xx / 软逻辑)支持的库可能不同,
务必以find_library_element在当前工程的实际结果为准。 - 不要假设通用 CODESYS 库名直接可用;若工程未加载某施耐德库,用
load_or_unload_library
加载后再引用。 - 本 skill 的库清单为框架性质,用户应在
references/libraries.md中持续补充其项目实际
使用的施耐德库名与版本,使后续编程更精准。 - 用 MCP 修改已有代码时,切勿"读回→原样写回":
read_project_element返回的中文注释
编码会被 MCP 侧破坏,原样写回会把乱码固化进工程。正确做法见
references/mcp-workflow.md的"修改已有代码的中文乱码陷阱"。
版本历史(Changelog)
v1.1.0 (2026-08-03)
- 新增
references/mcp-connection.md:WorkBuddy ↔ Machine Expert 连接 Runbook。涵盖施耐德内部
"Motion Remote Interfaces" HTTP MCP Server、探测器脚本、动态端口、配置文件mcp.json(非.mcp.json)、
一键注册脚本与排错速查。 - 新增
references/full-project-example.md:TM241CEC24T 工程端到端范例(建工程 → Modbus 轮询 →
RTC 读时钟 → PTO 相对定位 → 编译保存),把各 reference 串成可套用链路。 references/timesync.md:新增「直接读取 PLC 时钟(SysTimeRtcGet)」节,补充不依赖 SNTP 的轻量读
时钟方案(含 UTC→本地分解代码与 VAR_IN_OUT / 类型转换陷阱)。references/mcp-workflow.md:新增踩坑 #5(无参 MCP 工具必须以{}调用)。references/ptopwm.md:补充「用 MCP 确认 PTO 实例」实操要点(v1.0.x 已补)。- 明确 MCP server 实际名
schneider-machine-expert(工具前缀mcp__schneider-machine-expert__)。