1. 项目概述
在工业自动化领域,精准的角度定位一直是个技术难点。最近我在一个自动化产线改造项目中,遇到了一个棘手的需求:需要为旋转工位实现0-360°的精准定位,并且要求断电重启后还能保持之前的位置数据。经过反复测试和优化,最终采用西门子200Smart PLC+威纶通MT8070IH触摸屏+欧姆龙EB62-CWZ5B编码器的方案成功解决了这个问题。
这个方案的核心价值在于:
- 实现了0.1°级别的高精度角度定位
- 具备断电保持功能,数据可保存72小时以上
- 系统稳定性好,连续72小时测试无漂移
- 成本相对低廉,适合中小型自动化项目
2. 硬件选型与配置
2.1 PLC选型考虑
在这个项目中,我选择了西门子S7-200 Smart系列PLC,具体型号为ST30。选择这个型号主要基于以下几点考虑:
-
I/O点数:ST30自带18点输入/12点输出,对于简单的角度定位应用已经足够。如果需要更多I/O点,可以考虑ST40型号。
-
高速计数器:200Smart系列内置6个高速计数器(HSC),其中HSC0和HSC3支持AB相正交计数,非常适合编码器应用。
-
性价比:相比西门子其他系列,200Smart价格更亲民,但性能完全能满足这类应用需求。
提示:如果项目预算允许,ST40型号提供更多的I/O点和内存空间,为未来可能的扩展留出余地。
2.2 编码器选型与特性
欧姆龙EB62-CWZ5B增量式编码器是这个方案的关键部件,其主要技术参数如下:
| 参数 | 值 | 说明 |
|---|---|---|
| 类型 | 增量式 | ABZ三相输出 |
| 分辨率 | 1000线/转 | 实际使用4倍频后为4000脉冲/转 |
| 输出形式 | 开路集电极 | 需要外接上拉电阻 |
| 最高响应频率 | 200kHz | 满足高速旋转需求 |
| 电源电压 | 5-24V DC | 本项目使用24V供电 |
| 防护等级 | IP50 | 适合一般工业环境 |
选择这款编码器的原因:
- 1000线的分辨率经过4倍频后可达4000脉冲/转,对应0.09°/脉冲的理论分辨率,完全满足0.1°级别的精度要求。
- 开路集电极输出抗干扰能力强,适合工业现场环境。
- 欧姆龙品牌质量可靠,市场保有量大,维护方便。
2.3 触摸屏选型
威纶通MT8070IH触摸屏是这个方案的人机交互界面,选择它的主要理由:
- 通信兼容性:原生支持西门子S7-200 Smart系列PLC的PPI通信协议,无需额外配置。
- 编程便利:使用EasyBuilder Pro软件编程,界面友好,功能丰富。
- 显示精度:支持浮点数显示,可以精确显示0.1°的角度值。
- 性价比:相比西门子原装触摸屏,价格更具优势。
3. 硬件连接与配置
3.1 编码器接线详解
正确的接线是系统稳定运行的基础。欧姆龙EB62-CWZ5B编码器的接线方式如下:
-
电源接线:
- 棕色线:接24V DC正极
- 蓝色线:接24V DC负极
- 屏蔽层:单端接地(PLC侧的0V)
-
信号线连接:
- A相(白色线):接PLC的I0.0(HSC0的时钟输入)
- B相(黑色线):接PLC的I0.1(HSC0的方向控制)
- Z相(橙色线):接PLC的I0.2(零点信号)
重要提示:编码器电源最好独立供电,不要与PLC共用同一个开关电源,否则可能引入干扰导致角度漂移。
3.2 PLC输入滤波设置
为了确保信号稳定,需要对PLC的输入点进行适当滤波设置:
- 打开STEP 7-Micro/WIN SMART软件
- 进入"系统块"→"输入滤波器"
- 设置I0.0、I0.1、I0.2的滤波时间为6.4ms
- 下载配置到PLC
这个滤波时间可以有效滤除高频干扰,同时不会影响正常编码器信号的采集。
4. PLC程序设计
4.1 高速计数器配置
高速计数器是角度定位的核心,配置代码如下:
code复制// 初始化程序(只在第一次扫描时执行)
LD SM0.1
MOVB 16#F8, SMB37 // 配置HSC0控制字节:
// bit7=1(允许计数)
// bit6=1(允许更新当前值)
// bit5=1(允许更新预设值)
// bit4=1(允许更新计数方向)
// bit3=0(减计数)
// bit2=0(正交计数模式)
HDEF 0, 12 // 定义HSC0为模式12(AB相正交4倍频)
MOVD 0, SMD38 // 初始值清零
HSC 0 // 激活HSC0
这段代码实现了:
- 配置HSC0为AB相正交4倍频模式(模式12)
- 初始化计数器值为0
- 启用高速计数器
4.2 角度计算逻辑
将编码器脉冲数转换为角度值的核心算法:
code复制// 主程序(每个扫描周期执行)
LD SM0.0
ITD HC0, AC0 // 将HC0的当前值(32位)转存到AC0
DTR AC0, VD100 // 将整型转换为浮点数
/R 4000.0, VD100 // 除以4000(1000线×4倍频)
*R 360.0, VD100 // 乘以360°转换为角度值
这个算法的关键点:
- HC0是高速计数器的特殊寄存器,直接读取当前计数值
- 1000线编码器经过4倍频后,每转产生4000个脉冲
- 通过除以4000再乘以360,将脉冲数转换为0-360°的角度值
- 最终结果存储在VD100中,供触摸屏显示
4.3 断电保持功能实现
为了实现断电后角度数据不丢失,需要使用PLC的EEPROM保持功能:
code复制// 数据保存程序
LD M0.0 // 保存触发信号(来自触摸屏按钮)
MOVW 16#02, SMW31 // 设置VD100为保持区域
MOVD &VB100, SMW32 // VB100是VD100的起始地址
PLS 1 // 触发脉冲,将数据写入EEPROM
这个功能的关键注意事项:
- 每次需要保存数据时,通过触摸屏触发M0.0
- 数据写入EEPROM需要一定时间(约10ms),期间不要断电
- EEPROM有写入次数限制(约10万次),不要频繁保存
5. 触摸屏程序设计
5.1 角度显示设置
在EasyBuilder Pro中设置角度显示元件:
- 添加"数值显示"元件
- 设置寄存器地址为VD100(32位浮点数)
- 数据显示格式设置为"##0.0°"
- 设置刷新周期为200ms
5.2 零点校准功能
零点校准是确保长期精度的重要功能,实现步骤如下:
- 在触摸屏上添加"回零"按钮
- 按钮关联PLC的M0.1位
- PLC程序中添加以下代码:
code复制// 零点校准程序
LD M0.1
EU // 上升沿检测
MOVD 0, SMD38 // 重置HSC0当前值为0
HSC 0 // 更新HSC0
R M0.1, 1 // 复位按钮信号
当机械装置回到零点位置时,按下回零按钮,PLC会捕捉Z相信号并重置计数器为0。
6. 调试经验与问题解决
6.1 常见问题及解决方案
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 角度显示不稳定,有±3°左右漂移 | 编码器电源干扰 | 为编码器单独配置电源,不与PLC共用 |
| 计数方向相反 | A/B相接线顺序错误 | 调换A相和B相的接线 |
| 零点校准不准确 | Z相信号抖动 | 调整硬件滤波时间,或改用常闭触点 |
| 断电后数据丢失 | EEPROM写入失败 | 确保写入期间不掉电,延长保存间隔 |
6.2 优化建议
-
抗干扰措施:
- 使用屏蔽双绞线连接编码器
- 编码器电缆远离动力线
- 确保屏蔽层良好接地
-
精度提升技巧:
- 定期进行零点校准(建议每8小时一次)
- 在机械结构允许的情况下,尽量使用高分辨率编码器
- 确保机械连接无间隙,避免反向间隙误差
-
系统可靠性:
- 添加软件看门狗,防止程序跑飞
- 对角度值进行软件滤波(如移动平均)
- 设置角度变化率限制,防止异常跳变
7. 应用扩展与进阶
这个基础方案可以进一步扩展为更复杂的功能:
- 多圈计数:通过记录Z相脉冲数,可以实现多圈角度测量
- 速度计算:通过计算单位时间内角度变化,可以得到旋转速度
- 位置比较:设置多个角度位置点,触发不同动作
- 网络通信:通过以太网或PROFIBUS将角度数据上传到上位机
对于需要更高精度的应用,可以考虑以下改进:
- 使用绝对值编码器替代增量式编码器
- 采用17位或更高分辨率的编码器
- 使用更高级别的PLC(如S7-1200/1500)和专用运动控制模块
在实际项目中,这个方案已经成功应用于:
- 旋转工作台的精确定位
- 机械臂关节角度控制
- 绕线机的排线定位
- 分度盘的工位控制
通过合理调整参数和机械结构,这个方案的精度可以满足大多数工业应用的需求。关键在于理解每个环节的工作原理,并根据实际工况进行优化调整。
