朱云龙,孔凡让
(中国科学技术大学 精密机械与精密仪器系,安徽 合肥 230027)
OPC技术在多工业机器人联动控制中的应用*
朱云龙,孔凡让
(中国科学技术大学 精密机械与精密仪器系,安徽 合肥 230027)
以某省科技馆工业智能机器人科普展品研发为应用背景,介绍了OPC技术及工业机器人发展概况,采用Microsoft Visual C++ 2006编写OPC客户端程序,实现了多工业机器人的联动控制。
工业机器人;OPC技术;Microsoft Visual C++ 2006
ofScienceandTechnologyofChina,HefeiAnhui230027,China)
传统控制系统中,每个应用软件与不同的现场设备或其他应用软件进行通讯时,需要开发不同的自定义接口,这给软件开发和维护带来了巨大的负担。而应用软件或现场设备升级后,与其他现有的应用软件之间的通讯往往会出现不协调,影响系统的正常运行,甚至造成系统崩溃。OPC(OLE for Process Control)是OPC基金会组织制定的工业控制软件互操作性规范,以微软公司的COM/DCOM(组件对象模型/分布式组件对象模型)技术为基础,为工业控制软件定义了一套标准的对象、接口和属性。采用OPC规范后,硬件开发商只需提供统一的OPC接口程序,软件开发人员只需遵循OPC数据接口协议,就能从不同硬件设备的OPC服务器中获取数据,实现数据交换方式的标准化,极大提高了自动化系统、现场设备系统间的互操作性[1-2]。
笔者就某省科技馆工业智能机器人科普展品研发制造中,OPC技术在多工业机器人联动控制中的应用实例给出介绍。
工业智能机器人展品外观如图1所示。机器人主体由三只六轴工业机器人组合而成,分别构成机器人的头部、左手和右手,主体固定于展台下方由烟台华大数控机床附件有限公司生产的SKT12630数控回转台上(通过西门子PLC200扩展一个EM253定位模块控制)。三只工业机器人和PLC200(西门子EM277模块通信)通过Profibus-DP总线和西门子CP5611通讯卡与上位机连接。工作人员操作展台前方的控制按钮(按钮连线至西门子PLC200的输入端),工业智能机器人伴随音乐完成一系列动作。
图1 工业智能机器人展品外观
在工业发达国家,工业机器人经历近半个世纪的迅速发展,其技术日趋成熟,在汽车行业、电子电气行业、橡胶及塑料行业、食品行业等诸多工业领域得到广泛的应用。工业机器人作为先进制造业中不可替代的重要装备和手段,已成为衡量一个国家制造业水平和科技水平的重要标志。
我国已经成为世界公认的制造业大国,但随着劳动力成本的不断提高,经济发展模式和制造产业结构调整势在必行,发展高科技产业,提高制造业生产自动化水平,由劳动密集型向技术密集型转变已经成为必由之路。进入21世纪,国内一大批企业或自主研制或与科研院所合作,进入工业机器人研制和生产行列,我国工业机器人进入了初步产业化阶段。在这一阶段,先后涌现出新松机器人、奇瑞装备、广数、青岛软控等数十家从事工业机器人生产的企业。奇瑞装备有限公司与哈尔滨工业大学合作研制的165 kg点焊机器人,已在线应用约50台,分别用于焊接、搬运等场合,自主研制出我国第一条国产机器人自动化焊接生产线,可实现S11车型左右侧围的生产[3]。
笔者在工业智能机器人科普展品研发过程中选用了安徽埃夫特智能装备有限公司生产的ER20-C10六轴工业机器人,负载能力20 kg,如图2所示。三只工业机器人的控制系统为奥地利的KEBA控制系统,与西门子公司的PLC产品属于不同厂商的硬件设备,机器人与机器人之间以及机器人与PLC200之间不能直接通信。采用OPC技术规范,在Windows XP Professional SP2环境下用Microsoft Visual C++ 2006开发工具编写客户端程序,向三只工业机器人和PLC200获取和发送数据,实现了三只工业机器人之间的联动控制和工业机器人与PLC200之间的实时通信。
自1996年发布以来,OPC规范在工业控制领域得到了广泛的应用。OPC数据存取规范是OPC规范的核心之一,重点是对现场设备的在线数据进行存取。规范中指出一个OPC客户端程序可以连接到一个或多个OPC服务器厂商,而多个OPC客户端程序也可以连接到一个OPC服务器上,OPC客户端与服务器的关系如图3所示。
图2 ER20-C10工业机器人 图3 OPC客户端与服务器关系
客户端程序与OPC服务器之间的连接和通信通过两类接口来实现:定制接口和自动化接口。定制接口主要用于采用C++语言的应用程序开发,是服务商必须提供的。自动化接口主要用于采用VB,C#,Delphi等编程语言的应用程序开发是可选的。典型的OPC架构如图4所示。
图4 典型的OPC架构
OPC数据存储服务器主要包含服务器对象(OPC Server)、组对象(OPC Group)和项对象(OPC Item)。OPC服务器对象维护有关服务器的信息,并作为OPC组对象的包容器,可动态地创建或释放组对象。OPC组对象维护自身相关信息,提供包容和逻辑组织OPC项的机制,分为公共组和私有组。公共组用于多个客户端程序共享,私有组只用于一个客户端程序。OPC项表示了与OPC服务器中数据的连接,客户端程序通过OPC组对象实现对OPC项的访问,获得信号变量的值(Value)、数据类型(Type)、品质(Quality)等信息[4]。
此文中的服务器选择的是西门子公司的SMATIC NET OPC服务器,客户端程序与OPC服务器之间的通信基于定制接口。
5.1 OPC服务器组态
(1) 配置PC站 完成机器人各部分硬件连接后,打开Station Configurator Editor,分别在配置界面一号槽内添加OPC Server,三号槽内添加CP5611卡,并在其属性对话框中填写PROFIBUS参数,站地址为3,协议类型选择DP,传输速率设置为1.5 Mbps。配置完成后,PC站的Station Name命名为“PC”。
(2) STEP7中组态PC站 新建一个Simatic PC Station,插入一个PC站,命名为第一步配置PC站的Station Name“PC”。在硬件目录窗口,组态与所安装SIMATIC NET软件版本相一致的硬件,插槽结构与Station Configuration Editor中配置的一致。将CP5611设置为DP主站,依次添加西门子的EM277模块和三只工业机器人的通信模块FM265/A为DP从站,设置相应参数,编译并保存,硬件组态结构如图5所示。打开NetPro,组态PROFIBUS-DP网络,设置相应的站地址,传输率等参数,编译并保存,网络组态结构如图6所示。
图5 硬件组态结构 图6 网络组态结构
(3) 打开控制面板,打开“Set PG/PC Interface”窗口,选择“CP5611(PROFIBUS)
5.2 客户端程序设计
客户端程序从OPC服务器中读取连接展台前方按钮状态数据源的项对象的值,判断机器人状态,然后通过对OPC服务器进行写操作,将启动命令值传入相应的项对象,控制三只工业机器人和数控回转台启动,工业智能机器人开始伴随音乐完成一系列运动。程序流程图如图7所示。
图7 控制程序流程图
(1) 工业机器人之间的联动控制
三只工业机器人的动作编程由机器人各自的示教盒示教完成。为保证机器人运动期间互相不干涉,实现联动控制,每只工业机器人提供了3个字节的输入和4个字节的输出变量,添加为OPC服务器的项对象。
在一只机器人动作示教过程中,当需要进行联动控制时,其余机器人暂停运动,等待继续运动命令信号。该机器人完成系列动作后,由其输出一个变量值至OPC服务器, OPC客户端程序读取到该变量值后,向OPC服务器对应的项对象写入值,其余机器人就可接收到继续运动命令信号,继续动作。
当任何一只机器人出现故障,停止运动时,会向OPC服务器发送相应信号,客户端程序读取到故障信号后,会向OPC服务器中相应项对象写入暂停运动信号,其余机器人立即暂停运动,防止机器人之间出现碰撞事故。工作人员清除故障后重启系统。
通过OPC技术,保证三只工业机器人之间的信号交互,实现了三只工业机器人运动过程中的联动控制和安全通信。
(2) 机器人与数控回转台之间的联动控制
当机器人运动至某些动作序列时,需要联合数控回转台运动,此时机器人会输出对应变量的值至OPC服务器中相应项对象,客户端程序读取到该值后,向OPC服务器中PLC200对应的项对象写入命令值,相应的PLC程序得到调用,控制数控回转台进行-45°~+45°角度范围内的旋转运动。以此实现了机器人与数控回转台之间的联动控制。
程序设计主要过程和部分代码如下:
①初始化COM控件,注册OPCGroup及OPCItem。
HRESULT r1;//用于返回函数调用结果
r1=CoInitialize(NULL);
r1=CLSIDFromProgID(L"OPC.SimaticNET", &clsid);
r1=CoCreateInstance (clsid, NULL, CLSCTX_LOCAL_SERVER ,IID_IOPCServer, (void**)&m_pIOPCServer);//创建OPCserver实例对象,获得IOPCServer接口指针m_pIOPCServer
r1=m_pIOPCServer->AddGroup(L"grp1",TRUE,500,1,&TimeBias,&PercentDeadband,0x409,&m_GrpSrvHandle,&RevisedUpdateRate,IID_IOPCItemMgt,(LPUNKNOWN*)&m_pIOPCItemMgt);//添加命名为“grp1”的组对象
根据项目需要,添加27个OPCItem,其中SLAVE008的OPC项是组态的PLC200内部变量(单独编写PLC程序),SLAVE004、SLAVE005 SLAVE006的OPC项分别为头部、右手、左手工业机器人提供的变量:
const LPWSTR szItemID[27]={
L"DP:[CP 5611]SLAVE008_IB0,1",
L"DP:[CP 5611]SLAVE008_IB1,1",
L"DP:[CP 5611]SLAVE004_IB0,1",
L"DP:[CP 5611]SLAVE004_IB1,1",
L"DP:[CP 5611]SLAVE004_IB2,1",
L"DP:[CP 5611]SLAVE004_IB3,1",
L"DP:[CP 5611]SLAVE006_IB0,1",
L"DP:[CP 5611]SLAVE006_IB1,1",
L"DP:[CP 5611]SLAVE006_IB2,1",
L"DP:[CP 5611]SLAVE006_IB3,1",
L"DP:[CP 5611]SLAVE005_IB0,1",
L"DP:[CP 5611]SLAVE005_IB1,1",
L"DP:[CP 5611]SLAVE005_IB2,1",
L"DP:[CP 5611]SLAVE005_IB3,1",
L"DP:[CP 5611]SLAVE008_QB0,1",
L"DP:[CP 5611]SLAVE008_QB1,1",
L"DP:[CP 5611]SLAVE008_QB2,1",
L"DP:[CP 5611]SLAVE008_QB15,1",
L"DP:[CP 5611]SLAVE004_QB0,1",
L"DP:[CP 5611]SLAVE004_QB2,1",
L"DP:[CP 5611]SLAVE004_QB3,1",
L"DP:[CP 5611]SLAVE006_QB0,1",
L"DP:[CP 5611]SLAVE006_QB2,1",
L"DP:[CP 5611]SLAVE006_QB3,1",
L"DP:[CP 5611]SLAVE005_QB0,1",
L"DP:[CP 5611]SLAVE005_QB2,1",
L"DP:[CP 5611]SLAVE005_QB3,1",};
for(int i=0;i<27;i++){
m_Items[i].szAccessPath= L"";
m_Items[i].szItemID=szItemID[i];
m_Items[i].bActive= TRUE;
m_Items[i].hClient= i+1;
m_Items[i].dwBlobSize= 0;
m_Items[i].pBlob = NULL;
m_Items[i].vtRequestedDataType=2;}
r1=m_pIOPCItemMgt->AddItems(27,m_Items,&m_pItemResult,&m_pErrors); //将27个OPC项加入组内
r1=m_pIOPCItemMgt->QueryInterface(IID_IOPCSyncIO,(void**)&m_pIOPCSyncIO);//为OPCGroup的组对象定义同步读写接口
②同步读写数据
r1=m_pIOPCSyncIO->Read(OPC_DS_CACHE,27,phServer,&pItemValue,&pErrors);//读取数据,存入pItemValue指向存储区内
r1=m_pIOPCSyncIO->Write(27,phServer,values,&pErrors); //同步写入values数据
③释放对象
r1=m_pIOPCItemMgt->RemoveItems(27, phServer,&pErrors);//移除数据项
r1=m_pIOPCServer->RemoveGroup(m_GrpSrvHandle, TRUE);//移除组
m_pIOPCSyncIO->Release();
m_pIOPCServer->Release();
CoUninitialize();//释放服务器等
通过以上步骤[7],建立完成客户端程序通过OPC服务器与三只工业机器人及数控回转台之间的通讯。根据项目实际情况,进行逻辑控制,实现了智能工业机器人的控制功能。该智能工业机器人于2013年9月投入展示,系统运行良好。
目前,我国工业机器人的发展十分迅速,应用领域也越来越广泛。该文基于OPC技术,实现了三只工业机器人之间的联动控制和工业机器人与PLC200之间的实时通信。利用OPC技术,拓展了工业机器人的应用方法, 亦可作为工业机器人在其他领域的应用参考。
[1] 顾 键,王京春,黄德先.OPC-COM技术在工业自动化软件中的应用[J].计算机工程与应用,2002(12):207-209.
[2] 陆会明.控制装置标准化通信:OPC服务器开发设计与应用[M].北京:机械工业出版社,2010.
[3] 赵 杰.我国工业机器人发展现状与面临的挑战[J].航空制造技术,2012(12):26-29.
[4] OPC foundation.OPC DA 2.05a Specification[EB/OL]. http://www.opcfoundation.org, 2001-12-17.
[5] Siemens.S7 Communication Via SIMATIC NET OPC Server to S7-200/EM277[EB/OL]. http://www.ad.siemens.com.cn/download,2011-08-02.
[6] 卢健俭,何永义,王永波,等.OPC技术在电子电力控制器测试平台的应用[J].制造业自动化,2013,35(3):60-63.
[7] Siemens. How to Achieve Data Access Through OPC in VC[EB/OL]. http://www.ad.siemens.com.cn/download,2009-06-25.
Application of OPC Technology in Coordinated Control for Multi Industrial Robots
ZHU Yun-long,KONG Fan-rang
(DepartmentofPrecisionMachineryandPrecisionInstrumentation,University
Taking research and development of an intelligent robot exhibit as application background, OPC technology and development of industrial robot is introduceed. Through writing OPC client program,using Microsoft Visual C++ 2006, the coordinated control of multi industrial robots is achieved.
industrial robot;OPC technology;Microsoft Visual C++ 2006
2013-12-16
国家自然科学基金资助项目(51075379)
朱云龙(1989-),男,四川宜宾人,在读硕士,主要从事机电一体化技术方面的研究工作。
TP29
A
1007-4414(2014)01-0191-04