学习:PLC 的步进电机控制系统(三)

 

西门子PLC与步进电机驱动器控制步进电机在对步进电机进行控制时,常常会采用步进电机驱动器...






西门子 PLC 与步进电机驱动器控制步进电机

在对步进电机进行控制时,常常会采用步进电机驱动器对其进行控制。步进电机驱动器采用超大规模的硬件集成电路,具有高度的抗干扰性以及快速的响应性,不易出现死机或丢步现象。使用步进电机驱动器控制步进电机,可以不考虑各相的时序问题(由驱动器处理),只要考虑输出脉冲的频率(控制驱动器 CP 端),以及步进电机的方向(控制驱动器的 DIR 端)。 PLC的控制程序也简单得多。

但是,在使用步进电机驱动器时,往往需要较高频率的脉冲。因此 PLC 是否能产生高频脉冲成为能否成功控制步进电机驱动器以及步进电机的关键。西门子CPU 312C、CPU 313C、CPU 313-2DP 等型号,集成有用于高速计数以及高频脉冲输出的通道,可用于高速计数或高频脉冲输出。

下面以CPU 313C为例,说明高频脉冲输出的控制过程。

CPU 313C集成有3个用于高速计数或高频脉冲输出的特殊通道,3个通道位于CPU 313C集成数字量输出点首位字节的最低三位,这三位通常情况下可以作为普通的数字量输出点来使用。再需要高频脉冲输出时,可通过硬件设置定义这三位的属性,将其作为高频脉冲输出通道来使用。

作为普通数字量输出点使用时,其系统默认地址为Q 124.0、 Q 124.1、 Q 124.2(该地址用户可根据需要自行修改),作为高速脉冲输出时,对应的通道分别为 0通道、1 通道、2通道(通道号为固定值,用户不能自行修改)。每一通道都可输出最高频率为 2.5KHZ(周期为 0.4ms )的高频脉冲。

如图所示:CPU 313C 中, X2前接线端子2 、3 、4 号接线端子分别对应通道0  、通道1 、和通道3。另外,每个通道都有自己的硬件控制门, 0 通道的硬件门对应X2前接线端子的4号接线端子,对应的输入点默认地址为I 124.2 。1 通道硬件门7号接线端子对应的输入点默认地址为I124.5 ,而2号通道硬件门为 12号接线端子,对应的输入点默认地址为I125.0 。



控制通道产生高频脉冲分为以下两个步骤

(1)硬件设置。

(2)调用系统功能块SFB49。

1.硬件设置

要想使这三个通道输出高频脉冲,首先必须进行硬件设置。硬件设置的过程如下:

(1)首先创建一个项目, CPU 型号选择为CPU313C ,如图所示



( 2)双击 SIMATIC  300 Station 下的hardware 进入硬件组态工具软件进行硬件设置如图所示。



在硬件组态工具中可以看到CPU313C集成有24点数字量输入(DI 24 )、 16点数字量输出( DO 16 )、5通道模拟量输入(AI5 )和 2通道的模拟量输出(AO2)。另外还有计数功能( count ),高频脉冲的属性设置就在 count 中设置。这里的计数器是针对计数频率要求较高的场合。双击 count (如图

5.3.11所示),可进行高速计数、频率控制以及高频脉冲输出属性设置对话框。

(3)双击count 可进入计数器属性对话框如图所示



在对话框中,Channe 为通道选择,在其后面下拉菜单中,可以选择要设置的通道号, CPU 313C有三个通道号可以选择,既 0 、1 、2,用户可以根据自己的需要对某个 通道或三个通道进行分别设置。 Operating为工作模式,在其后面的下拉菜单中有 5种工作模式可以选择(如上图所示)。

这里只介绍通道作为高频脉冲输出时的工作模式。要想在对应通道产生高频脉冲,必须选择最后一种工作模式:Pulse- - width modulation (脉宽调制)。在 Short (简述)中可以看到,每个通道进行高速计数或频率测量时,最大频率可达 30kHz;而作为高频脉冲输出时,最大频率为 2.5kHz kHz 。

