传统的自动控制装配在机械手控制进程中,由于靠得住性差,故障多、维修坚苦等缘由,已不能知足机械手控制的需求.以多关节机械手为研究对象,采用西门子S7—200可编程控制器(PLC)对其机电驱动装配进行顺序控制,可以较好的解决这一问题,文章具体计议了多关节机械手系统的机械结构.工作原理及PLC系统控制,给出了PLC控制中若干关头问题的解决方案,实践证实,该控制系统有用地提高了系统的抗干扰能力,实现了系统的智能化和柔性化.
关头词:机械手:PLC;控制系统
s7.200 PLC(Program Logic Controler)是德国西门子公司生产的小型可编程控制器,具有的可扩大性、价格低廉、指令功能壮大,十分适合在机械手控制系统中运用.但一般在工业机械人执行机械手机构多为外形简单的夹钳式、托持式、吸附式等结构,其结构和抓握方针物的原理决议了其有限的抓握功能.随着机械人运用范围的日益扩年夜和向智能化、拟人化标的目的的成长,其手部也有多指多关节的拟人化要求;另外在工伤、事故中断手的残疾人也需要功能价格比高的多关节机械手.为此我们研制出一套新的基于s7.200 PLC的多关节机械手控制系统,该系统动作简洁:线路设计合理、具有较强的抗干扰能力,保证了系统运行的靠得住性,下降了维修率,提高了工作效率.由于PLC控制受情况的限制,在使用进程中会受各类干扰,影响系统的靠得住性,是以必需接纳各类抗干扰措]沲’以提高控制系统的靠得住性机械结构.多指多关节的机械结构是Zui理想的机械人手爪,其每一个手指的名r5,-关节都各有一台自力的机电驱动,并配有传感和控制系统,使手爪能完全模拟人手动作.当抓取的方针物各边外形与手爪中心不合错误称时,每一个手指各关节的弯曲水平可以分歧,手爪对被抓物体的外形具有顺应性.先接触物体的手指其指关节发生较年夜的抗力而不能弯曲,而其他未接触到物体的手指将继续弯曲,直到每—个手指都接触物体.
2 PLC控制系统设计
1.1整体设计
PLC控制系统设计时不能过度依靠PLC本体,使用外部继电器能够完成控制要求的,应使用外部继电器.系统机电采用自耦降压启动,由于设计时取消外部时间继电器,采用启动旌旗灯号直接输进PLC,经PLC内部计时器输出运行旌旗灯号,启动时间难于切确肯定,而且负荷变化将引发启动时间变化,从而当用户想要调整启动时间时就比力坚苦,‘需要具有PLC编程常识及相关编程工具,而一般的用户或电工其实不具有这样的条件,是以采用PLC内部计时器作为启动时间控制就颇费周折,也晦气于现场控制及往后维护.PLC的自动控制法式的编写方很多,凭据多关节机械手的特点,要求每—个动作严酷按顺序执行,是以采用步进指令编写,以保证机械手的运行有条不素.在顺序及联锁控制中,触及平行并联关系的机号,斟酌到操作上的便当,让PLC能自动选择运行机电,利便机电在运行进程中能够有选择的运行.联锁关系为四级,见图1所示,前两级中有并列选择运行的机电(D1,D2,D3,D4).
1.引 言
当今,在自动化的产业生产中,变频控制往往与计算机远程控制相联系在一起,从而实现电机的远程变频控制。可编程序控制器系统不仅可作为单一的机电控制设备,而且作为通用的自动控制设备,也被大量地用于过程产业的自动控制。欧姆龙Zui新推出的可编程控制器SYSMAC CP1H,具有“高度扩张性”的端子台型一体化[1]。与以往产品CPM2A 40 点输进输出型为相同尺寸,但处理速度可达到约10倍的性能。本课题通过控制机(即为PLC)设定比例运行参数,然后控制机通过D/A转换模件发出控制变频调速器的指令,使变频调速器带动振动磨电机按输进的速度和时间运转。基于OMRON PLC的链接通讯(有通讯协议),我们采用功能强大的Visual C++6.0语言来实现这种小型集散控制系统的上、下位机的通讯和友好的监控界面,实现了上位机与PLC间的通讯。
2.通讯软件的设计
在本项目中,上位机选用计算机, 下位机选用日本Omron公司的CP1H系列XA40DR-A可编程序控制器。在计算机外设中,RS-232串口由于其组成方式简单,编程控制方便而成为应用Zui为广泛的I/O通道之一。32 位下串口通讯程序通常采用两种方法实现:一是利用ActiveX控件; 二是使用API通讯函数。使用ActiveX控件, 程序实现非常简单, 结构清楚,缺点是欠灵活; 使用API通讯函数的优缺点则基本上相反[2]。VC++6.0的MSComm是Microsoft 公司提供的简化bbbbbbs 下串行通讯编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法,笔者采用了这种方法。其端口接线见附图。

