基于VisionPro和PLC的视觉测量定位系统

2021-12-22 13:21罗付强刘宏岩何铠锋
智能制造 2021年6期
关键词:机软件调用上位

杨 鑫,罗付强,刘宏岩,杨 健,何铠锋

(重庆红江机械有限责任公司,重庆 402162)

1 引言

近年来,机器视觉系统以其高效率、高可靠和低成本的特点在国内外取得了广泛的应用。机器视觉是一门涉及图形图像、计算机软件、自动化、机械设计和人工智能等诸多领域的交叉学科。目前业内关注较多的是机器视觉系统的硬件部分或软件部分,然而,在视觉软件得出数据后,往往需要将数据传输至 PLC 及上位机,PLC 根据数据结果做出分析判定,并控制相关设备进行相应动作,上位机对数据进行整理存档、集成展示等。例如工厂中常见的物料分拣视觉系统、立体仓库视觉管理系统、零件质量视觉检测系统、以及本项目涉及的零件自动测量定位视觉系统等。

2 系统概况

通过视觉系统对零件进行直径测量和位置矫正,零件随机放置,其位置并不一致,通过视觉软件获取零件图像并进行处理,得出直径和零件位置数据,将位置数据传至PLC,PLC 根据零件实际位置控制伺服电机将其矫正至固定位置,以供机器人等自动装置夹持零件进行加工装夹或装配,保证零件顺利装入。项目采用的视觉软件是 Cognex公司的 VisionPro,PLC 为 Siemens 公司的 S7-1200,电机为 Siemens 公司的 V90 伺服电机。通过 VisionPro 创建 QuickBuild 视觉项目,利用 C# 在 VS 环境下调用QuickBuild 项目开发上位机软件,通过类库 S7.NET 与 S7-1200 通信,实现上位机软件与 PLC 的数据交互,PLC 获取零件位置数据后,控制 V90 伺服电机动作,实现零件的矫向功能。系统组成如图1所示。

图1 视觉定位系统组成

3 VisionPro QuickBuild项目创建

项目选用 Basler acA1300-30gm 相机、Computar M2514-MP 镜头、日本 CCS LDR2-70RD 环形 LED 光源。通过软件触发拍照指令,通过 GigE 千兆以太网接口协议将图像反馈至 VisionPro。VisionPro 提供了一个交互式的开发环境,可以利用 VisionPro 来获取图像,集成视觉工具来处理图像,生成 QuickBuild 应用项目,在 QuickBuild 项目中,先后应用工具见下表。

表 QuickBuild 工具

?

视觉系统校准标定是补偿相机的线性和非线性误差必不可少的环节,另一方面,机器视觉系统的数字图像处理是以像素为单位来表示的,而工程应用的长度单位采用的是毫米、厘米或英寸等作为物理尺寸单位。因此,要想获得常规的测量结果数值,需要建立像素与实际尺寸的对应关系,标定实际上就是确定每个像素所表示的实际物理尺寸。标定的准确与否,将直接影响视觉测量系统的测量准确性,标定工作的频密程度与具体测量项目的准确度要求相关,一般情况下视觉系统每次开机都应做一次标定,或每天做一次标定;准确度要求高的则应考虑标定工作做得频密,QuickBuild 中采用 CogCalibCheckerboardTool 工具进行标定,在 CogCalibCheckerboardTool 标定工具中,输入的参数包括校准点阵模板两点之间在

X

方向和

Y

方向的实际距离,这是标定的依据。标定工具根据

X

Y

的值,用优化的算法将复杂的标定信息与图像信息结合,实现图像像素坐标到实际坐标的转换,值得注意的是,标定板一定要与零件特征平面等高,这样标定的数据才能真实反映特征数据。项目采用9×9点阵式标定板,圆点直径为 1 mm,圆心距为2 mm,在标定工具中设置如图2所示。得到标定图像后,需要在图像中寻找模板特征来定位图像,模板是图像(或其子图)的一种表达方式,其本身仍然是一幅图像。一般情况下,模板在目标图像中来回移动,直到找到使某个匹配函数值达到最大的位置为止,可以比较模板

T