选择 Pulse- - width modulation选项以后,将出现默认值设置对话框如下图所示



(4)设置脉冲参数:在上图的对话框中选择 OK ,对应通道被设置脉宽调制工作方式,脉冲参数将被设置为默认值。计数器属性对话框会出现一个新的标签,Pulse- -Width Modulation 标签,选择此标签可对脉宽参数进行设置,如下图所示



Operating Parameters (操作参数)中各参数意义如下:

①Output format: Per mile, ,S S 7  analog value

输出格式(output - -format )有两种选择,每密耳( Permile)和 )和S7 模拟量值( S 7  analog  value )。选择 Permil,则输出格式取值范围为( 0~1000 ),选择S 7 analog value ,则输出格式取值范围为( 0~27648 ,S7模拟量的最大取值为 27648)。输出格式的取值在调用系统功能块SFB 49时设置的,这一取值将会影响输出脉冲的占空比,具体内容将在后面介绍 SFB 49时提到。

②Time base: : 1  ms, 0.1ms

时基(Time  base )也有两种选择,用户可根据实际需要选择合适的时基,要产生频率较高的脉冲,可选择较短的时基( 0.1ms )。

③On- -delay:接通延时时间值

接通延时(On- -delay)是指,当控制条件成立时,对应通道将延时指定时间后输出高频脉冲。指定时间值为设置值*时基。取值范围为0~65535

④ Period :指定输出脉冲的周期。取值范围为4~65535

周期为设置值*时基。

⑤Minimum  pulse :指定最小的脉冲宽度

指定输出脉冲的最小脉宽,最小脉宽的取值范围为 2~ Period /2。注意:在指定了最小脉冲宽度以后,应该保证根据占空比计算出来的高低电平的时间不小于最小脉冲宽度,否则脉冲将不能正常输出。请参看系统功能块SFB 49使用方法。

⑥Input Input : Hardware gate

通过输入参数选择是否采用硬件门控制,如果选中硬件门前面的方框,则高频脉冲的控制需要硬件门和软件门同时控制,如果不选,则高频脉冲输出单独由软件门控制。具体控制控制方法将在后面的SFB 49 介绍中提到。

⑦Hardware Interrupt :Hardware  gate opening

硬件中断选择,一旦选中硬件门控制以后,此选项将被激活,用户可根据需要选择是否在硬件门起动时刻,调用硬件中断组织块 OB 40中的程序。

将通道的硬件参数设置好以后,按 OK 键,如果还需要设置其它通道,可以再次双击 count ,重新进入计数器属性对话框对其它通道进行设置。将组态好的硬件数据进行保存编译(save and compile ),并下载到 PLC 中,完成硬件设置工作。

要想在相应的通道上获得脉冲,除了硬件设置以外,还必须在程序中调用产生脉冲的系统功能块SFB 49(符号名为 “ PULSE” )。

2.调用系统功能块 SFB 49

(1)选中项目下最后一级子菜单 Blocks ,并双击 Blocks 中的OB1进入程序编辑器,在  OB1中,调用 SFB 49。过程如下:在指令集工具中,找到 library(库) -> standard library(标准库) -> system Function Blocks (系统功能块)菜单,并双击该菜单下的系统功能块SFB 49进行调用

如图所示



在使用系统功能块时,必须指定其背景数据块。如上图,在红色问号处,指定SFB49的背景数据块(例如: DB1  、DB2)。如背景数据还未建立,填写数据块后(如填DB10),则程序编辑器将自动建立DB10为SB 49的背景数据块。

(2)分配系统功能块 SFB 49的参数。

系统功能块SB 49的参数很多,在使用时,用户可根据自己的控制需要进行选择性填写。其各个参数意义如下表所示







在SFB 49的所有输入参数中主要有两部分,一部分是用来控制脉冲输出或作为数字量输出的控制变量;另外一部分则是用来修改脉冲参数:例如脉冲周,延时时间,最小脉宽等。

