autoagent studio · apps flyout → codesys assistant [1/2] 弹层菜单
应用online
AutoAgent Studio
— CODESYS 助手
CODESYS 助手 · 模块
持久化会话已就绪 Invtmatic Studio V3.0 · SP20 PID 14288 · watcher.py
工程 上料机.project · Application [PLC_PRG] IDE 已打开 persistent
会话get_codesys_status
CODESYS 运行中state: running · PID 14288
…\Invtmatic Studio V3.0.1.4\…\Common\Invtmatic Studio.exe
Invtmatic Studio V3.0
3f9c41ab-… · 21:04:07
%TEMP%/codesys-mcp-persistent/3f9c41ab/
执行模式--mode
persistent 复用同一 IDE 进程,单命令 <100ms;SP21+ 因 execute_on_primary_thread 被移除,必须切 headless。
50ms 让步 · 100ms→1s 退避60s
compile / 全量读码 = 120s · 冷启 = 180s
手动操作点击跳转对应模块
watcher 日志codesys-mcp · session 3f9c41ab
21:04:07› lazy launch: Invtmatic Studio V3.0 (persistent)…
21:04:34✔ ready.signal 已写入 · watcher.py 进入轮询
21:04:35› open_project 上料机.project
21:04:38✔ 工程已打开(1 设备 · 1 应用 · 26 POU)
21:05:02⧗ get_all_pou_code 全量读取 · 预算 120s
21:05:11✔ 26 个 POU 声明 + 实现已返回
21:06:20✘ compile_project: 3 error(s) — 见编译与下载
项目模板list_project_templates
▼▤Template Manager2
·≡Standard project
·≡Empty project
▼▤安装目录 Templates2
·▪Empty.project推荐
·▪Standard.project含占位 PLC
▶▤%ProgramData%/CODESYS0
归档create_project_archive
打开 / 新建工程open_project · create_project · save_project
templateName: Empty project ▾
ⓘ新建工程必须落在同名文件夹内:<目录>\<工程名>\<工程名>.project。父目录由 create_project 自动创建,无需先建文件夹。
false ▾
true ▾
strict ▾
⚠需要版本迁移的旧工程会被 projects.open 静默只读打开,之后任何保存都报「已在只读模式打开」——改用「另存副本」重基。
工程结构codesys://project/…/structure
▼🗂上料机.project
▼⚙DeviceSP20
▶▦PLCWinNT软 PLC
▼◐Plc Logic
▼⚙Application
·ƒPLC_PRGProgram
·▤FB_MotorFunctionBlock
·≡GVL_IOGVL
·▧ST_MotorStruct
·≡Library Manager3 库
·⧗Task ConfigurationT#20ms
工程树Application
▼⚙Application
▼ƒPLC_PRGST
·λInitMethod
·◫SpeedProperty
▼▤FB_MotorST
·↻IdleAction
·≡GVL_IOGVL
·▧ST_MotorDUT
·▧E_StateEnum
·▤SpoolFolder
新建对象create_pou · dut · gvl
FunctionBlock ▾
ST ▾
IEC 标识符 ≤32 字符;名称含 . 会被 CODESYS 拒绝。
代码编辑器 set_pou_code
Application/PLC_PRG · ST
1// 上料位检测 → 启停皮带
2IF GVL_IO.bPartReady AND NOT GVL_IO.bFault THEN
3 fbBelt(bEnable := TRUE, rSetSpeed := 1500.0);
4 GVL_IO.bBeltRun := fbBelt.bRunning;
5ELSE
6 fbBelt(bEnable := FALSE);
7 GVL_IO.bBeltRun := FALSE;
8END_IF
9
10// 段速跟随:主轴 → 从轴
11rRatio := LIMIT(0.0, GVL_IO.rSpeedTrim, 200.0) / 100.0;
⚠ 成功写入即自动落盘,IDE 的 Ctrl+Z 无法恢复
传空串是 no-op(该节保持不变);要清空某节须传单行占位,如 // cleared。
搜索与重命名search_code · find_references · rename_symbol
对象节行片段
Application/PLC_PRG实现3fbBelt(bEnable := TRUE, …)
Application/PLC_PRG声明3fbBelt : FB_Conveyor;
Application/FB_Motor实现18… := fbBelt.bRunning;
重命名(dryRun 预演)
→
rename_symbol 为文本级替换,两阶段「预演 → 应用」,默认 dryRun=true 不落盘。
任务配置create_task · assign_pou_to_task
程序 POU 只有被绑到任务才会运行;优先级 0 为最高。
设备树Device / Plc Logic
▼🖥DeviceSP20
▼⚙PLCWinNT软 PLC
▶▣EtherCAT_MasterTwinCAT
▶▣INVT_Ext_IO槽位:1
·⇄Modbus_COM1RTU
▶◐Plc Logic
▶⠿SoftMotion General Axis Pool
节点自省inspect_device_node
参数值
VendorINVT
Type4102
Id1631 0050
Version3.5.15.22
ChildCount3
设备仓库list_device_repository本机约 2,213 条
maxResults 128 / 共 2,213
名称vendordeviceTypedeviceIdversion
TM750INVT41021631 00503.5.15.22
TM760INVT41031631 00513.5.15.22
INVT_Ext_IO 8DIINVT42011632 00010
父节点
Device ▾
名称
version
加设备 = parent.add(name, type, id, version);version 必须是 Revision=16#XXXXXXXX 原文,短版号会失败。同型号多实例须自行 rename 唯一名。
IO 通道映射map_io_channel总线从站通道 / INVT 扩展模块通道
设备通道路径 channelPath方向变量名 variableName ✎状态
EtherCAT_MasterInputs/Byte 0/Bit 0输入已绑定
EtherCAT_MasterInputs/Byte 0/Bit 1输入已绑定
INVT_Ext_IO0/3 → host_parameters输出通道未解析
INVT_Ext_IO1/0输出待写入
⚠ 第 3 行:INVT 扩展模块的通道不在 get_children(),需从 connectors[i].host_parameters 取
ⓘ设备参数写入为实验性能力:大量现场总线参数仅存在于 GUI,工具会返回明确错误,不会静默失败。
登录connect_to_device
已登录运行时Gateway-1 · 0301.B0F7 · TCP 11740
Gateway-1 ▾
未设置 · 无鉴权运行时留空
登录按 网关扫描节点地址路由,而非 IP 编码形式;工具会先重扫地址再 login。
应用状态get_application_state
RUN已登录 · 无异常 ● 运行中
Application
仿真(simulation)
变量读写read_variable · write_variable · force_variable · release_force
=
变量路径(无 Application. 前缀)类型值状态
GVL_IO.bPartReadyBOOLTRUEFORCED
GVL_IO.rSpeedTrimREAL100.0在线
GVL_IO.s.aRoi[0].fieldINT12在线
PRG.stMotor.rRateLREAL—未解析
写值走 set_prepared_value + force_prepared_values,变量会保持强制直到解除强制或运行时重启。
变量监视monitor_variablesduration ≤ 60s · interval ≥ 10ms
ms
ms
GVL_IO.rSpeedTrim fbBelt.rSpeed 3.5s / 10s · 35 采样
采样时长上限 60s、间隔下限 10ms;超限由服务端夹取,不报错。
断点set_breakpoint
库引用list_project_libraries
▼≡Library Manager3
·▪Standard*
·▪Util3.5.20.0
·▪SM3_Basic4.17.0.0
添加库add_library
必须与 Library Manager 中显示的完整占位符一致;Util 这类裸名会报 could not be resolved。
符号配置configure_symbols生成的配置对象固定名为 Symbols
ReadWrite ▾
配置后需重新编译才会生成签名(get_all_signatures(compile=True))。
持久变量create_persistent_vars脚本引擎无 create_persistent_* 入口
PERSISTENT RETAIN ▾
变量类型初值
iCycleCountDINT0
rLastSpeedREAL0.0
写 VAR_GLOBAL PERSISTENT RETAIN 后编译会自动生成 PersistentVars;需再 set_pou_code 写实例路径才能消除告警。