和子图

f

的内容,若两者一致,则

T

和子图

f

之差为零,所以可以用下列的函数来衡量

T

f

的相似程度:

其中,模板尺寸是

K

×

K

,式 (1) 对模板

T

与子图

f

在坐标处图像之间匹配程度提供了度量。在模板匹配中,一个基本问题就是对模板尺寸大小的选择问题,如果模板选择过小,就难以估计图像的变化,以至于无法做出准确的估计,如果模板太大,则窗口中覆盖的面积太大,就无法实现匹配。

标定和模板匹配是项目关键工具,通过这两个工具获取并匹配到标准物理尺寸的目标图像,然后通过寻圆拟合、构建线、拟合线和求夹角等工具组合求出零件外径及方位角。将 CogPMAlignTool 匹配的特征数量(定位结果)、CogFindCircleTool 拟合的外圆直径值(测量直径)、CogAngleLineLineTool 计算的角度(矫向角度)添加到 CogResultsAnalysisTool 进行处理运算,并添加到QuickBuild 发送项,通过高级语言调用 QuickBuild API 来获取发送项,开发高级应用功能。

图 2 CogCalibCheckerboardTool 工具和标定板

4 上位机软件开发

上位机软件采用 C# 在 Visual Studio 2019 环境中开发,主要是调用 QuickBuild 项目、获取测量直径及矫向角度、PLC 通信及控制、获取 PLC 执行状态等。

4.1 调用 VisionPro QuickBuild 项目

VisionPro 可以为相机分配离散 IO,利用应用程序向导可以创建完善的 QuickBuild 应用程序,直接用于终端机。但是这种方式不方便与外界进行交互,而且要配备 Cognex 的离散 IO 硬件,限制了应用程序的灵活性。项目采用“QuickBuild+高级语言”开发模式,VisionPro与高级语言的联合开发支持三种形式:高级语言调用VisionPro 控件、高级语言调用 VisionProToolGroup、高级语言调用 VisionProQuickBuild。第一种方式完全脱离VisionPro 开发环境,直接在高级语言环境中调用 VisionPro控件 dll 进行编译,这种开发方式足够灵活,但开发难度相对较大,且不利于后期调试维护;高级语言调用VisionProToolGroup 是在 QuickBuild 中将所有的视觉工具集成到一个 ToolGroup 中,然后将其单独保存成 vpp 文件,高级语言调用这个 vpp 文件进行集成开发,其优点是不必定义线程来检测外部信号,可以采用外部 I/O 信号触发的方式,适合用在一些高频率取像的项目中;高级语言调用 VisionProQuickBuild 是将 QuickBuild 保存为一个完整的项目,高级语言直接调用该项目,其优点是视觉项目与高级语言完全脱离,只需更改 QuickBuild 即可完成视觉的大多数修改工作,利于后期重新标定、维护修改。

项目采用 C# 调用 VisionProQuickBuild 的开发模式,在VS环境中创建窗体应用程序,调用 VisionPro 开发的QuickBuild 项目。VisionPro 程序集是针对 .NET Framework 4.0 开发的,因此开发环境 Framework 要配置为4.0以上版本。在窗体上添加一个 VisionPro 的 CogRecordDisplay 控件,用于显示图像,然后引用以下程序集:

随后调用 QuickBuild 项目及运行结果,关键代码如下:

4.2 PLC 通信控制

上位机与 S7-1200PLC 有多种通信方式,采用 S7.NET实现 PLC 的通信,S7.NET 是一个 PLC 驱动程序,要求PLC 必须具有 Profinet 功能,上位机通过以太网连接西门子 PLC。S7.NET 是完全基于 C# 开发编写的开源类库,因此在 C# 项目开发中可以轻松地调用调试,实现上位机软件与西门子 PLC 的通信控制功能。

在 C# 窗体应用程序中,引用“S7.Net”程序集,添加 Timer 控件定时扫描 PLC 并读写 PLC 状态,关键代码如下:

