从梯形图迁到 ST:GX Works3 里结构化文本的三个注意点
✦
← 三菱知识库

从梯形图迁到 ST:GX Works3 里结构化文本的三个注意点

楼主:超级管理员 · 2026-11-01 12:05 · 浏览 33

GX Works3 ST语言 结构化文本
超级管理员 楼主

从梯形图迁到 ST:GX Works3 里结构化文本的三个注意点

梯形图直观,但复杂逻辑写起来又长又难维护。三菱的 GX Works3 支持 ST(结构化文本),适合处理运算、循环、状态机这类梯形图不擅长的场景。迁移时有几个坑值得提前知道。

第一,扫描周期的影响不一样

梯形图是每个扫描周期顺序执行全部逻辑,ST 里如果写了 FOR 循环,循环体内的执行时间会直接加到扫描周期上。一个 1000 次的循环里有复杂运算,扫描周期可能从 5ms 涨到 20ms,定位控制就会失步。

解决办法:把重计算放到低速任务里,或者拆成状态机分多个周期执行。别在高速任务里写大循环。

第二,变量声明的作用域要理清

ST 的变量有局部和全局之分。在 FB(功能块)内部声明的是局部变量,每次调用独立;在全局变量表里声明的是全局。混用会导致「改了这里那里也变了」的诡异问题。

建议:FB 内部一律用局部变量,需要外部读写的用 VAR_INPUT / VAR_OUTPUT 显式声明。别图省事全用全局。

第三,数据类型不匹配会静默出错

梯形图里 MOV 指令搬数据不看类型,16 位和 32 位混着来也能跑,只是结果可能不对。ST 里类型检查更严,但隐式转换仍然存在。比如 INT 除以 INT,结果是 INT,小数部分直接丢掉。

涉及长度、速度、位置的计算,统一用 REAL。涉及计数器的用 DINT。别让编译器替你猜。

迁移策略

不要整段重写。先把最复杂的那几个功能块用 ST 重写,验证无误后再逐步扩大。梯形图和 ST 在同一个项目里可以混用,按块选择最合适的语言。

调试

GX Works3 支持在 ST 里设断点和单步。用起来比梯形图的在线监视舒服,尤其是嵌套逻辑。学会用这个,排查效率能翻倍。

从梯形图迁到 ST:GX Works3 里结构化文本的三个注意点 示意图


本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。

褚鹏

扫描周期的差别最容易踩,ST 里写个千次循环,扫描周期从 5ms 涨到 20ms,定位控制直接失步。重计算必须放低速任务,或者拆成状态机分多个周期执行。

路人0656

扫描周期这条是血泪。我第一次把一段排序算法直接搬进 ST,循环两千次,周期从 6ms 涨到 45ms,伺服直接跟随误差报警。后来拆成每周期处理二十个元素的状态机才恢复正常,重计算一定要切片。

路人1002

补一个坑:ST 里的定时器不能像梯形图那样直接 OUT T0 K100,得用 TIMER 结构体或专门的 FB,很多老师傅第一次迁就卡这。另外 IF 嵌套深了 GX Works3 编译不报错但扫描周期会跳,建议挪到低速任务,别和定位轴放同一个程序块。

登录 后参与回复