视觉系统与 PLC 的 RS232 通讯实现
机器视觉系统发展到现在已有十多年的历史,对大多数国内的用户来说还是一个新
兴的技术领域。如何能充分发挥视觉系统的多功能,高速,高稳定性的特点以提高生产
效率,已成为广大用户关心的热点。
视觉系统在制造业的应用主要用于质检部门的品质控制,以替代人眼检测。使用视
觉系统有着人眼检测不可比拟的优势:
第一,目前视觉系统的检测速度很高,已能满足高速生产的要求
第二,就稳定性而言,人眼进行长时间检测后容易出现疲劳的现象,这必然会影响到检
测的准确性及稳定性,而视觉系统不受此影响
第三,高精度的视觉系统已达到微米级的精度,这是人眼所远远不能达到的
当然,目前视觉系统仍未能在所有领域替代人眼检测,但随着视觉技术的发展,视觉系
统取代人眼检测是必然的趋势。
由于目前视觉系统的逻辑处理能力仍然不是太强,大多只能作一些是非判断的功
能,远远不能满足多样化的控制需要。所以,有必要把视觉系统处理好的数据如:位置、
数量、面积、长度、角度等信息通过通讯端口输出到外部设备,再由外部设备进行比较、
判断、输出,这样就大大提高了视觉系统的性能。
例如,在流水线上要把到达指定位置的 CD 碟片抓取起来,并把 CD 片按标准样品表面
的印字方向放到 CD 盒里面,如下图所示:
在这种应用里,就需要把视觉系统检测到的 CD 片位置及角度这两个参数输出到外
部设备。外部设备接收到 CD 片位置的坐标后,就可以控制机械手的运动方向及距离,
以便能准确抓取 CD 片;而角度参数则是告诉外围控制系统要旋转多少角度才能达到正
确的图案方向。
综合以上的内容可知,如对获得的视觉系统的检测数据进行二次处理,其应用领域
是相当广泛的。
下面我们就以美国邦纳公司的视觉系统来举例说明,如何通过 PLC 获取视觉系统的
检测数据及其具体的 PLC 编程方法。
邦纳公司的视觉产品分为两大类,分别是 P3,P4 系列
P4 系列产品使用了 CMOS 感光元件,按像素分为 130 万像素和 1.28 万像素两种,
具有图形匹配及边缘查找功能
P3 系列产品使用了 CCD 感光元件,640X480 像素(30 万),具有图形匹配,二值
化,边缘查找,灰度等级,测量等工具
这两个系列的视觉系统均内置以太网编程口,RS232 串行接口(输出数据格式为
ASCII 码),6 个可编程 I/O 点。使用邦纳公司的视觉产品进行串行通讯时,无需通讯协
议,只须在邦纳公司视觉的编程软件 PrecensePLUS 内选定要输出的数据内容,再由
PLC 或其它外部设备发送读取数据的指令即可获得数据。
如下图 所示,我 们选择让 视觉系统 输出目标 物体的坐 标数据, 那么我们在
PrecensePLUS 软件的通讯工具一栏内把目标搜索工具下面的“图形位置”勾选。
下面分五部分来详细介绍 PLC 编程的方法。
一)串行数据接收
本实验使用了松下电工的 FP0 系列小型 PLC。当触发信号 X1 接通,对接收缓冲区
首址 DT200 清零,PLC 开始接收串行数据。
假设在视觉系统里已找到一个物体的坐标数据为(89.50 73.85),通过下图可见,在
PLC 的接收缓冲寄存器内获得的数据与原来坐标数据的格式相比,已发生了很大的变
化。
二)数据分离
数据经串行口输出来,PLC 接收到数据后把第一个 ASCII 码字符“(”放到接收缓冲区
的首址 DT201 的低位,下一个数据“8”,放到 DT201 的高位,如此类推……因此,需
要编写一段程序来把缓冲区上的数据从低位到高位,依次读取出来。
下面这段程序使用了 PLC 的索引寄存器 IX,并利用数据位操作指令 F6 来进行数据分离
处理
在 PLC 的 每 个 扫 描 周 期 , 程 序 把 每 个 寄 存 器 上 的 数 据 低 位 数 据 存 放 到
DT301,302……,高位数据存放到 DT401,402……,在本例里我设定了程序运行 10 个扫
描周期后停止分离数据,并把索引寄存器 IX 复位到初值 1,等待下一次扫描。
为了方便下面的数据整合工作,需把这些数据按实际的坐标格式存入 DT500 到
DT512,如下图所示,经分离后的数据已能很直观地看出来了。
三)ASCII 数据转换成 16 进制数据接收
由于 ASCII 码无法直接参与数学运算,所以要在数据整合之前把 DT501-DT513 之间
的常数(非常数的数据不作转换)转换成 16 进制数据,相应地存放在 DT631-DDT643,
如下表所示:
四)数据整合
我们对上表数据的结构进行分析,可以看到,我们可以把( .空格 )这几个 ASCII
码作为数据位置的判断依据,例如,字符‘.’,在数据内出现了两次,第一个‘.’之前
的数据是 X 轴坐标的整数部分,第一个‘.’到空格之前的内容为 X 轴坐标的小数部分,
如此类推,我们可得出 Y 轴坐标的整数部分,Y 轴坐标的小数部分。
我以以处理 X 轴坐标的整数部分来举个例。例如,我们先定义寄存器 DT651 用来存放
X 轴数据整数部分的个位,DT652 用来存放 X 轴数据整数部分的十位,DT653 用来存
放 X 轴数据整数部分的百位。首先比较数据区内的 DT631 的数值是否在 H30-H39 之
间,如果符合要求,我们先把它(8)放到 DT651,同时把 DT632 到 DT643 的数据向
右移一位。在下个扫描周期时,继续检测 DT631 的数据(9),如果仍在 H30-H39 之
间时,则把 DT651(8)数据左移一位,再把(9)送到 DT651,这时,DT652 数据为
(8),DT651 数据为(9)。当遇到 DT631 不在 H30-H39 时,只会出现以下情况,
H501=H2E(.)或 H501=H20(空格)或 DT501=H29(右括号)三种情况。根据前
面提到的方法,分别把数据送到相应的寄存器。
五)进行加权运算,数据还原完成
当数据分离完毕,进行加权运算后,其结果如下表所示:
注:原坐标数据为 (89.50 73.85)
X 轴整数部分百位 DT653
X 轴整数部分十位 DT652
X 轴整数部分个位 DT651
数值
0
8
9
系数
100
10
1
合计
结果
0
80
9
89
数值
系数
结果
X 轴小数部分十位 DT656
X 轴小数部分个位 DT655
5
0
10
1
合计
50
0
50
数值
系数
结果
Y 轴整数部分百位 DT663
Y 轴整数部分十位 DT662
Y 轴整数部分个位 DT661
0
7
3
100
10
1
合计
0
70
3
73
数值
系数
结果
Y 轴小数部分十位 DT656
Y 轴小数部分个位 DT655
8
5
10
1
合计
80
5
85
到此,我们已把视觉系统输出的坐标数据完整地还原出来了。
整个程序的处理流程如下图所示:
在 第 一 个 ”.” 之 前 的 数
据,送到 DT651-DT653
在 第 一 个”.” 和 空 格 之
间 的 数 据 , 送 到
DT655,DT656
空 格 和 第 二 个”.” 之 间
的 数 据 , 送 到
DT661,DT663
第二个”.”之后的数据,
送到 DT665,DT666
开始
串行数据接收
数据分离
比 较 DT631, 根
据 数 据 标 志 状
态,分别把数据
送 到 不 同 的 寄
存器
把 DT632-DT643
之 间 的 数 据 向 右
移一位
N
DT631=H29?
Y
使 用 加 权 的 方
法,把各个寄 存
器 上 的 单 个 数
据合成为整数
结束
以上介绍的是处理坐标数据的编程方法,当然通过 PLC 或其它外部设备还可以处理
其它类型的数据,这里不再枚举了。
通过以上的介绍,可以得出:有效地利用视觉系统的检测数据和通讯输出功能,能
极大地提高视觉系统的检测功能,扩展视觉系统的应用领域,满足各种不同的检测需要。
随着自动化水平的不断发展,对机器视觉的需求也是越来越广泛,要求也越来越高,
不再局限于有无的判断;在电子、半导体行业中,对产品的定位也更多的希望使用机器
视觉来完成;这些都对机器视觉的通讯功能提出更多要求,也对机器视觉与 PLC,人机
界面等的集成提出更多要求,掌握机器视觉通讯功能将会显得更加重要。