SoftMotion

CAM 凸轮表与轴组均为非文本对象,走原生 StructuredView 往返读写 覆盖写入会弹模态导入冲突框
CAM 凸轮表list_cam_tables
▼⚙Application
·◔Cam_FlyKnife.cam
·◔Cam_Feeder.cam
轴组list_axis_groups
▼⚙Application
·◍AG_Gantryid 1
·◍AG_Pickerid 2
CAM 表与轴组对 search_code / get_all_pou_code 不可见。
CAM 点表get_cam_table / set_cam_tableCam_FlyKnife · periodic
MasterSlave段五阶多项式 coeff0X
0.00.0S1base64(<6d)…
90.0120.0S2base64(<6d)…
180.0360.0S3base64(<6d)…
270.0240.0S4base64(<6d)…
只改 <Points> 时 CODESYS 不会重算 <Segments>——set_cam_table 会自行求解并同时写入每段的五阶多项式。
轴组运动学set_axis_group_kinematicsAG_Gantry
TRAFO.Kin_Gantry2 ▾
MainTask ▾
轴名映射 axes校验
XAxis_X✔
YAxis_Y✔
Z(空)⚠ 该运动学需 2 轴
verifiedByReadback: true
覆盖写入会触发 模态导入冲突对话框,命令超时但改动已落盘——工具以「读回确认」判定成功并返回 verifiedByReadback;只有无法确认才报错。
Trace 列表list_traces
▼⚙Application
·∿Trace_Speed8 变量
·∿Trace_IO12 变量
记录设置get_trace
MainTask · T#20ms
true ▾
无脚本属性 · 仅告警
无脚本属性 · 仅告警
Trace 是唯一有真 create API 的非文本对象,因此不触碰 import_native,也不会弹模态框。
新建 / 配置 Tracecreate_trace创建与配置必须一次完成
MainTask ▾
RISING ▾
配置 API 只存在于 create 返回的对象上;树上的已有 Trace 节点没有这些方法。同名 create 会静默返回空对象,改已有 Trace 只能「先删后建」(GUID 会变)。
示波变量set_trace_variablesTrace_Speed · 8 变量
变量名颜色图形类型 graphType可见解析
fbBelt.rSpeed■ cyanCURVES✔已解析
GVL_IO.rSpeedTrim■ amberLINES✔已解析
PRG.stMotor.rRate■ greenSTEPS✔⚠ 未解析到对象
GVL_IO.bFault■ redPOINTS✔已解析
图形类型按 名字传入(CURVES / LINES / STEPS / POINTS)——本构建的序数既非字母序也非界面顺序。未解析的变量 CODESYS 会接受但采不到数据,仅返回告警。
目标应用compile_project
·☑ApplicationRUN
·☐Visualization—
·☐SoftMotion—
Application · 192.168.0.10 · SP20
下载动作download_to_device
auto ▾
120s
在线控制编译 → 下载 → 上线
编译中 68%
编译消息get_compile_messages结构化 · 含 object / line
级别对象行消息
errorApplication/FB_Motor42C0032: 无法解析标识符 'rSetpoint'
errorApplication/PLC_PRG17C0032: 无法解析标识符 'E_State.Running'
errorApplication/GVL_IO6C0187: 数据类型 'ST_Motor' 未定义
warningApplication/FB_Motor—C0198: 形式参数 'rSetSpeed' 在运行时未赋值
3 error · 1 warning
编译 / 下载日志Application · 全部块
21:06:14› 开始编译 Application · 26 个 POU
21:06:19✘ 编译失败 · 3 error 1 warning
21:06:19 ⚠ FB_Motor: 形式参数在运行时未赋值
21:06:19 ℹ 消息类别由 system.get_message_categories() 动态枚举
21:07:02› 修正后重新编译…
21:07:08✔ 编译完成 · 0 错误 1 警告
21:07:12› download_to_device 192.168.0.10 · mode: auto
21:07:16✔ 下载完成 · Boot Application 已创建
● codesys-mcp-persistent 67 tools · 3 resources %TEMP%/codesys-mcp-persistent/3f9c41ab/ · watcher.py