如何用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-1200 trace功能的使用
根据触发条件跟踪并记录 CPU 数据
STEP 7 提供了轨迹和逻辑分析器功能,可用于组态 PLC要跟踪和记录的变量。随后可将记录的跟踪测量数据上传到编程设备并使用 STEP 7工具分析、管理并以图形方式显示这些数据。使用 STEP 7 项目树中的“轨迹”(Traces)文件夹创建和管理轨迹。
1.在本文中我使用的是在TIA 博途 STEP 7 V14SP1软件下插入S7-1215C V4.2 CPU
2.做一个简单的累加,在OB1中编程实现 MB0的计数值 以10HZ 的频率自加1,直到MB0增加到数值 255 后又循环从 1 开始累加, Trace 记录信号 M0.0脉冲和MB0 数值的状态。
这里用到到10HZ的脉冲信号,需要在CPU属性中设置:
Trace 配置说明如下:
信号:添加 M0.0 和 MB0 作为Trace对象
记录条件:
采样:CPU 每个循环OB时间为测量点,记录时长10000 个测量点。
触发器:添加 M1.0=TRUE 作为触发器条件;预触发:10 测量点。当 M1.0=TRUE 时,满足触发条件前 10 个测量点, 开始记录 10000 个时长的测量点,达到该测量点数据数值后,Trace 记录停止。
在Trace配置界面, 点击工具栏的"在设备上安装轨迹"按钮,
点击"观察开/关"按钮,然后点击"激活记录"按钮。
Trace记录结束后,点击"添加到轨迹测量"按钮。
在项目中设备下的 Traces 下拉菜单>测量>Trace 可查看到保存的Trace图。
相关问答
plc序号是什么?
PLC序号是指在PLC程序中给每个步骤或操作分配的唯一数字标识符。它通常是一个整数,用于识别和跟踪程序的不同部分。PLC序号在程序编写和调试过程中非常重要,因...
plc通信工程如何预防恶意操作?
模块化PLC代码监控操作模式尽可能将操作逻辑留在PLC中使用PLC标志作为完整性检查对PLC代码使用加密和/或校验和完整性检查验证计时器和计数器验证和提醒...
cx-programmer无法创建数据跟踪OCX怎么处理?
您好,如果您无法在CX-Programmer中创建数据跟踪OCX,请尝试以下解决方案:1.升级CX-Programmer版本:如果您使用的是较旧的版本,请尝试升级到最新版本,可能...
西门子plc序列号是哪个?
西门子PLC序列号是PLC设备的唯一标识符,用于追踪和管理设备。该序列号通常位于设备外壳上的标签或扫描条形码上。在PLC设备的安装、调试和维护过程中,序列号是...
plc调试详细步骤?
回答如下:PLC调试的详细步骤如下:1.准备工作:确认所需的调试工具和设备已准备好,并确保PLC系统的硬件连接正确。2.读取和理解PLC程序:仔细阅读PLC程序,...
机械手控制PLC系统中有哪些传感器?
如果是工业机器人的机械手,不需要额外增加传感器,机器人自身重复精度可达0.02mm,对于焊接或者搬运场景,需要考虑焊缝跟踪、防碰撞或柔性抓取的要求。如果是...
三菱plc程序怎么改变类型?
您好,要更改三菱PLC程序中的数据类型,您需要按照以下步骤操作:1.打开三菱PLC编程软件(例如GXWorks2或GXDeveloper)并打开要更改类型的程序。2.在程序...
plc程序调试后变成只读怎么办?
如果您在进行PLC程序调试后出现了程序只读的情况,可能是由于PLC的程序保护功能导致的。以下是一些可能有用的解决方案:1.检查PLC程序和控制面板:检查PLC程...
三菱plc写程序如何搭建框架?
三菱PLC框架式编程方法包括以下步骤:1.程序模块化设计:将程序分成多个不同的模块,每个模块负责一个特定的功能或子任务,以方便管理和修改。2.状态机设计:...
西门子700021报警怎样处理?
西门子700021报警处理步骤如下:1.确认报警:先确认报警是否真实有效,了解报警的类型和具体内容。如果可能,尽量与报警来源进行沟通,了解情况。2.立即响应:一...