光电式绝对值编码器读数准确,可直接测量机械行走位置、回转角度、俯仰角度等,其读数用于控制机构的启动、停止,做软限位保护等,是实现自动化控制的重要设施之一。本文将系统讲解光电式绝对值编码器的使用以及乱码故障的解决方法。
1安装
1.1机械安装
机械安装方法比较简单,只需让编码器的轴与相应机构的主转动轴实现同步动作即可,但是编码器属于贵重物品,安装不当可能损坏或数据混乱,所以应请专业的机械安装人员按以下几点要求安装。
1.1.1必须确保编码器的转动轴不来回扭动,如果拧着劲转会损坏编码器,所以要仔细调整同轴度,同时确保机械本身转轴的安装精度。
1.1.2对于只在固定小区域动作的机构(如俯仰、回转机构),编码器最好先于一个减速器连接,减速器须算好速比,确保编码器做单圈运动,可以为编写程序提供好处(后面还会讲到这点)。
1.1.3与编码器轴连接不要采用柔性较大的轴。柔性轴可以保护编码器,但会引起数据丢失。
1.1.4必须保证所有连接紧固牢靠。装好后要将各个螺栓检查一遍,确认无松动。(编码器常见的几种安装形式见下图)
1.2与可编程控制器(PLC)模块的线路连接
比较知名的可编程控制器如ROCKWELL、欧姆龙、安川等都有可与编码器连接的模块,并提供连接线路图。编码器本身也有详细的接线说明书。需要说明的是,编码器与控制器模块的位数应该匹配,编码器有10位的,计数范围0~1023.12位的计数范围0~4095.如选用12位的编码器,而只用了10位就会造成浪费(也可以使用)。
2程序编写
因各种控制器所用语言不同,所以首先叙说一下编程思路。
2.1定义编码器输入变量,设为ctrl。
2.20位校正,根据工作需要将机构动作至0位,如果要求严格,采用精位仪、水平仪精确定位,然后读出ctrl值,记为a。
2.3求中间变量ctr2=ctrl+n*b-a
其中n-编码器转的圈数(后面将详细说明)。
b-编码器单圈计数量,若10位b=1024.
12位b=4096
2.4求n值,这是关键一步,以10位编码器为例,方法如下:首先在机构上装—0位校正开关,将开关信号送给PLC,开关接通后(机构在0位),n=0;让机构动作,编码器读数到1023或0时会跳到0或1023.现在我们需一种算法检测到这种数值跳跃,跳一次让n=n+1或n-1.我们可以利用PLC控制器扫描程序段时的前后时间差来检测。
先借助一变量ctr3,ctr1→变量ctr3;
ctrl-ctr3>1000时,n=n-1;
ctrl-ctr3<1000时,n=n+1;
说明:将ctrl传给ctr3.ctr3在时间上比ctrl滞后,所以ctrl始终不等于ctr3.当ctr1从1023跳到0时,ctr3=1023.此时ctrl-ctr3<1000.n=n+1.式子中1000理论上只要是小于1023的数即可,但如取得偏大(如1022),就可能因外部机械上的原因,使检测失灵。
上面曾提到算好减速器的速比有利于编程。因为对于一些只在固定区域段动作的机构(如俯仰、回转等),让编码器只做单圈动作,n始终为0.使程序简化,也降低了乱码故障的发生。
2.5根据实际情况在程序中确定输出值,设为outpt=ctr2*c
系数c根据实际测量值确定。例如回转机构转到0度时,ctr2=a,将回转机构转到90度,(用精位仪测量),读出ctr2的值,设为d,c=90/(d-a),多测量几组角度,取平均值,这样结果更准确。
(安川公司的可编程控制器编制的编码器程序如下):
程序说明:DW00001=00435为0位时编码器读数,MW05064相当于ctrl,DF00010相当于ctr2.-9.160310E-002=-0.09160310为科学计数法,相当于系数c,DW00015相当于ctr3.DW00016=DW00002*1024.而DW00002就是n,IBl20A6为0位校正开关送给PLC的信号。MF01310为输出值output。DB000005为脉冲信号,表示DB000000接通一次,DW00002+1.
3乱码故障的排除
编码器最常见的故障就是乱码,遇到这种情况应从以下几方面进行分析。
3.1机械结构是否连接紧固,尤其注意许多编码器本身自带一套调节速比的齿轮,打开编码器箱体,将这些齿轮紧固好,注意要保持同轴度,以免损坏编码器,紧固完毕后重新进行0位校正。
3.2如问题仍存在,打开编码器接线盒,观察数据线对应的信号灯是否有常亮或常灭的,若有这种情况,检查接线并校对,若仍不能解决问题,说明编码器本身有故障,联系厂家修理。
3.3检查PLC编码器输入模块是否完好,可以换一块好的试试。
3.4程序中n值检测不灵敏,如ctrl-ctr3>1020.式子中1020偏大,不易被检测出来,不妨改为1000试试。但如果取得过小,如200.就可能在任何点都有机会符合条件,造成n连续增加,从而造成乱码。如果ctrl→ctr3语句放在ctrl-ctr3语句的后面,检测就更加灵敏,原因是程序循环逐行扫描方式延长了两条语句间的扫描时差。
3.5如果0位校正开关误动作,就会使n值变0.检查机构动作区域内有无引起校正开关误动作的东西,将其去除。
3.6机械本身转轴缺润滑油或轴安装精度有问题,导致轴转动不连续,编码器数据出现跳跃,如果正好跳过换圈点,n值本应+1或-1.但实际没有变化,导致出现乱码。
3.7n值算法有问题。笔者遇到过一种因程序算法问题引起的乱码故障,算法如下:1021=ctrl=1023.if正转,n=n+1;0=ctrl=2.if反转,n=n -1.这种算法似乎想靠机械本身的惯性冲过1021~1023与0~2这段区域,因为ctrl=1022时,如果n=n+1.就会造成瞬列数据突然加大,冲过这段区域后又恢复正常。这种算法还存在一个更大的问题:在1021~1023区域段内,如果程序扫描不止一次,n就不会只加1了。