PLC 有一个冷门但很实用的指令,你会用吗?
发布时间:
2025-10-30
不少做 PLC 运动控制的朋友,一提到步进电机驱动就犯怵 —— 要么担心启停卡顿,要么怕脉冲数控不准
不少做 PLC 运动控制的朋友,一提到步进电机驱动就犯怵 —— 要么担心启停卡顿,要么怕脉冲数控不准,总觉得得靠复杂的专用指令才能搞定。其实有个叫 PLS 的脉冲指令,早就把这些问题解决了,只是这些年随着 200SMART PLC 成为主流,它反倒成了很多人眼里的 “冷门指令”。
用 PLS 脉冲指令控步进电机,4 步就能搞定
PART 1
先设 PTO 控制字节:得先定好是用 “单段操作” 还是 “多段操作”,同时明确要不要更新运行时的频率或者输出的脉冲数量 —— 这一步是给 PTO 定 “工作规则”;
再填运行参数:要是选了单段操作,就把目标频率值和脉冲数加载进去,需要调整的话也在这步更新;要是用多段操作,就得先确定包络表的起始地址,再把每一段的起始频率、结束频率和脉冲数都填好;
选 PLS 指令通道:确定 PTO 输出要用到哪个端口,Q0.0、Q0.1、Q0.3 这三个端口都能用于 PTO 输出,根据实际接线选对应的通道就行;
最后触发 PLS 指令:得用一个上升沿信号来 “激活” PLS 指令,这样 PTO 才会按照之前设的参数,开始输出脉冲驱动电机。
2. 必看提醒:单段和多段操作,别选错了!
控制步进电机时,几乎都得选 “多段” 操作模式—— 为啥?因为步进电机正常转起来,肯定要经历 “加速→匀速→减速” 这三个过程,少了任何一个阶段,电机要么启动卡顿,要么停止时冲过头;只有那种特别简单的场景,比如只需要电机保持匀速转、不用加速减速,这时候才用 “单段” 操作模式。
3. PLS 指令的 “好搭档”:SM 存储单元怎么用?
PLS 指令本身没法单独干活,全靠跟 SM 存储单元 “配合”—— 它会读取指定 SM 单元里的数据,然后照着这些数据给 PTO 生成器 “发指令”,让 PTO 按要求输出脉冲。具体怎么配合,这些要点得记牢:
不同 PTO 通道对应不同的 SM 控制字节:SMB67 管 PTO0,SMB77 管 PTO1,SMB567 管 PTO2,千万别搞混;
关于 PTO 控制寄存器对应的 SM 单元,有个专门的参数表(表 1),看这张表就能快速搞清楚:要让 PTO 实现某个功能,得在 PTO/PWM 控制寄存器里填什么十六进制数,不用自己瞎琢磨;
要是想改 PTO 的运行效果,比如调快频率、改输出脉冲数,不用重新写程序 —— 只要改 SM 区域里的参数(包括控制字节),然后再执行一次 PLS 指令,新参数就能生效;
不管是让 PTO 出单段脉冲串,还是多段脉冲串,都得先把 PTO 控制字节(SMB67、SMB77、SMB567)的参数设好,这是 “前置条件”,没设好的话 PTO 根本不干活。