参数 LADDR :子模块的地址,数据类型为字。可在硬件组态时进行地址配置。其默认值为W #16#300,即输入输出映像区第768个字节。若通道集成在 CPU 模块中,则此参数可以不用设置,若通道在某个子功能模块上,则必须保证此参数的地址与模块设置的地址一致。

参数 CHANNEL :通道号,数据类型为整数。此参数指定启用的通道号,CPU 313C具有 3 个通道的高频脉冲输出,通道号分别为0 、

1、2 。如启动2 号通道,则参数值为: 2。 若通道号大于 2,则在执行功能块时,将发出错信息。

参数SW_ _EN :为软件控制门,数据类型为BOOL 。SFB 49 是通过门功能(Gate Function )控制高频脉冲的起动输出的。门功能中包括硬件门( hardware gate )和软件门(software  gate )两种:可根据需要设置为单独使用软件门控制或同时使用硬件门和软件门控制。门功能工作过程如下图所示



单独使用软件门控制时,在硬件设置时,不能启用硬件门(hardware gate )控制。此时,高频脉冲输出单独由软件门 SW_ _EN 端控制,即 SW_ _EN 端为  “1 ”时,脉冲输出指令开始执行(延时指定时间后输出指定周期和脉宽的高频脉冲),当 SW_ _EN 端为“ 0”时,高频脉冲停止输出。

采用硬件门和软件门同时控制时,需要在硬件设置中,启用硬件门控制。当软件门的状态先为 “1 ”,同时在硬件门有一个上升沿时,将启动内部

门功能,并输出高频脉冲(延时指定时间输出高频脉冲)。当硬件门的状态先为“ 1”,而软件门的状态后变为“1”,则门功能不启动,若软件的状态 ,则门功能不启动,若软件的状态保持“1 ”,同时在硬件门有一个下降沿发生,也能启动门功能,输出高频脉冲。当软件门的状态变为  “0 ” ,无论硬件门的状态如何,将停止脉冲输出。

参数 MAN_ _DO :手动输出使能端。一旦通道在硬件组态时设置为脉宽调制功能,则该通道不能使用普通的输出线圈指令对其进行写操作控制,要想控制该通道必须调用功能块 SFB 49对其进行控制。如果还想在该通道得到持续的高电平(非脉冲信号),则可以通过 MAN_ _DO 控制端实现。当 MAN_ _DO 端为“1 ”时,指定通道不能输出高频脉冲,只能作为数字量输出点使用。当 MAN_ _DO端为  “0 ”时,则指定通道只能作为高频脉冲输出通道使用输出指定频率的脉冲信号。

参数 SET_ _DO  :数字量输出控制端。当 MAN_ _DO 端的状态为“1” 时,可通过 SET_ _ DO  端控制指定通道的状态是为高电平 “1 ” ,还是低电平“  0”。如果 MAN_ _DO  端的状态为 “0  ”,则 SET_ _DO 端的状态不起作用,不会影响通道的状态。

参数OUTP_ _VAL :输出值设置。输出值参数数据类型为整数。在硬件设置中我们只指定了脉冲的周期,延时时间以及最小脉宽等,并没有指定脉冲的占空比。参数 OUTP_ _VAL 就是用来指定脉冲占空比的。注意:在硬件设置时,如果选择输出形式( Output- -format )为:Per mil ,则 OUTP_ _VAL 取值范围为 0~1000(基数为1000),输出脉冲高电平时间长度为:

Pulse width (脉宽)=  ( OUTP_ _ VAL /1000) *period period(周期)

例如:若OUTP_ _VAL  值设置为 200,则一个周期中,  200/1000 的时间为高电平, 800/1000的时间为低电平:即占空比为1 :4  。

如果硬件设置时,选择输出形式( output- -format)

为  S7 模拟量值(S 7  analog  value ),则 OUTP_ _VAL 取值范围为 0~27648(基数为27648),此时输出脉冲的脉宽为:

Pulse  width(脉宽)  =(  OUTP_ _ VAL /27648 )*period (周期)