2.1 上位机与PLC的通讯协议
HOST bbbb系统使用HOST bbbb 通讯协议进行通讯,上位机具有传送优先权,总是首先发出命令并启动通讯,HOST bbbb 通讯单元收到命令交由PLC执行,然后将执行结果返回上位机,两者以帧为单位轮流交换数据。
2.2 上位机的PLC链接通讯
通讯时一组传送的数据称为块,它是命令或响应的单位,从上位机发送到HOSTbbbb 单元的数据称为命令块,相应的,从HOSTbbbb单元发送到上位机的数据称为响应块。多点通讯时,单帧发送的Zui大数据块为131 个字符,因此当一个数据块含有132 个或更多字符时,要分成两帧或多帧进行发送。多帧发送时中间帧的格式为:正文、FCS、分界符。起始帧、中间帧的长度为131 ,结束帧的长度Zui多为131 个字符。
Omron系列的PLC 通过RS232 口与主机通讯有两种方式,第一种是由上位机向PLC 发送初始命令,第二种是由PLC 向上位机发送初始命令[3]。在监测系统中一般采用第一种方式。有关通讯协议如下所述:
2.2.1上位机→PLC 的命令格式
其中:
(1)@为起始标志符;
(2)N2 、N1 为PLC 节点标志码,由两位十进制数表示,它们用来指定与上位机通讯的PLC。而PLC 自己的通讯节点码可由它的DM6648 和DM6653 来设置;
(3)CMD2 、CMD1 为两字节命令码;
(4)MT 为命令内容,用来设置具体的命令参数;
(5)V2、V1 为两字节的帧校验码,它是从开始符“@”到MT码结束的所有字符的ASCII 码按位异或的结果; 帧校验和是一个转换成2 个ASCII 字符的8 位数据。它把帧中每一个字符顺序地进行异或操纵而得到的结果,即把帧的第一个字符到正文结束的所有字符转换成二进制形式的ASCII 码后,逐个异或而得到的[4]。当发送命令时,将其加在命令格式中,作为帧的一部分发送到接收端。当接收数据时,按上述步骤重新计算FCS ,当计算结果与数据块中所带的FCS 相同时,说明传输无误,否则,说明接收到的数据不正确。
(6)“*”和“CR”两字符表示命令结束。
例如,@00WD00060500表示写一个数500到节点为0的PLC的DM0006中。
2.2.2 PLC→上位机的响应格式

其中S2 、S1 为命令结束状态码,如00 表示正常结束,01 表示RUN 模态下PLC 无法完成上位机命令,其余符号代码意义同上。实现上位机与HOST bbbb 通讯单元的通讯只需编写上位机程序,由于HOST bbbb 通讯单元自身带有通讯程序,上位机下发命令,地址相符的PLC 自动上传响应帧,所以这一部分程序不需要客户编写,但是,编写上位机的通讯程序时,通讯参数的设置必须保证与PLC 的通讯参数一致性。
3.用VC++6.0编写串行通讯程序

