关于官方一个pwm的问题。

分享到:
267
下一篇 >

菜鸟:

背景

使用手工编程,也就是pls指令,发pwm脉冲。

过程

当一个脉冲正在处于高电平的时候,执行禁止脉冲(sm67.7=0)然后执行pls指令,脉冲会停止,停止后处于低电平状态。

问题1

当这个脉冲高电平出现很短很短时间后,就被终止了。那么这个很短很短的窄脉冲宽度会是有多少?

问题2

这个窄脉冲是否会被0.2微秒滤波时间的高速计数器捕捉到?

这是我实验里面的一个重要环节。

我用pwm发脉冲给伺服。然后用接线方式,高速计数器捕捉pwm数量。使得程序可以知道pwm和伺服走了多少。(请不要告诉我使用库,我有我理由证明库达不到我的使用要求。)

现在现象是,我用不固定的逻辑(中断程序)使能脉冲然后又禁止脉冲。脉冲的宽度是毫秒级的,一定不快。偶尔,伺服的命令脉冲读数比plc程序里面的高速计数器多了1个脉冲。反复不断地使能禁止,使能禁止,只会发现伺服收到的脉冲逐渐比高速计数器的增多。

为了回避一些问题,我也做了另外一种实验。pwm波周期4微秒,宽度2微秒,一直发了十几秒钟。结果高速计数器的读数跟伺服的读数一致,从而反应线路可以承受高频的通过,不会发生误差。

然而,却在一个毫秒级的脉冲串当中,竟然出错了。

我已经没有什么可以怀疑了。只剩下这个“窄脉冲”的问题没法解释。

我的设想

假如这样的一个窄脉冲真实存在,而伺服的带宽是相当的宽的,这个脉冲被伺服接收了,而高速计数器没有反应,就会出现这样的结果。

上个程序吧。

旋转编码器AB相接到hc0

高速输出是q0.0

Q0.0反馈到I0.3

现在hc0是工作在0模式为了只得到单向的脉冲。

正常工作的话把0模式改成9模式就可以驱动伺服做手轮动作了。0模式的话,手轮正转,电机正转,手轮反转,电机还是正转。

还有一个问题。

正在发脉冲的时候,改变脉宽和周期,执行pls指令,那么当前脉冲是同步更新还是异步更新的?

如果是异步更新的话,这里又出现“窄脉冲”了。


斑竹:


芳侠,关于PWM的同步或异步更新,在200的手册里有描述,但不知道200SMART是否也采用同样的更新机制。

游民:还有这款PLC中断里发脉冲怎么发? 这个用来控制伺服是个难题啊。比200差多了

菜鸟:

可惜smart已经没有了这两个位了。所以不知所以。


你可能感兴趣: 工控菜鸟园 图片 自动化系统 SIMATIC S7-200 SMART 计数器
无觅相关文章插件,快速提升流量