- 广州子锐机器人技术有限公司
- 服务热线:020-82000787(8:30-17:30)
- 联系手机:15889988091(非工作时间)
- 座机:020-82000787
- 传真:020-32887675
- 邮箱:gz@zr-robot.com
- 广州市番禺区东环街金山谷创意八街1号109
- 当前位置:首页 > 机器人资讯 > 基于PMAC的开放式工业机器人运动控制数据实时采集研究
基于PMAC的开放式工业机器人运动控制数据实时采集研究
基于PMAC的开放式工业机器人运动控制数据实时采集研究
摘要:实时数据采集与通信子系统是工业机器人运动控制系统的基本环节,PMAC卡作为底层控制器在工业机器人运动控制中广泛应用。根据数据采集源、与上位机通信模式,www.zr-robot.com,对基于PMAC的数据采集方法进行分析,确定在线指令方式进行数据采集,定制了基于网口的开放通信模块。在实现过程中采用了软件模块化、多线程、定时器、双缓存等技术实现指令编码、数据采集与解码。测试结果证明了通信与采集子系统的稳定性和实时性。
关键词:PMAC;开放控制;数据采集;实时性;机器人
0引言
在工业控制领域,实时数据采集是一个基本而且重要的环节,如何提高数据采集的实时性一直是工控技术人员所关心的问题[1]。多轴运动控制卡(ProgrammableMulti-AxisController,PMAC)集执行程序(运动程序和PLC程序)、数据采集、伺服环更新、资源管理等多个模块一起协同工作,在工业机器人的运动控制中得到广泛应用[2]。
1基于PMAC的数据采集分析
PMAC通过对机器人关节的4路数字信号解码得到该关节的位置、速度、加速度等数据源,上位机采集这些数据进行运动学和动力学运算得到机器人实时的位置和运动信息。数据采集涉及数据采集源、通信模式、采集方法、数据解码、人机交互[3]等。
数据采集源指被采集的数据在卡上存储的对象,主要有PMAC缓冲区、寄存器、双端口RAM。
PMAC主卡与上位机之间的通信模式有104总线接口、USB2.0以太网口、RS232串口等。
结合通信模式和数据采集源,基于PMAC数据采集有双端口RAM、Gather功能寄存器、PLC程序M变量、在线指令等采集方法。基于双端口的数据采集从双端口RAM中采集数据,不需要经过通信口发送命令和等待响应时间,实时性较好。基于Gather功能的数据采集从缓冲区采集数据,需要使用PMAC的通信驱动和Gather类函数,适合于大量信息进行数据采集[4]。基于PLC程序和在线指令的数据采集从I/O及运动寄存器获取数据,需要使用PMAC的通信驱动和软件定时器。基于在线指令的数据采集可以实时单点采集,也可以循环采集,而且可以基于以太网口定义开放式通信接口,独立于PMAC驱动程序。
2基于多线程技术和在线指令的实时数据采集
2.1多线程技术
多线程编程技术应用于机器人控制,可在收发数据的同时进行数据的处理、状态切换、屏幕刷新等任务,提高程序的实时性和软件的整体性能[5]。本控制系统采用多线程技术实现,提高了数据采集的实时性,系统程序结构如1所示。
2.2数据采集的编码实现
本文基于在线指令进行数据采集,自定义通信接口。
2.2.1开放式通讯接口
目前所见的基于PMAC的机器人开放式运动控制器都利用了DeltaTau公司提供的PComm32PRO通信驱动程序,子锐机器人,限制了控制器的开放性。为了支持嵌入式实时操作系统的应用开发,采用C++设计了PMAC开放式网口通信服务,供上层服务通过socket调用,数据规范如下:
typedefstructtagEthernetCmd
{
BYTERequestType;
BYTERequest;
WORDwValue;
WORDwIndex;
WORDwLength;
BYTEbData[1492];
}ETHERNETCMD,*PETHERNETCMD;
PMAC卡IP地址是:192.6.94.5:1025。
2.2.2数据采集的编码实现
PMAC指令以及回传的运动参数都是字符串,子锐机器人维修,需要进行指令编码和数据译码。
structPMACFPV
//定义循环采集的速度和位置
{
doubleFP1;
doubleFP2;
doubleFV1;
doubleFV2;
};
structPMACFPVPMACPVF()
//周期采集
{
structPMACFPVPV;
charAV1[255],AP1[255];
longNV1,NP1;
charAV2[255],AP2[255];
longNV2,NP2;
NV1=PmacGetResponseA(0,AV1,255,"#1V");
PV.FV1=atof(AV1)/20;//速度译码
NP1=PmacGetResponseA(0,AP1,255,"#1P");
PV.FP1=atof(AP1)/20;//角度译码