工控智汇

工控智汇

S7-200脉冲输出指令做电机正反转控制

admin 159 109

通过上次的学习,我们应该已经知道可以通过修改SM存储区(包括控制字节),然后执行PLS指令来改变PTO或PWM波形。除了前面学习的使用步骤和一些使用要点,我们还要知道的就是PTO状态字节的空闲位(或),它标志着脉冲输出完成。另外,在脉冲输出完成时,我们还可以利用脉冲发送完成中断,使程序跳转到中断服务程序进行执行。那么就补充这几点内容。下面我们做利用一个脉冲输出指令做电机正反转控制的例子。

主程序:



高速计数器子程序:



高速脉冲输出子程序:



中断程序:

我们首先先做一个高速计数子程序和脉冲输出子程序,在高速计数器子程序中,首先是定义控制字节,送1685到SMB67中定义控制字节,这里选择的是PTO模式、单段、1us/周期、装入周期和脉冲数的情况(控制字节的定义可以参考PTO/PWM控制字节表),并传送LW0到SMW68中写入周期值,传送LD2到SMD72中写入脉冲数,最后执行PLS指令。那么这样是做了一个带功能参数的子程序,之后在主程序中可以对这个带功能参数的子程序进行调用。

然后我们编写主程序,在主程序的网络一中,首先用首次扫描驱动高速计数器子程序进行高速计数初始化,同时对的过程映像区清零,同时也对高速脉冲输出进行初始化。在网络中,我们用的上升沿来驱动立即置位指令,立即置位,同时调用高速脉冲输出子程序,周期设为100us,脉冲为10000个,同时还要传送16B0到SMB67并执行HSC指令进行减计数并不更新当前值。那么就是说进入中断时会立即复位,电机反转,200us发10000个脉冲,同时高速计数器进行减计数。

那么对于这样一个例子,应用到了带参数的子程序调用、中断和高速计数器的内容,会不会比较难以理解呢,如果觉得有些模糊的话,可以回看一下前面中断和高速计数器的内容,这样可以加深印象呢。