首先建立一个基于对话框的MFC应用程序SCommTest,支持ActiveX控件,电话外形的控件是在系统中注册过的MicrosoftCommunications Control, version 6.0,接受缺省的选项。
1.打开串口设置串口参数
在主对话框CSCommTestDlg::OnInitDialog()中打开串口,加进如下代码:
if(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(1); https://选择com1
i f ( ! m _ c t r l C o m m . G e t P o r t O p e n ( ) ) m _ c t r l C o m m .
SetPortOpen(TRUE);https://打开串口
else
AfxMessageBox("cannot open serial port");
m_ctrlComm.SetSettings("9600,E,7,2"); https://波特率9600,偶校验,7个数据位,2个停止位m_ctrlComm.SetbbbbbModel(1); https://1:表示以二进制方式检取数据m_ctrlComm.SetRThreshold(1);
https://参数1表示每当串口接收缓冲区中有多于或即是1个字符时将引发一个接收数据的OnComm事件
m_ctrlComm.SetbbbbbLen(0); https://设置当前接收区数据长度为0
m_ctrlComm.Getbbbbb();https://先预读缓冲区以清除残留数据
2.发送数据
为发送按钮添加一个单击消息BN_CLICKED处理函数,选择IDC_BUTTON_MANUALSEND,添加OnButtonManualsend()函数,并在函数中添加如下代码:
UpdateData(TRUE); https://读取编辑框内容
SendData(m_strTXData1,6);
https:// m_strTXData1表示发送速度命令的具体数值,6表示写数
据的地址DM0006
Sleep(100);
SendData(m_strTXData2,12); https://m_strTXData1表示发送时间命令的具体数值,12表示写数据的地址DM0012
3.发送命令
按照命令格式,本课题主要发送两个WD命令:
(1)数据采用十进制发送,向DM0006中写进速度指令;
(2)数据采用十进制发送,向DM0012中写进时间指令。部分程序如下:
Void CSCommTestDlg::SendData(int m_TobeSend,intm_address)
{ CByteArray Array;
unsigned char auchMsg[45]={0}
auchMsg[0]=64; https:// 起始标志符
auchMsg[1]=0x0; https://节点号
auchMsg[2]=0x0; auchMsg[3]=‘W‘; https://命令符
auchMsg[4]=‘D‘;
auchMsg[5]=m_address/1000;
auchMsg[6]=(m_address%1000)/100;
auchMsg[7]=(m_address%100)/10;
auchMsg[8]=m_address%10;
auchMsg[9]=m_TobeSend/1000;
auchMsg[10]=(m_TobeSend%1000)/10;
auchMsg[11]=(m_TobeSend%100)/10;
auchMsg[12]=m_TobeSend%10;
LRC(auchMsg,13);
https://auchMsg[13] ,auchMsg[14] ,保存FCS值
auchMsg[15]=‘*‘; https://命令结束符
auchMsg[16]=13;
Array.RemoveAll();
for (Count=0;Count<17;Count++)
Array.Add(auchMsg[Count]);
m _ c t r l C o m m . S e t O u t p u t ( C O l e Va r i a n t ( A r r a y ) ) ;
4.计算校验码函数
unsigned char uchLRC = 0 ; 初始值设定
while (usDataLen——)
{uchLRC ︿= *auchMsg++; }
unsigned char high=0xF0;
https://high为校验码的高位
unsigned char low=0x0F;
https://low为校验码的低位
high&=uchLRC;
low&=uchLRC;
high>>=4;右移四位
if(high<=9)
high=high+48;
else
high=high+55;
if(low<=9)
low=low+48;
else
low=low+55;
*auchMsg++=high;
*auchMsg++=low;
四.结束语
此程序在VC++6.0中运行通过,并成功应用于振动磨的控制中。该系统采用OMRON XA40DR-A PLC与上位机连接组成控制系统,上位机通过串行口向PLC发出写命令及数据,PLC接受数据后,通过D/A转换模块,将模拟量发给变频器,从而实现了振动磨振动速度和时间的控制。
西门子代理商,西门子模块代理商,西门子一级代理商,西门子PLC代理,西门子中国代理商