PLC实现步进电机正反转和调速控制
一、实验目的
1、掌握步进电机的工作原理
2、掌握带驱动电源的步进电机的控制方法
3、掌握DECO指令实现步进电机正反转和调速控制的程序
1、FX2N-48MR PLC一台
2、两相四拍带驱动电源的步进电机一套
3、正反切换开关、起停开关、增减速开关各一个
三、步进电机工作原理
步进电机是纯粹的数字控制电动机,它将电脉冲信号转换成角位移,即给一个脉冲信号,步进电机就转动一个角度,图3-1是一个三相反应式步进电机结图。从图中可以看出,它分成转子和定子两部分。定子是由硅钢片叠成,定子上有六个磁极(大极),每两个相对的磁极(N、S极)组成一对。共有3对。每对磁极都绕有同一绕组,也即形成1相,这样三对磁极有3个绕组,形成三相。可以得出,三相步进电机有3对磁极、3相绕组;四相步进电机有4对磁极、四相绕组,依此类推。
反应式步进电动机的动力来自于电磁力。在电磁力的作用下,转子被强行推动到最大磁导率(或者最小磁阻)的位置,如图3-1(a)所示,定子小齿与转子小齿对齐的位置,并处于平衡状态。对三相异步电动机来说,当某一相的磁极处于最大导磁位置时,另外两相相必处于非最大导磁位置,如图3-1(b)所示,即定子小齿与转子小齿不对齐的位置。
把定子小齿与转子小齿对齐的状态称为对齿,把定子小齿与转子小齿不对齐的状态称为错齿。错齿的存在是步进电机能够旋转的前提条件,所以,在步进电机的结构中必须保证有错齿的存在,也就是说,当某一相处于对齿状态时,其它绕组必须处于错齿状态。
本实验的电机采用两相混合式步进电机,其内部上下是两个磁铁,中间是线圈,通了直流电以后,就成了电磁铁,被上下的磁铁吸引后就产生了偏转。因为中间连接的,是采用在转轴的位置用一根滑动的接触片。这样如果电磁铁转过了头,原先连接电磁铁的两根线刚好就相反了,所以电磁铁的N极S极就和以前相反了。但是电机上下的磁铁是不变的,所以又可以继续吸引中间的电磁铁。当电磁铁继续转,由于惯性又转过了头,所以电极又相反了。重复上述过程就步进电机转了。
根据这个原理,如图3-2所示,两相步进电机的转动步骤,以正转为例:
由图可见,现相异步电机正转过程分为四个步骤,即A相正方向电流、B相正方向电流、A向反方向电流和B相反方向电流。反转工作的顺序与之相反。A、B两相线圈不是固定的电流方向,这与其它步进电机的控制逻辑有所不同。因此,控制步进电机转动时,必须考虑用换相的思路设计实验线路。可以根据模拟驱动电路的功能和plc必须的逻辑关系进行程序设计。
四、采用步进电机驱动器的控制方式
利用步进电机驱动器可以通过PLC的高速输出信号控制步进电机的运动方向、运行速度、运行步数等状态。其中:步进电机的方向控制,只需要通过控制U/D端的On和Off就能决定电机的正转或反转;将光耦隔离的脉冲信号输入到CP端就能决定步进电机的速度和步数;控制FREE信号就能使电机处于自由状态。
因此PLC的控制程序相当简单,只需通过PLC的输出就能控制步进电机的方向、转速和步数。不必通过PLC控制电机换相的逻辑关系,也不必另外添加驱动电路。实训面板见图3-4,梯形图见图3-5。本程序是利用D0的变化,改变T0的定时间隔,从而改变步进电机的转速。通过两个触点比较指令使得D0只能在10~50之间变化,从而控制步进间隔是1S~5S之间,I/O分配表见表3-1。
表3-1 I/O分配表
图3-5 梯形图
五、采用PLC直接控制步进电机方式
对于两相步进电机控制,根据其工作原理,必须考虑其换向的控制方式,因此将其步骤用代号分解,则为:①实现电流方向A+→A-、②实现电流方向B+→B-、③实现电流方向A-→A+、④实现电流方向B-→B+。如果反转则按照④、③、②、①的顺序控制。
PLC的I/O分配表按照表3-2,分配图按照图3-6,梯形图见图3-7。
表3-2 PLC的I/O分配表
步进电机正反转和调速控制的梯形图如图3-7所示,程序中采用积算定时器T246为脉冲发生器,因系统配置的PLC为继电器输出类型,其通断频率过高有可能损坏PLC,故设定范围为K200ms~1000ms,则步进电机可获得1~10步/秒的变速范围,(X0为ON时,正转,X1为ON时;反转)。
X0为ON时,输出正脉冲列,步进电机正转。当X0为ON时,T246以D0值为预置值开始计时,时间到,T246导通,执行DECO指令,根据D1数值(首次为0),指定M10输出,Y0、Y4为ON,步进电机A相通电,且实现电流方向A+→A-;D1加1,然后,T246马上自行复位,重新计时,时间到,T246又导通,再执行DECO指令,根据D1数值(此次为1),指定M11输出,Y1、Y5为ON,步进电机B相通电,且实现电流方向B+→B-;D1加1,T246马上又自行复位,重新计数,时间到,T246又导通,再执行DECO指令,根据D1数值(此次为2),指定M12输出,Y2、Y6为ON,步进电机A相通电,且实现电流方向A-→A+;D1加1,T246马上又自行复位,重新计时,时间到,T246又导通,再执行DECO命令,根据D1数值(此次为3),指定M13输出,Y3、Y7为ON,步进电机B相通电,且实现电流方向B-→B+;当M13为ON,D1复位,重新开始新一轮正脉冲系列的产生。
X1为ON时,输出反脉冲列,步进电机正转。当X1为ON时,T246以D0值为预置值开始计时,时间到,T246导通,执行DECO指令,根据D1数值(首次为0),指定M10输出,Y3、Y7为ON,步进电机B相通电,且实现电流方向B-→B+;依此类推,完成实现A相反方向电流、B相正方向电流、A相正方向电流三个脉冲列输出;当M13为ON,D1复位,重新开始新一轮正脉冲系列的产生。
当X2为ON时,程序由自动转为手动模式,当X0(X1)为ON时,每点动一次X3,对D1数值(首次为0)加1,分别指定M10、M11、M12及M13输出,从而完成一轮正(反)脉冲系列的产生。
第73步中,当X4为ON,M8012为ON,M4为ON,且D0当前值<K1000,则D0即加1。第88步中,当X5为ON,M8012为ON,M4为ON,且D0>K200,由D0即减1。
六、程序调试及执行
调速时按X4或X5按钮,观察D0的变化,当变化值为所需速度时释放。
如动作情况与控制要求一致表明程序正确,保存程序。如果发现程序运行与控制要求不符,应仔细分析,找出原因,重新修改,直到程序与控制要求相符为止。
七、实训思考练习题
如果调速需经常进行,可将D0的内容显示出来,试设想方案,修改程序,并实验。
图3-7 步进电机正反转和调速控制
程序说明
1、步骤0,指定脉冲序列输出顺序移位值;
2、当X0为ON,输出正脉冲序列,电机正转;当X1为ON,输出负脉冲序列,电机反转;
3、当X2为ON,程序由自动转为手动模式,由X3状态单步触发电机运转;
4、当X4为ON,如D0小于1000,每100ms对D0加1,从而延长每脉冲输出的时间间隔,降低电机的转速;
5、当X5为ON,如D0大于200,每100ms对D0减1,从而缩短每脉冲输出的时间间隔,加快电机的转速;
6、T0为频率调整限制。
工控前辈经验之谈 编写PLC程序我从做Excel表开始
作为在工控自动化行业侵淫已久的工程技术人员,无论在程序编写,抑或现场处理都会总结出自己的一套,本文作者周舟,2001年开始接触PC控制和运动控制,先后就职于海天集团、施耐德电气、倍福自动化,宁波致迪自动化,以技术人员和市场人员的身份经历了浙江机械制造的重要发展阶段,也总结出自己的一套PLC编程经验,与大家分享。
//////////
上 次看了邓李老师的文章《如何编写优质的PLC/PAC程序?大神的这份作业建议你抄一下》颇有些感受。工作快20年,多少写了些程序,大多是和机器相关的,记得本科的毕业设计是用VB+数据采集卡写了一个拖拉机发动机喷油嘴的弹簧测试,硕士课题用C在Linux下做了一些代码,而毕业后在海天,和师傅一起,继续在Linux下用C和QT堆了一台注塑机的控制器出来。
01
第一次接触PLC,是在海天公司给一台双色注塑机增加一个转轴功能,这个功能注塑机电脑上没有,所以外加了一个PLC,记得当时用的是三菱FX,这是我接触的第一个PLC,当时因为供应商提供了PLC、伺服电机、减速机等一套产品,所以程序也就让供应商写了。
到了倍福之后,由于整个办事处就我一个人,处于什么都干的状态,所以除了销售工作,也做技术支持。记得第一个项目是上海的同事写的代码,同事来现场一次,后面的维护我接过来。所幸TwinCAT2这软件比较简单,一来二去自己就上手了。
后来慢慢地也给客户写一点DEMO,用来给客户解释为啥IEC61131-3是一个简单的东西,不像想象的那么难,不要一想到ST语言就想到高级语言,等等诸如此类的问题。写着写着,也有了一些心得。
在聊聊这些心得之前,先说点题外话。我做过两件和工作不太相关的学习,一次是读研究生时,一个培训班来学校推销ISO内审员的培训,当时因为好奇去报了名,花了几百块钱听了一堆ISO的知识,记得讲课的是一位老干部。另一次是刚上班时,去报了一个计算机高级程序员的考试,看了几个月书,离及格线差了那么一大点(不是一小点)。但这两个事情,对我的影响比较大,ISO的学习,让我理解了凡事要有流程,流程要有标准,标准要有数据,数据要可追溯,这为后来理解工业4.0打下了基础 ,而高级程序员的考试,让我学到不少IT的知识,尤其是软件工程方面的知识,对于构建一个大的程序,还是有帮助的。
下面的心得,和这两件事情,有比较大的关系,说穿了,就是多做纸面工作 。
02
在写代码之前,我会先建个EXCEL表格 ,大约有这么几项 (这里我虚拟了一个立体车库的项目,因为每天到办公室都会和立体车库打交道):
1 、IO表 ,输入输出的模块型号,模块的位置,每个模块上每个点的定义,以及外面接的是什么元器件。对于一些电气CAD软件,会自动生成这个表,但我们还是建议用EXCEL做一份,以便存档。
2 、变量表 ,一部分变量是有地址的,比如需要和上面提到的IO表进行对应,比如Modbus通讯。Modbus通讯需要定义变量地址,而IO对应的不需要在程序中指定,只要在系统配置中和硬件进行连接。另一部分变量是没有地址的,但也不能随便定义,要有一定的规则,以便阅读。
3 、结构体 (Structure),结构体的设计,可以放在变量表之前,为了提高效率,我们会设计一些结构体来做数据类型,比如一个气缸,就可以设计一个结构体来表述,这个结构体会包含气缸的方向,磁性开关状态,以及两个方向的超时报警时间。在使用到气缸时,就可以用这个结构体类型来直接定义气缸,而无需去定义每个气缸设计的变量。
必要的话,可以设计枚举变量,用来表述机器的状态。
4 、POU名称 (Program Organization Unit程序组织单元)。POU有三种类型:程序(Program)、功能块(Function Block)、函数(Function)。在规划阶段,程序和功能块的构建是很重要的,功能块会降低很多重复工作,从而避免一些普遍性的错误(当然,错了也就都错了),程序的调用、状态的切换是否清晰可控,则决定了整个项目是否足够强壮,并可持久改进及维护。
5 、工艺说明 ,包括各个工作步骤、步骤的衔接、条件的转换等。这个步骤,可以在EXCEL中做,也可以用word、PPT,但相比之下,EXCEL可能是个更好的选择,因为EXCEL的纸面是没有限制大小的,而word和PPT很容易遇到编辑范围太小的问题。
当然,也可以在纸张上来画。我个人建议每个项目备一个A4的本子,和EXCEL配合使用。
做完这个表格之后,我习惯将变量表直接复制到TwinCAT中,因为在EXCEL中,很多重复工作可以直接选中表格单元进行拖拉复制,比如注释的“(* ”和“*)”,以及末尾的“;”,都是直接复制单元格的,而对于一些带序号的变量,如X0-X7,顺序复制即可,这会在大幅度减少工作量的同时,降低变量编写出错机率。
在程序编写过程中,除了用于for循环的累加数,以及用来调试时的一些标志之外,如果要增加有实际意义的变量名,必须先在EXCEL里增加,再复制到程序中。这有点强迫症,但事实证明,这个有用。
接下去就是建立各个POU,对于功能块,要写好输入变量和输出变量,而函数只需要有参数即可。写完了每个POU,记得在每个POU的主体敲个";",这样,即使我们一句代码也不写,也是可以编译通过的。如果这时候编译不通过,可以看看是不是哪里有手误了,因为这时候能错的地方都是系统保留字,或者是忘记敲";",注释的括号少了之类。
接下来是不是写代码?不是的,是先写注释,而且是全面注释,即在各个功能块中,先写好注释。在TwinCAT中,一个程序块只需要一个“;”,即可编译通过,我们上面已经敲好了";",所以不用担心没有代码会造成程序不能编译。
我们回到前面第4点,如果流程图已经画好,那我们就把流程图搬到编程环境中,还是按照从大到小的原则,我们先把步骤编好,具体每一步里面做什么,可能远不如步骤之间怎么切换衔接来得重要。所以,在这个过程中,我们还可以用注释来替代代码,但别忘了在各种for、case中加上“;”。
最后一步,让我们在所有注释的地方,把代码写上。然后,编译一下。
如果有人可以把PackML的文档看一遍,会发现里面就有关于状态切换的图表,如果有兴趣,可以去找下PackML的文档。
如果你用的是TwinCAT或者Codesys的环境,我建议在写EXCEL表格和画流程图的时候,顺带把人机界面的草图也画了,我觉得集成人机界面的开发环境就是自动化工程师的大救星。人机界面和PLC在同一个环境内,意味着可以随时看到工程师想看到的内容,比如在调试时,需要看多个变量,那建在人机界面上会方便很多,不需要在程序中在线观察。
人机界面和PLC的集成,除了大大提高自动化工程师的幸福感之外,也会极大激发自动化工程师的创作欲望。比如有些DEMO,我会将逻辑动作的条件和输出状态都放在画面中,这样可以很清楚看到一个逻辑动作没有执行的原因,比如某几个动作有先后,那做个定时器或者多个定时器,将这些定时器的输出放在同一个画面,就可以明察秋毫了。
写完了程序,机器也动了,我们再来做一张表,就是修改记录 ,在这张表里,我们写下,某年某月某日,为了什么原因,我们改了哪个程序,怎么改的,修改后我们怎么测试的,测试的效果如何。
而修改的程序,不建议直接在原程序上改,可以建一个新的POU,也可以在POU里写一个新的action,在对应的调用处改掉调用名字即可。这样,即使新的程序出了问题,也很容易改回(RollBack)到原来的程序。而新的代码中,记得在头部写好注释。
03
至此,我们回过头来看看,我们获得了哪些好处:
1 、我们有了一个清晰的名字列表,包括变量的、IO的、程序的
2 、我们有了一个清晰的结构
3 、所有的问题会有据可查。
上面这几点是针对程序本身的益处,而对于项目和企业而言,则有更大的意义:
1 、通过分解 ,将代码部分的工作量比例降低了,这种逐步聚焦的方式,可以让工程师把精力放在最关键的地方。
2 、便于沟通 ,在代码之前的这些工作,都可以和其他人共享,比如IO表部分可以和电气工程师以及电工沟通,程序流程部分可以用来和工艺工程师沟通。
3 、便于维护 ,在移交给其他工程师,或者多人开发同一项目时会方便很多。如果没有注释,基本上工程师自己都会忘记原来写的什么。
4 、便于更换平台 ,当需要更换一个控制器平台时,会发现,大部分工作是相通共用的,这会在切换平台时节约大量的时间。
本文用了一些IEC61131-3的概念,关于IEC61131-3的书很少,推荐彭瑜老师和何衍庆老师的那本《IEC61131-3编程语言及应用基础》,机械工业出版社出版,这本书我买了应该不下三十本,用来送人。记得在倍福10周年庆典那天,公司邀请了彭瑜老师,恰好庆典在人民广场附近举办,席间跑步前进到福州路的上海书城,居然买到了那本《IEC61131-3编程语言及应用基础》,请彭瑜老师签了个名,留作纪念。
另外推荐林锐博士写的《高质量程序设计指南 C++/C语言》,这本书有人不喜欢,觉得这本书水份太多,干货太少,但读起来还是比较轻松的,这本书出到了第三版,目前在网上有很多二手的在销售,也有一些电子版的,建议找来读一读。
后记
写这篇文章的原因,一方面是看了邓李老师的文章,也想谈谈自己的心得,另一方面,也是看到随着工业4.0的普及,以及我国OEM制造业正在向高端发展,PLC程序方面,也慢慢向IT方向发展。
相比于PC或者网络软件,自动化程序有几个特点:
1、使用对象比较窄 ,这造成了对程序的质量要求、功能要求都不是太高,机器能开就行。
2、代码量小 ,因为1的原因,以及机器本身的特性,PLC的代码量是很小的。
3、协作性很低 ,很多公司只有一个自动化工程师负责PLC程序,而且对程序质量要求很低,只要求机器能跑。
这些特点,造成了自动化行业,尤其是离散自动化行业,对于代码的质量基本是没有要求的。我记得大学时候买过一本《软件工程》的书,开头有个例子,是一个科幻电影里的飞船计算机艾尔出了软件故障的故事,随着现在机械设备制造业的发展,机器的销售越来越多,客户的需求也变得越来越定制化,这种软件的故障,在将来会慢慢出现,如何应对这个事情,唯一的道路,只能是从计算机行业去借一些经验来。
我作为一个销售来写这个文章,会有很多漏洞,但还是期望我的文字可以引起自动化工程师的共鸣,起到抛砖引玉的作用,大家一起为未来做些事情。
--END--
❒ 作者简介
周舟,硕士,2003年毕业于河南科技大学,师从张洛平教授,2001年开始接触PC控制和运动控制,先后就职于海天集团、施耐德电气、倍福自动化,宁波致迪自动化,以技术人员和市场人员的身份经历了浙江机械制造的重要发展阶段。
❒ 声明: 本文由《工控百家谈》-工控参考独家发布,如需转载,请联系我们。
相关问答
维控PLC适用于什么场合?感谢回答
[回答]维控PLC虽然拥有很高的防护等级,可以用在多尘、潮湿或油滴侵袭的场所,但并不意味着你就能把它浸在水里工作,应尽量将其置于相对干净的环境中。如果...
维控PLC的主要作用是什么?大侠们,求解
[回答]维控PLC可使控制速度,位置精度非常准确,可以将电压信号转化为转矩和转速以驱动控制对象。伺服电机转子转速受输入信号控制,并能快速反应,在自动控制...
在线的各位知道吗,维控PLC的主要作用是什么?
[回答]维控PLC在不接任何设备和线的情况下,把步进电机的每根线分开,不要碰线,用手转动转轴,好电机,应该是只需要一定的力,就可以顺利的转动,中间无卡的现...
在线的各位知道吗,维控PLC的主要作用是什么?十万火急!
[回答]维控PLC可使控制速度,位置精度非常准确,可以将电压信号转化为转矩和转速以驱动控制对象。伺服电机转子转速受输入信号控制,并能快速反应,在自动控制...
手动自动转换开关方法是怎样的_住范儿家装官网
GST-LD-8316手自动转换开关(以下简称转换开关),用于控制气体灭火系统在手动状态和自动状态之间的转换,同时还有紧急启动和停动功能。GST-LD-8316手...
楼主请问:PLC如何选择功率?
[回答]PLC在不接任何设备和线的情况下,把步进电机的每根线分开,不要碰线,用手转动转轴,好电机,应该是只需要一定的力,就可以顺利的转动,中间无卡的现象,若...
交流调速器是怎么调节交流调速电机的速度的,是调节输出电压来带到调速吗?
交流调速器是怎么调节调速电机的速度的,是调节输出电压来带到调速吗?答;不是的。交流异步电动机要想改变转速只能够改变频率或磁极数才能够改变转速。下图...
帮个忙诸位盆友求推荐一下:权威的协同控制检测费用,协同控...
[回答]如果三者构成一个系统,PLC是控制中心,根据输入信号(编码器信号)处理输出指令,控制终端执行部件变频器。编码器是检测信号输出元件,将变频器的转速信...
谁能帮助我!ABB伺服PLC维修方法?
[回答](1)将编码器随机安装在电机上,即固结编码器转轴与电机轴,以及编码器外壳与电机外壳;(2)用一个直流电源给电机的UV绕组通以小于额定电流的直流电,U入...
叶片生产线使用过程注意事项?
[回答]此叶片为我公司专门为防火阀生产厂家设计,具有专利。在线冲菱形孔或者在线冲圆形孔,便于转轴的插接,省去焊接过程。与普通叶片相比较优点是,叶片尺...