此时如果 OUTP_ _VAL  值设置为 200,则一个周期中 200/27648 的时间为高电平, 27448/27648的时间为低电平。

注意在设置占空比时,应该保证计算出的高低电平的时间都不能小于硬件设置中指定的最小脉宽值(Minimum  pulse  width ),否则将不能输出脉冲信号。

以上参数为控制脉冲的操作信号。如果想要修改硬件设置时,如脉冲周期,延时时间等参数,则要通过下面的参数来完成。

参数 JOB_ _REQ :为作业操作信号,通过作业操作可以修改硬件设置时指定的某些参数如延时时间,周期,最小脉宽等的。作业初始化控制端是上升沿有效,当 JOB_ _REQ  端的状态由“0”变为“  1” 时将进行作业操作功能,具体事件由作业 ID 和作业值决定。

参数 JOB_ _ID:为作业号,作业号决定了具体的作业事件,例如,如果想修改脉冲周期则可指定 JOB_ _ID  号为 W #16#1,如果想修改延时时间则可指定 JOB_ _ID  的参数为 W #16#2。如果想读取周期,则指定JOB_ _ID 号为 W #16#81。在系统功能 SFB 49的背景数据块中,有一个静态变量: JOB_ _OVAL  ,如图所示,变量类型为双整数, SFB 49进行读作业操作时,将把读取的值放在这一区域,用户可访问这一区域得到高频脉冲相关参数的值。



参数 JOB_ _VAL:为写作业的值,参数类型为双整数,指定的值乘以硬件组态时指定的时基为定义的时间值。当 JOB_ _REQ  有上升沿发生时,JOB_ _VAL 端定义的值将代替脉冲原有的参数。

系统功能块 SFB 49(符号名为 PLUSE )输出参数意义如下表所示



参数STS_ _EN  :状态使能端。其状态显示高频脉冲输出的条件是否成立,当 STS_ _EN  端的状态为 “1 ”时,表示高频脉冲输出条件成立,通道处于延时或输出状态。

参数 STS_ _STRT:硬件门状态。无论是否启动硬件门功能,参数 STS_ _STRT  的状态与通道对应的硬件门的状态一致。

参数 STS_ _DO :为通道的输出状态,当通道作为数字量输出或高频脉冲输出时,STS_ _DO 端的状态与通道输出的状态一致。

参数 JOB_ _DONE :为可以启动新作业的端,正常情况下 JOB_ _DONE  端的状态为“1”,表示可以启动新作业;当 JOB_ _REQ 端有上升沿时,将执行指定作业修改对应参数,这时 JOB_ _DONE 的状态将变为“ 0”,当作业执行完毕,参数修改好以后,  JOB_ _DONE 的状态将自动恢复为 “1 ”状态。注意,一般作业执行的时间很短,因此 JOB_ _DONE 为“0 ”的状态时间也很短。在做实验时用肉眼很难观察到 JOB_ _DONE  端的状态变化,可以在程序中用 JOB_ _DONE 输出的信号控制一个加法计数器,可以看到,作业每启动一次,计数器的值都会加1,证明在执行作业时, JOB_ _DONE  端的状态的确发生过变化。

参数JOB_ _ERR :为故障作业,当 JOB_ _ERR的状态为“0”时,表示作业执行正常,当 JOB_ _ERR  的状态为“1”时,表示有故障发生,具体故障原因可查看故障代码(由JOB_ _STAT 端读取)

参数 JOB_ _STAT  :为作业错误代码。如果发生作业错误,则 JOB_ _ ERR  = TRUE 。 JOB_ _STAT  中将给出精确的错误原因。具体如下表所示



发生系统错误后,事件类别错误代码解释如下:

W #16#8001操作模式错误或参数错误。在 “ 组态硬件”  中设置正确的操作模式,或使用与已设置的操作模式相匹配的 SFB 。

W #16#8009 通道号非法。例如:将通道号设置值 >3 (CPU的专用值  )。

下一节将学习:高频脉冲输出控制举例


    关注 沂南工控


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册