表 1 PTO/PWM 控制寄存器对应的 SM 单元参数
额外拆解:PTO/PWM 控制寄存器关键位的作用
这些位直接决定了 PTO 的运行方式,每个位的功能都得搞懂:
PTO/PWM更新频率/周期时间(对应 SM67.0、SM77.0、SM567.0):设 0 = 不更新当前频率 / 周期,设 1 = 需要更新频率 / 周期;
PWM更新脉冲宽度时间(对应 SM67.1、SM77.1、SM567.1):设 0 = 不更新脉冲宽度,设 1 = 需要更新脉冲宽度;
PTO更新脉冲计数值(对应 SM67.2、SM77.2、SM567.2):设 0 = 不更新脉冲数,设 1 = 需要更新脉冲数;
PWM时基(对应 SM67.3、SM77.3、SM567.3):设 0 = 时基为 1μs / 时标,设 1 = 时基为 1ms / 刻度;
SM67.4、SM77.4、SM567.4:这几位是保留位,没实际功能,不用管;
PTO单/多段操作(对应 SM67.5、SM77.5、SM567.5):设 0 = 单段操作,设 1 = 多段操作;
PTO/PWM模式选择(对应 SM67.6、SM77.6、SM567.6):设 0 = 选 PWM 模式,设 1 = 选 PTO 模式;
PWM使能(对应 SM67.7、SM77.7、SM567.7):设 0 = 禁用 PWM 功能,设 1 = 启用 PWM 功能。
另外要注意:如果用多段脉冲串,在执行 PLS 指令前,必须先把包络表的起始偏移量和包络表里的具体数值加载好。不同 PTO 输出口对应的参数 SM 单元不一样,表 2 列得很清楚,直接对照查就行:

表 2 不同 PTO 输出口对应的参数 SM 单元
实战演练:用 PLS 指令让步进电机精准转起来
PART 2
项目控制需求
驱动步进电机,要向电机驱动器输出 4000 个脉冲,而且电机运行必须完整包含 “加速→匀速→减速” 三个阶段,确保启动平稳、运行稳定、停止精准。
具体配置步骤
第一步:给 PTO 多段操作设基础参数
因为要走加速、匀速、减速,所以确定用多段操作模式,这时候要给两个关键 SM 单元赋值:
PTO 控制字节 SMB67 = 16#E0(对照表 1,这个值正好对应 “启用 PTO 多段操作”);
包络表起始地址 SMW168 = 500(意思是包络表从 V 存储区的 500 地址开始存数据)。
这些参数怎么写进 SM 单元里?靠 “首次扫描信号”(First_Scan_On,也就是 SM0.1)触发就行:
用 MOV_B 指令,把 16#E0 写入 SMB67(也就是 PLS0 的控制字节);
用 MOV_W 指令,把 + 500 写入 SMW168(PTO0 的包络表起始地址)。
2.第二步:配置包络表的分段参数
SMW168 定了包络表从 V500 开始,其中 VB500 这个单元是用来存 “运行段数” 的 —— 咱们要走 3 段,所以 VB500 得设成 3。另外,每一段的参数得符合电机运行逻辑:
加速段(第一段):起始频率要低、结束频率要高,这样电机才会慢慢加速,设为:起始频率 VD501=2000Hz,结束频率 VD505=10000Hz,脉冲数 VD509=200;
匀速段(第二段):频率保持不变,设为:起始频率 VD513=10000Hz,结束频率 VD517=10000Hz,脉冲数 VD521=3400;
减速段(第三段):起始频率高、结束频率低,让电机慢慢减速,设为:起始频率 VD525=10000Hz,结束频率 VD529=2000Hz,脉冲数 VD533=400。
这些参数也靠首次扫描信号写入,用 MOV 系列指令逐个赋值:
用 MOV_B 指令把 3 写入 VB500(设段数);
用 MOV_DW 指令把 + 2000 写入 VD501、+10000 写入 VD505、200 写入 VD509;
同样用 MOV_DW 指令,把 + 10000 写入 VD513、+10000 写入 VD517、3400 写入 VD521;
最后用 MOV_DW 指令把 + 10000 写入 VD525、+2000 写入 VD529、400 写入 VD533。
3.第三步:触发 PLS 指令,让电机转起来
把 PLS 的输出通道设为 0,再把 V0.0 设为 “使能信号”—— 等 V0.0 出现上升沿的时候,PLS 指令就会被触发,PTO 会按照咱们设的参数输出 4000 个脉冲,步进电机也就跟着完成 “加速→匀速→减速” 的完整运行过程了。
- END -
金石兴生态链
帮你解决就业顾虑,找到理想职业方向
谢谢关注

金石兴生态链
立即咨询
开启你的职业旅程
关键词:
相关新闻