如何用PLC控制实现编码器的定位功能?
严格来讲,编码器只会告诉你该如何定位,要如何执行,是需要靠数控系统(或者PLC之类控制器)控制伺服或者步进电机来实现定位的,编码器好比人的眼睛,知道电机轴或者负载处于当前某个位置,工业上用的一般是光电类型编码器,下边简单说明一下。
01 简单说下编码原理和位置测量
光电编码器是在一个很薄很轻的圆盘子上,通过紧密仪器来腐蚀雕刻了很多条细小的缝,相当于把一个360度,细分成很多等分,比如成1024组,这样每组之间的角度差是360/1024度=0.3515625度。
然后有个精密的发光源,安装在码盘的一面,码盘的另外一面,会有个接收器之类的,使用了光敏电阻这些元件加放大和整形电路组成,这样码盘转动时候,有缝隙的地方会透光过去,接收器会瞬间收到光脉冲,经过电路处理后,输出一个电脉冲信号,这样码盘旋转了一周,会对应输出1024个脉冲,第一个脉冲位置如果是0,第二个脉冲位置就是0.3515625°,第三个脉冲位置是0.3515625°*2,以此类推,这样只要有仪器能读到脉冲个数,就可以知道码盘对应在什么位置了,如果把编码器安装到电机的轴上,电机轴和码盘是刚性连接,两者的位置关系会一一对应,通过读编码器脉冲,就可以知道电机的轴位置。
而电机轴,比如会通过同步带,齿轮,链条等带动一些负载,比如控制丝杆,这样会有个所谓电子齿轮比的关系,电机转一圈,丝杆会前进多少毫米,这样读到了对应编码器上输出多少给脉冲,通过脉冲数就可以反推出当前丝杆的位置。
但是编码器是圆的,如果无限制旋转下去,角度会无穷大,所以设计了一种增量型的编码器,转一圈,会输出三组信号ABZ,其中AB是一样的脉冲,比如上边说的一圈有1024个脉冲,AB相脉冲对应一圈内的圆周角度,而且两种脉冲是处于正交状态的,如果是正反转,通过判断AB相脉冲的上升沿和下降沿的先后顺序,就可以知道编码器当前是顺时针还是逆时针方向旋转的。
另外有个Z相脉冲,是因为圆周虽然会不停转下去,角度会无穷无尽,但是都是一周一周的重复而已,零相脉冲固定在圆周某个位置,编码器每转一圈,只输出一个零相脉冲,这样如果以Z相脉冲为基准点,这样每次读到这个脉冲时候,系统就清零一次,就可以让角度最大值控制在360°以内,相当于一个零基准点了。
这样即使系统断掉了,重新上电,只要能找到这个基准点,就可以知道丝杆的初始位置在什么地方了。
以上这种定位叫增量坐标系,所以编码器就是增量型编码器,应用比较广泛,因为灵活而且价格便宜。
如果只设备只需要转一圈的,也就是角度在360°内的,编码器可以细分精密一点,比如有13位,相当于2^13次方个脉冲一圈,对应着360°,这种脉冲数和角度一一对应,不怕系统断电需要重新调整零位,这种编码器叫单圈绝对值编码器。如果负载需要转多圈的,但是这个圈数也不能非常多,比如5圈,相当于5*360°=1800°,这样脉冲和1800°一一对应,这些在一些高档的数控机床上应用比较多,可以知道丝杆或者一些旋转工作的当前精密位置,而且不用担心系统断电归零问题。
此外,编码器还有磁电方式的,比如在码盘上加工了很多个南北间隔的小磁铁,通过霍尔去读小磁铁信号,输出信号,同样经过放大和整形变成了电脉冲,这点和光电编码器是类似的,而且价格会便宜点,可靠性会高,但是精度就比光电要差点。
02 PLC如何通过编码器判断位置
PLC能输入开关量,也就是一高一低的电平电压,而编码器脉冲信号,可以理解一定时间内,用极快的速度完成的一组开关量。但是因为这种开关量的频率太高了,所以PLC的普通I/O口是无法准确读到这些脉冲的个数的,因为PLC工作过程中存在扫描周期,需要每个一段时间才去刷新一下普通I/O口的数据,而编码器的精度太高了,单位时间内输出的脉冲个数太多,普通I/O是无法胜任的。
一般PLC会设计有高速计数端口,本质是利用了底层单片机的硬件逻辑来完成这些编码器计数的,避开了扫描周期问题,PLC都设计有专门的高速计数指令,使用的时候,直接调用这些指令就可以读到当前的脉冲值了。
但是脉冲的计算和输出上,由于扫描周期存在,往往也会存在着滞后影响,如果用来控制一些执行机构,比如气缸来动作裁切动作,这样要考虑提前量的补偿问题。
提醒一下,如果想用PLC来控制伺服或者步进系统,往往并不需要通过编码器反馈来判断位置,通过一些PLS指令之类的来发出位置脉冲给伺服驱动器,位置环在伺服驱动器内部构成就好,而PLC这边只是一个指令机构,并没有构成位置闭环,当然如果是专门定位模块控制,使用了NC之类的控制方式,是可以在里边构建位置闭环的。
↓技成PLC课堂专属学习资料
台达伺服与S7-200应用实例
下面是台达ASD-A系列伺服 与西门子S7-200 /CPU226CN的应用实例 ,一个比较粗糙设备的实例 ,精度不高。高手就不必要看了,看了也请一笑了之,呵呵@_@
需要改进的地方如下:
1. PLC配置:
应当配置S7-200专用的100KHz或以上脉冲输出的运动控制模块,而不要采用S7-200 CPU本体的20KHz脉冲输出——虽然CPU224XP是100KHz脉冲输出,但其控制功能仍然不强。采用专用的100KHz或以上脉冲输出的运动控制模块,控制精度可以更高,而且控制功能可以更强——采用CPU本体的20KHz脉冲输出,节约那点钱是不划算的。
2. 电路设计:
伺服 电机的编码器输出信号应当反馈至PLC,也就是伺服 驱动器的位置脉冲输出提供给PLC。当然,应当指定除HSC0和HSC3之外的高速计数器(HSC0和HSC3备用,因为HSC0可以计Q0.0输出脉冲,HSC3可以计Q0.1输出脉冲),接线也得对应相应的端子:
只有这样,才可以确保准确的控制动作,有些时候也可以使程序更简单(因为有准确的位置判断依据了)
PLC电路也有些不妥的地方:
我把以前的控制方案贴在下面,给大家参考一下:
控制方案
一、 控制设备条件
1. 伺服 电机转速与给定脉冲频率的关系
台达ASMT07L250BK伺服 电机的额定转速为3000rpm,最高转速为5000rpm;编码器分辨率为2500ppr,其AB信号经过伺服 驱动器4倍频处理后成为10000ppr。
因此,要达到额定转速3000rpm,给伺服 驱动器的脉冲信号应当是:3000转/分钟÷60秒/分钟×10000脉冲/转=500K脉冲/秒,也就是说输入频率应当是500KHz。由于西门子S7-200 系列PLC输出的最大脉冲是20KHz,所以伺服 驱动器的电子齿轮应当设定为1:25。
2. 伺服 电机转一圈X轴Y轴的移动距离 3
A. X轴伺服
X轴伺服 的传动结构:X轴伺服 电机驱动直连在伺服 电机上减速比为1:60的减速机,减速机上配节圆为129.23mm的同步带轮,再通过同步带驱动机械手在X轴方向运动。因此X轴伺服 电机转1圈,机械手在X轴方向的移动距离为:129.23×π÷60=6.76646686163mm。也就是说,机械手在X轴方向每行走1mm,需要给伺服 电机1477.8761508027339801663557711312个脉冲。
B. Y轴伺服
Y轴伺服 的传动结构:Y轴伺服 电机驱动直连在伺服 电机上减速比为1:4的减速机,减速机上配30齿的同步带轮,通过同步带驱动齿数为28的同步带轮;这个齿数为28的同步带轮与丝杆轴连接,丝杆的螺距为10mm。因此Y轴伺服 电机转1圈,机械手在Y轴方向的移动距离为:10×30÷28÷4=2.67857142857mm。也就是说,机械手在Y轴方向每行走1mm,需要给伺服 电机3733.3333333353244444444455063704个脉冲。
二、 控制方案
1. 机械手初始状态:X轴伺服 电机位于原点位置;Y轴提升气缸伸出位于最低位置;Y轴伺服 电机根据产品种类不同(共计3种产品)而位于相应的位置(3种产品3个位置)——如果对于所有产品而言Y轴伺服 电机在同一位置,那么抓取时将不在产品中心,放下时也把产品放不到夹具中心位置,而且当增加新产品时抓取和放下位置可能偏离更多而导致无法实现抓取和放下动作。
2. 当光电开关先检测到夹具上有内胆,如果弹簧手柄型行程开关检测到且仅检测到板链线夹具的最前边沿,那么以下动作同时进行:X轴伺服 电机跟随板链线变频器的速度右移(PLC与变频器通信得到变频器的当前频率值),机械手夹紧装置夹紧。为了让不同规格内胆的垂直中心线与机械手初始状态垂直中心线重合(这样才能抓到内胆中心),所以光电开关必须比行程开关先动作,光电开关动作过程中行程开关也会动作。
3. 当夹紧装置夹紧到位(夹紧气缸相应磁性开关动作)后,Y轴提升气缸缩回位于最高位置。
4. 当Y轴提升气缸提升到位(Y轴提升气缸相应磁性开关动作)后,确认差速链工装板已经到位(SL11和SL12同时动作)、工装板上没有内胆(PH2没检测到内胆)。如果没有同时满足差速链工装板已经到位和工装板上没有内胆两个条件,则控制板链线变频器停车(以避免机械手上的内胆和差速链线上的工装板或工装板上的内胆发生撞击;变频器的减速停车时间不能太长<例如5秒>,否则板链线上的夹具/内胆会和机械手上/机械手上的内胆发生撞击,建议将变频器停车方式设置为自由停车方式),待满足这两个条件后重新启动变频器并进行下一步动作。如果同时满足差速链工装板已经到位和工装板上没有内胆两个条件,以下动作同时进行:X轴伺服 电机右移,X轴旋转气缸旋转,Y轴旋转气缸旋转。
5. 当X轴伺服 电机右移到位(程序检测)、X轴旋转气缸旋转到位(X轴旋转气缸相应磁性开关动作)、Y轴旋转气缸旋转到位(Y轴旋转气缸相应磁性开关动作)后,Y轴伺服 电机根据产品种类不同下移相应位置(3种产品3个位置,大概20mm左右)。
6. 当Y轴伺服 电机下移到位(程序检测)后,夹紧装置松开。
7. 当夹紧装置松开到位(夹紧气缸相应磁性开关动作)后,Y轴伺服 电机上移220~290mm左右(对于3种产品的位移均相同)。因为只有Y轴伺服 电机上移220~290mm左右,机械手才不会和内胆发生撞击。
8. Y轴伺服 电机上移到位(程序检测)后,X轴伺服 电机左移。
9. X轴伺服 电机左移延时后(如果不延时就进行后面的动作可能导致机械手和内胆发生撞击),以下动作同时进行:X轴旋转气缸旋转复位,Y轴旋转气缸旋转复位,Y轴提升气缸伸出,Y轴伺服 电机先回到Y轴原点(3种产品中的最高Y轴位置)后再下降调节当前产品对应的Y轴高度。
10. X轴伺服 电机左移到位(X轴原点检测行程开关动作)、X轴旋转气缸旋转复位到位(X轴旋转气缸相应磁性开关动作)、Y轴旋转气缸旋转复位到位(Y轴旋转气缸相应磁性开关动作)、Y轴提升气缸伸出到位(Y轴提升气缸相应磁性开关动作)、Y轴伺服 电机调节当前产品对应的Y轴高度后,回到机械手初始状态,准备下一轮循环动作。
11. 差速链线阻挡器的控制:根据产品种类选择相应的阻挡器控制——当前产品为中号和小号时,YV11处于控制状态,YV12始终处于缩下状态(线圈得电);当前产品为大号时,YV12处于控制状态,YV11始终处于缩下状态(线圈得电);当自定义产品规格大于大号时,与大号控制相同;当自定义产品规格小于小号时,与小号控制相同。只有这样,才能基本保证产品放在差速链线工装板的中心位置。只有当机械手夹紧装置松开时,受控阻挡器才下降2秒左右处于放行状态,平常状况下均处于阻挡状态。
12. 触摸屏人机交互:设置1个选择开关,用于选择自动探测变频器频率或手动给定变频器的当前运行频率,这样可以保证在PLC与变频器通信不正常时机械手正常运行。设置3种甲方提供的固定产品规格(长度、直径),另外再设置1种由用户给定的产品规格,这样保证了产品的多样化生产。
A. X轴伺服
X轴伺服 的传动结构:X轴伺服 电机驱动直连在伺服 电机上减速比为1:60的减速机,减速机上配节圆为129.23mm的同步带轮,再通过同步带驱动机械手在X轴方向运动。因此X轴伺服 电机转1圈,机械手在X轴方向的移动距离为:129.23×π÷60=6.76646686163mm。也就是说,机械手在X轴方向每行走1mm,需要给伺服 电机1477.8761508027339801663557711312个脉冲。
请问老菜鸟 PLC实际发的脉冲就是1477.8还是伺服 驱动器经过内部电子齿轮比后的1477.8个脉冲?
那个计算值不是PLC发的脉冲,是需要给伺服 电机的脉冲,也可以理解为经过内部电子齿轮比后的脉冲。
-----------------------------------------------------------------------------------------------------------------------
1477.8是内部电子齿轮比(1:25)后的脉冲的,在脉冲频率不变为20KHZ话,
则X轴行走1mm,PLC实际需给伺服 控制器的脉冲数为:1477.8/25=59.1?
最不省心的是S7-200的输出是源型, 这和台达的伺服 输入没法联啊, 得加个光耦转一下, 寒!
这一点上就松下的做得好, 双向光耦,兼容日系PLC和西门子的.
一直打算用一下台达的伺服 , 主要还是它内置了点到点的定位, 而我的PLC高速脉冲不够, 正好可以用上这个功能. 可是PLC是S7-200. 又出了信号兼容的问题.
台达的伺服 输入是漏型;
不过我采用S7-200的DO模块,输出源型或漏型是可以根据情况变更的,这点没有问题。
相关问答
台达PLC和编码器怎么样连接使用?
程序最好还是自己写的,我跟你说下我的思路吧。三菱的我没用过,西门子的是这样用的,首先,你把编码器接入到PLC上,然后在程序里面用个高速计数器计数,一般在...
plc可以实时输出编码器的脉冲吗如果可以需要怎么写这个程序?
你要读取台达伺服电机的编码器当前位置有两个途径。第一,通过通讯R485口,即CN3口;第二,将CN1的脉冲输出端子引出接入PLC高速输入脉冲端子。前者接线简单,...
台达伺服编码器连线?
B2驱动器侧编码器出线:(PING9号码)电机出线:(快速插头号码)1#---白色7#---棕色,5V2#---黑色4#---红白色,T-3#---1#---白色,T+4#---红...
编码器与plc怎样连接?
台达的EH系列PLC有一组高速计数器输入,X0、X1、X2、X3,用C251两相两输入X1=A、X2=B,C252时X0=A、X1=B、X2=RC253时X0=A、X1=B、X2=R、X3=S...
台达编码器型号及代码说明?
ZKX产品型号,外径38盲孔轴8;6A是顺序号;50BM是500脉冲,B指的是AB相位差90度,M指旋转编码器每旋转一圈有一个零位信号;7.5T指零位脉冲信号的脉冲宽度;GO5E...Z...
台达伺服电机的编码器反馈脉冲16万个这是怎么算的?
这个是伺服电机本身的编码器分辨率,不需要自己计算,是伺服电机生产厂家的工艺技术决定的。编码器分辨率数字越大,一般来说定位的精度可以越高。这个是伺服电...
台达PLC通讯指令卡住?台达plc怎样选择?
[回答]RS指令的熟悉及运用。RS-485通讯格式的熟悉及运用。台达变频器通讯格式的熟悉及运用。RS-485通讯程序的编写及运用。编码器与PLC的硬件接线、图纸设...
台达B2系列的伺服电机编码器的每转脉冲是多少?求救?
跟电子齿轮比有关--P1-44;P1-45.编码器的分辨率是160000.初始值的电子齿轮比为16:10,所以每转脉冲数为160000*(10/16)=100000跟电子齿轮比有关--P1-44;...
伺服电机编码器怎样调零?
伺服电机编码器的调零是指将编码器的零点位置设置为零的过程,一般步骤如下:1.把伺服电机的控制器调节到“自动调零”状态;2.必要时对伺服电机进行连续转动,...
编码器是如何确定分辨率的?
编码器是如何确定分辨率的,首先我们要明白分辨率指的是什么,编码器的分辨率是指编码器旋转一周输出的脉冲数,如1024p/r,2000p/r等等。而我们平常使用常常采用...