上位机软件与 PLC 协同配合完成视觉定位矫向功能,上位机获取零件位置数据,PLC 执行位置矫正并反馈执行结果,两者必须配合得当。其控制过程是: PLC 首先发出视觉请求信号,上位机执行视觉取像及处理,随后向 PLC发送零件位置数据,PLC 得到数据后,执行矫向动作,并反馈完成信号,上位机再次进行视觉处理,判定矫向结果是否正确,若不正确,重复上一过程直至正确,然后发出“OK”信号,结束视觉处理;另一种情况是如果获取图像模板匹配不成功,则直接输出“NG”信号结束视觉处理。

由于 PLC 的信号采用脉冲输出,上位机软件是通过定时器的方式扫描 PLC 状态,并非实时采集。对于上位机而言,PLC 输出只有“0”或“1”两种情况,无法检测上升沿或下降沿。在实际应用中,如果定时器时间长度与PLC 信号脉冲设置不当,上位机有可能会重复读取或漏掉一些 PLC 信号。比如,当 PLC 视觉请求信号脉冲宽度大于上位机软件扫描周期时,上位机在连续两个扫描周期内获取的信号是一样的,就会作出两次视觉处理;当 PLC 视觉请求脉冲宽度小于上位机扫描周期时,则上位机很有可能会错过这个信号而不执行任何动作,这种情况是绝对不允许的。因此,首先必须保证 PLC 信号脉冲长度大于上位机扫描周期,然后在上位机软件通过程序将 PLC 信号构造为 “上升沿”信号,在上位机程序中,定义一个 Bool 变量,当第一次检测到 PLC 矫向请求为“1”时,将该变量置为“1”,直到 PLC 矫向请求为“0”时,将该变量置为“0”。运行流程如图3所示。

图 3 视觉处理流程

5 PLC运动控制

S7-1200 在运动控制中使用了轴的概念,通过对轴的组态,包括硬件接口、位置定义、动态特征和机械特性等,与相关的指令块组合使用,可以实现绝对位置、相对位置、点动、转速控制和自动寻找参考点的功能。项目用1200PLC 通过 PROFINET 通信方式连接西门子的 V90 PN驱动装置,驱动装置用于控制轴的运动,通过 PROFIdrive报文3进行数据传输,使用 V90 PN 的 GSD 文件,将 V90 PN 组态为 S7-1200 的 IO device,作为从站集成到硬件组态中,在 S7-1200 中以工艺对象的方式来实现伺服电机的零件定位矫向控制功能。

V90 伺服驱动组态完成后,使用工艺中的“Motion control”指令块进行运动控制编程,这里使用了“使能轴”和“点动轴”两个指令块,如图4所示。

图 4 PLC Motion control 控制程序

“PLC 矫向请求”由“机器人矫向请求”和“电机旋转完成”共同触发,PLC 接收到机器人矫向请求后,首次向上位机发出矫向请求,上位机执行视觉处理并将零件旋转角度传输至 PLC 的 MD94,随后启动伺服电机旋转,电机旋转完成后,PLC 再次发出矫向请求,上位机重新取像,验证矫向结果是否正确,若正确则返回“OK”信号,若不正确则再次传输新的零件位置数据,直至零件矫向合格为止。

6 结束语

工业视觉项目往往涉及到视觉软件、上位机和 PLC运动控制等多学科的交叉,作为机器视觉是否能得到有效应用,不仅在于图像的识别处理,还在于得出数据后的系列操作,这种集成在工业应用项目中尤为突出,一个完善的工业视觉项目应该包括“视觉处理—执行控制—结果验证”,形成闭环控制。项目从 VisionPro 视觉处理、上位机集成展示及数据传输、PLC 运动控制和结果判定各方面进行集成,形成了一套较为完整的工业视觉测量定位系统,对工业视觉应用有一定推广及借鉴意义。

猜你喜欢
机软件调用上位
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
特斯拉 风云之老阿姨上位
“三扶”齐上位 决战必打赢
基于系统调用的恶意软件检测技术研究
基于ZigBee和VC上位机的教室智能监测管理系统
道岔监测系统上位机软件设计
基于正交试验法的北斗用户机软件测试用例设计
PCI-e高速数据采集卡的驱动与上位机软件设计
以新思路促推现代农业上位