S7-200脉冲输出指令做电机正反转控制
关注“PLC发烧友”,一起涨知识!
通过上次的学习,我们应该已经知道可以通过修改SM存储区(包括控制字节),然后执行PLS指令来改变PTO或PWM波形。除了前面学习的使用步骤和一些使用要点,我们还要知道的就是PTO状态字节的空闲位(SM66.7或SM76.7),它标志着脉冲输出完成。另外,在脉冲输出完成时,我们还可以利用脉冲发送完成中断,使程序跳转到中断服务程序进行执行。那么就补充这几点内容。下面我们做利用一个脉冲输出指令做电机正反转控制的例子。
主程序:
高速计数器子程序:
高速脉冲输出子程序:
中断程序:
我们首先先做一个高速计数子程序和脉冲输出子程序,在高速计数器子程序中,首先是定义控制字节,送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/周期、装入周期和脉冲数的情况(控制字节的定义可以参考PTO/PWM控制字节表),并传送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个脉冲,同时高速计数器进行减计数。
那么对于这样一个例子,应用到了带参数的子程序调用、中断和高速计数器的内容,会不会比较难以理解呢,如果觉得有些模糊的话,可以回看一下前面中断和高速计数器的内容,这样可以加深印象呢。
来源:技成培训网,作者:蔡慧荥,未经授权请勿转载!回复:西门子全套 ,可领取西门子系列资料包!
电气工程师:西门子S7-200PLC编程PTO脉冲的产生与使用
PTO功能按照给定的脉冲个数和周期输出一串方波脉冲,占空比为50%。PTO可以产生单段脉冲或通过使用脉冲包络产生多段脉冲。必须为其设定脉冲个数和周期(以微秒或毫秒为单位):脉冲个数:1-4294967295,为32位无符号数;周期:10~65535us或2-65535ms,为16位无符号数。
在设置脉冲个数时,若将脉冲个数设为0,系统会默认为个数为1:在设置脉冲周期时,符号数如果周期小于两个时间单位,系统会默认周期为两个时间单位,例如时间单位为ms,周期设为1.3ms,系统会默认周期为2ms,另外,如果将周期值设为奇数值(如75ms),产生的脉冲波形会失真。
PTO脉冲课分为单段脉冲串和多段脉冲串,多段脉冲串由多个单段脉冲串组成。
1、单段脉冲串的产生
要让Q0.0或Q0.1端子输出单段脉冲串,须先对相关的控制字节和参数进行设置,再执行高速脉冲输出PLS指令。
图1是一段用来产生单段脉冲串的程序。在PLC首次扫描时,SM0.1触点闭合一个扫描周期,复位指令将Q0.0输出映像寄存器(即Q0.0线圈)置0,以便将Q0.0端子用于高速脉冲输出:当I0.1轴点合时,上开沿P触点接通一个扫描周期,MOV_B、MOV_W和MOV_ DW依次执行,对高速脉冲发生器的控制字节和参数进行设置,然后执行高速脉冲输出PLS指令,让高速脉冲发生器按设置产生单段PTO脉冲串并从Q0.0端子输出。在PTO脉冲串输出期间,如果I0.2触点闭合,MOV_B、 MOV_ DW依次执行,将控制字节设为禁止脉冲输出、脉冲个数设为0,然后执行PLS指令,高速脉冲发生器马上按新的设置工作,即停止从Q0.0端子输出脉冲。单段PTO脉冲串输出完成后,状态位SM66.7会置1,表示PTO脉冲输出结束。
2、单段脉冲串的产生
多段脉冲串有两种类型:单段管道脉冲串和多段管道脉冲串
(1)单段管道脉冲串
由于控制单元参数只能对单段脉冲串产生作用,因此在输出单段管道脉冲串时,要求执行PLS指令产生首段脉冲串后,立即接第二段脉冲串要求刷新控制参数单元,并再次执行PLS串中的每个脉冲参数要相同指令,这样首段脉冲串输出完成后,会接着按新的控制参数输出第二段脉冲串。单段管道脉冲串的每个脉冲串可采用不同参数,这样易出现脉冲串之间连接不平稳,在输出多个参数不同的脉冲串时,编程也很复杂。
(2)多段管道脉冲串
多段管道脉冲串也由多个单段脉冲串组成,每个单段脉冲串的参数可以不同,单段脉冲串中的每个脉冲参数也可以不同。
①参数设置包络表
由于多段管道脉冲串的各个脉冲串允许有较复杂的变化,无法用产生单段管道脉冲串的方法来输出多段管道脉冲串,S7-200PLC采用在变量存储区建立一个包络表的方法,由该表来设置多段管道脉冲串中的各个脉冲串的参数。多段管道脉冲串的参数设置包络表见表1,从包络表中可以看出,每段脉冲串的参数占用8字节,其中2字节为16位初始周期值,2字节为16位周期增量值,4字节为32位脉冲数值,可以通过编程的方式使脉冲的周期自动增减,在周期增量处输入一个正值会增加周期,输入一个负值会减少周期,输入0将不改变周期。
在多段管道模式下,系统仍使用特殊存储器区的相应控制字节和状态位,每个脉冲串的参数则从包络表的变量存储器区读出,在多段管道编程时,必须将包络表的变量存储器起始地址(即包络表中的n值)存入SMW168或SMW178中,在包络表中的所有周期值必须使用同一个时间单位,而且在运行时不能改变包络表中的内容,执行PLS指令来启动多段管道操作。
②多段管道脉冲串的应用举例。
多段管道脉冲串常用于步进电动机的控制。图2是一个步进电动机的控制包络线,包络线分3段:第1段(AB段)为加速运行,电动机的起始频率为2kHz(周期为500s),终止频率为10kHz(周期为100us),要求运行脉冲数目为200个:第2段(BC段)为恒速运行,电动机的起始和终止频率均为10kHz(周期为100s),要求运行脉冲数目为3600个;第3段(CD段)为减速运行,电动机的起始频率为10kHz(周期为100us),终止频率为2kHz(500us),要求运行脉冲数目为200个。
根据图2步进电动机的控制包络线列出的包络表
根据包络表可编写出步进电动机的控制程序,如图3所示,该程序由主程序、SBR_0子程序和NT_0中断程序组成。
主程序
SBR_0子程序
INT_0中断程序
在主程序中,PLC首次扫描时SM0。触点闭合一个扫描周期,先将Q0.0端子输出映像寄存器置0,以便将该端子用于高速脉冲输出,然后执行子程序调用指令转入SBR0子程序。在SBR0子程序中,网络1用于设置多段管道脉冲串的参数包络表(段数、第1段参数、第2段参数和第3段参数),网络2先设置脉冲输出的控制字节,并将包络表起始单元地址号送入SMW168单元,然后用中断连接指令将NT0中断程序与中断事件19(PTO0脉冲串输出完成产生中断)连接起来,再用EN指令允许所有的中断,最后执行PLS指令,让高速脉冲发生器按设定的控制方式和参数(由包络表设置)工作,即从Q0.0端子输出多段管道脉冲串,去驱动步进电动机按加速、恒速和减速顺序运行。当Q00端子的多管道PTO脉冲输出完成后,马上会向系统发出中断请求,系统则执行DNT0中断程序,Q10线圈得电。
以上,欢迎动动手分享及收藏!
相关问答
plc脉冲定位编程实例?
PLC脉冲定位编程实例:1、脉冲定位编程:(1)首先配置脉冲定位模块,确定脉冲定位模块的通道号、脉冲定位方向、脉冲定位频率和脉冲定位位置等信息;(2)编...PL...
PLC发脉冲编程指令?
PLC脉冲指令是指对西玛仪表028-6650595713808018567关于作为PLC连接驱动器来控制步进电机的,比如使用台达PLC(三菱系也是一样),连接Y0,和C0到步进电机驱动器...
PLC多段脉冲怎么控制?
主要看被控的伺服电机的运动情况:如果是独立的多个电机,时间上没有冲突,可以一对多,用脉冲切换器去切换被控的伺服驱动器(占用数字量输出口);如果步进...主...
西门子1500plc脉冲指令怎么用?
西门子1500PLC脉冲指令主要用于控制脉冲信号的输入和输出,常用于测量和计数等应用场景。在使用脉冲指令时,需要先设置输入或输出的脉冲端口,并对其进行配置,...
如何让PLC一直输出脉冲?
我来回答这个问题,让PLC输出脉冲的方法还是比较多的,我们可以根据控制不同的负载,通过不同的指令输出脉冲的频率是不一样的。下面我们以日系PLC(可编程控制器...
欧姆龙plc1秒时钟脉冲编程器怎么写入-Miss無同的回答-懂得
输入“C”后,然后在地址中输入一个"P"然后往下选择,找到一秒脉冲确认就行了。或者直接添加一个触点,输入地址“CF102”就好了。输入“C”后,然后在...
大神们帮忙编个欧姆龙PLC脉冲程序?
如此之简单。。。。正转,上升沿,触发正转sped指令反转,上升沿,触发反转sped指令正转和反转,下降沿,都触发INI停发脉冲。如此之简单。。。。正转,上升...
plc中脉冲输出怎么设置?
打开维控PLC编程软件,在运行PLCEditor菜单栏中选择【PLC(p)】在【PLC(P)】菜单工具子菜单中选择【PLC向导】并点击打开。在弹出的向导选择窗口中勾选【指...
plc脉冲输出如何调速?
你好,PLC的脉冲输出通常用于控制电机的转速。要调整PLC脉冲输出的转速,可以使用以下步骤:1.确定PLC脉冲输出的频率。这通常由PLC的输出模块确定。2.计算...
松下plc如何设置脉冲通道?
1.松下PLC可以通过设置脉冲通道来实现特定的功能。2.设置脉冲通道的原因是为了控制和监测脉冲信号的输入和输出。脉冲通道可以用于计数、测量速度、位置控制...