产品应用

当前分类:

教你一招!S7-200脉冲输出指令做电机正反转控制

主程序:

 

高速计数器子程序:

 

高速脉冲输出子程序:

 

中断程序:

 

先做一个高速计数子程序和脉冲输出子程序,在高速计数器子程序中,定义控制字节,送16#F8到SMB37,为加计数更新当前值,传送0到SMD38写入初始值,高速计数器HSC0和HSC模式12,激活高速计数器,高速计数器中断,PTO0完成中断的事件为中断事件号19,建立中断程序0和中断事件19的中断连接,并全局允许中断。


高速脉冲输出子程序里面,接口定义周期io_time为LW0,为IN类型的,定义脉冲数io_NO为LD2,也是为IN类型的,写子程序。首先传送16#85到SMB67中定义控制字节,选择PTO模式、单段、1us/周期、装入周期和脉冲数的情况,传送LW0到SMW68中写入周期值,传送LD2到SMD72中写入脉冲数,执行PLS指令。带功能参数的子程序,在主程序中对这个带功能参数的子程序进行调用。


编写主程序,先用SM0.1首次扫描驱动高速计数器子程序进行高速计数初始化,对Q0.0的过程映像区清零,对高速脉冲输出进行初始化。在网络中用I0.2的上升沿来驱动立即置位指令,置位Q0.2,调用高速脉冲输出子程序,周期设为100us,脉冲为10000个,传送16#F8到SMB37并执行HSC指令进行加计数并更新当前值。接通I0.2时,会在I0.2的上升沿立即置位Q0.2,电机正转,100us发10000个脉冲,高速计数器进行加计数。建立了脉冲完成中断,当脉冲发生完成时,会进入到中断程序进行执行。


中断程序中编写反转的控制,原来是正转,Q0.2是接通的,用Q0.2的常开触点来驱动立即复位指令,立即复位Q0.2,调用高速脉冲输出子程序,周期设为200us,脉冲为10000个,传送16#B0到SMB67并执行HSC指令进行减计数并不更新当前值。进入中断时会立即复位Q0.2,电机反转,200us发10000个脉冲,同时高速计数器进行减计数。


返回列表