西门子模块6ES7216-2BD23-0XB8功能介绍
当今世界上精密加工技术发展很快,新的加工方法和设备层出不穷,计算机的广泛应用使精密加工技术更为普及和多样。实现精密和超精密切削加工有三种方法: (1) 采用和研制高精度加工设备;(2) 采用新的切削工具材料; (3)利用加工与测量控制一体化技术。 前两种方法成本较高,而后一种方法成本较低,具有广阔的前景。在后一种方法中,除了要保证刀具的精度、夹具的精度以及测量精度外,还有一项重要内容就是微进给机构的精度及其控制精度。笔者在控制精密磨削的研究中,利用步进电机带动滚珠丝杠作为进给机构,在滚珠丝杠确定后,步进电机的控制精度成为了主要矛盾。
1 步进电机的控制
步进电机在不失步的正常运行时,其转角严格地与控制脉冲的个数成正比,转速与控制脉冲的频率成正比。可以方便地实现正反转控制及调整和定位。由于步进电机和负载的惯性,它们不能正确地跟踪指令脉冲的启动和停止运动,指令脉冲使步进电机可能发生丢步或失步甚至无法运行。必须实现步进电机的自动升降速功能。为了实现速度的变化,输入的位移脉冲指令相应地要升频、稳频、和降频这些脉冲序列,可以由脉冲源加专用逻辑电路来产生,也可以由微型计算机产生。对于脉冲源加逻辑电路构成的控制器来说,控制逻辑是固定的,即控制电路一经固定,其控制逻辑也就固定了。
如果要改变控制逻辑和控制方案,必须改变电路结构和元件参数,而使用计算机控制,不必改动硬件电路,只要修改程序,就可以改变控制方案。且可以从多种控制方案中,选取一种佳方案进行控制和调节。 也可以用同一套系统对不同控制方案的多台步进电机控制。利用计算机控制的形式也很多,本文介绍PLC位控单元对步进电机的控制。
2 PLC系统组成及位控单元的工作原理
本研究所利用的PLC 系统的组成包括如下七大模块:电源,CPU ,位控单元, I/ O 单元,A/ D ,D/ A 单元。其中位控单元的主功能是当步进电机(或伺服电机) 与电机驱动器联结时,输出脉冲序列控制电机的转速与转角。 进给机构可以是2轴型,也可以是4 轴型。 本文采用的是前者,即滚珠丝杠的横向进给与纵向进给,如图2所示。具体地说,位控单元实现速度以及位置的控制方法有多种,如E 点控制(单速度控制) ,如图3(a) 所示;P 点控制(多级速度控制),如图3 (b) 所示; 线性加/ 减速和S型加/ 减速,图3 ( a ) , ( b)为线性加/ 减速,S型如图3 (c) 所示。还有位置控制和相对位置控制等。 表1 给出了E点控制不同模式的控制码(P 点与其相同) 。
3 磨削加工PLC控制原理
如图4所示, PLC 可以控制变频器、传感器、步进电机。 总控制程序流程图如图5 所示。 其中两个步进电机是利用PLC 的位控单元控制的。在进行精密磨削过程中,横向进给将是十分重要的,PLC 的位控单元能较**地控制步进电机的转角,从而使滚珠丝杠获得**定位。 由于PLC位控单元的控制方法有多种,对于磨削加工来讲,横向进给量不能大于215μm ,通过实验的方法可以找出佳方案。这里只通过一种控制方法来说明位控单元的具体应用。 设置原点,利用光栅尺粗对刀,测量出对刀位置距原点的距离。为防滚珠丝杠出现爬行现象,工作台从原点出发,经过一段距离以后开始自动加/ 减速。 此时,只要给定起始速度,目标速度,加速/减速时间以及位置要求值,并设定控制码即可实现上述功能,相关程序如图6 所示。 如果假设滚珠丝杠的螺距为d,步进电机的步距角为α°;进给速度为v (mm/ s) ;行程为s (mm) ;则要求的脉冲频率(即程度中的目标速度) 为f =360 v/αd (Hz) ;总脉冲数(即程序中的位置要求值) 为F =360s/da(个) 。
4 结束语
PLC位控单元具有运行速度快、灵敏度高、精度高、编程简单等众多优点。 它对于在精密加工领域的研究开发与应用具有深远的现实意义。
摘要:针时目前矿用设备杭拉检测中可靠性差、检刚精度低等缺点,设计一种以PLC为核心的新型控制系统,并介绍了系统的硬件及软件设计。
1引言
为了煤矿生产的安全性,用于煤矿斜井提升设备中的绞车底盘及三环链等设备,均需要进行检验,通过后方可允许批量生产和使用。而传统的检验设备,无论在控制方式上,还是在检验手段上,均较落后,检验效率较低,设备的故障率也较高。现有检验设备的改造问题,是目前国内各个检验中心急需进行的主要任务之一。
2检验原理及硬件系统设计
用于煤矿斜井提升的绞车、三环链等设备。在批量生产前,必须到的检验中心进行性能指标的检测,主要测试其抗拉强度等性能指标,测出其小拉断拉力,并与其承载量相对应的国家规定标准进行比较。当其小拉断拉力大于标准所规定的允许抗拉强度时,则可判定该产品的抗拉强度满足要求。
对上述设备进行检验的PLC控制系统的组成框图如图1所示,由触摸屏、PLC传感器、控制按钮、控制设备及运行状态指示等部分组成。
触摸屏主要用于完成被检设备的信息输人、设备的启停控制、测得的拉力数值的显示输出以及其他相关信息的输出;传感器将测得的拉力信号经A/D转换后送入PLC,在PLC内部进行相应的运算后,送到触摸屏进行显示;PLC是控制系统的核心,主要用于接收触摸屏输人的相关信息及控制指令,输出相应的控制命令,经A/D转换器读取拉力传感器测得的数据。本系统中PLC选用松下电工的F印型PLC,触摸屏选用GT一10型单色显示触摸屏。PLC的资源分配如表1所示。
3软件设计
控制程序流程图如图2所示。其中对拉力值的处理是主要应注意的问题。PLC读取测得的拉力值,在试验过程中,拉力值将逐渐增加,当拉断的瞬间,拉力值将立即减小。根据这个拉力值的变化,PLC可判断试件是否拉断。PLC在每次读取测得的拉力后,应将拉力值保存在一个特定的单元内,下一次读取的值与所存的值进行比较。如果当前值小于存储值,则可断定试件已拉断,存储值为拉断拉力。若当前值大于存储值,则用当前值替换存储值,并进行下一次检测,直到拉断为止。系统拉力检测梯形图如图3所示。其中DTloo为经A/D转换后所得的拉力数值,D功单元用于存储暂存数值,DTloo单元用于存储拉断拉力值。
4结语
本系统以PLC为核心,利用PLC安全可靠的优点,较好地解决了测试过程中数据存储的问题,应用触摸屏作为人机界面,使操作变得更为直观。PLC与计算机的通信连接非常方便,也为试验系统与管理系统的连接做好了准备。此系统在实际运行过程中取得了较好的控制效果。
参考文献:
针对虚拟PLC对硬件的驱动控制问题,论文研究了基于单片机的虚拟PLC与硬件的通讯,开发出面向虚拟PLC的硬件通讯系统,从而实现对硬件的驱动控制。该通讯系统包括MSComm控件、PL2303hx和单片机三个模块。其中,MSComm控件完成上位机串行通讯;PL2303hx负责USB信号与串口信号间的转换;单片机一方面解析上位机的信号,另一方面采集现场信息并传输到上位机。后,以一个典型的跑马灯PLC控制实验为案例,证明了硬件通讯系统的有效性。应用虚拟PLC及其硬件通讯模块可以开发出不同的PLC实验装置,为PLC的教育训练提供了一种新的实用工具。
关键词:虚拟PLC;MSComm;PL2303hx;单片机
0 引言
计算机技术的迅猛发展促使虚拟PLC技术应运而生。它通过借助PC完成PLC的计算、存储、编译以及通过I/O口完成于现场工业设备进行通讯的各项功能。
虚拟PLC结合计算机技术的发展,利用VC、VB、Delphi等编程语言及微机的图形处理功能开发出PLC的软件编程平台,并构建虚拟模型实现PLC的部分硬件功能。相对于传统PLC,虚拟PLC具有友好的PLC指令编辑界面和兼容性。虚拟PLC上可以很好的实现软实时性,而硬实时性差成为其发展的制约因素,还未完全实现“零距离”的体验。论文就如何实现虚拟PLC同硬件间实时通讯的开发与实现进行了研究。
1 虚拟PLC平台
论文中的虚拟PLC运行平台是作者所在课题组基于VisualC++6.0环境独立开发的。虚拟PLC基于计算机技术和虚拟现实技术开发的,在保证功能效果的前提下,如何提高用户在使用虚拟PLC时的真实感和沉浸感,是虚拟PLC要着重处理的问题。
该虚拟PLC系统中建立了虚拟仿真模型,并通过将Solidworks、3DS MAX等建立的三维模型导入EonStudio的方法,构建了虚拟模型与虚拟PLC的通讯,从而可以在没有任何硬件的情况下完成硬件PLC的各项仿真实验,达到实验教学的目的。
虚拟PLC的可视化增强了仿真的直观性和逼真度,更接近工业实践和提升学生的兴趣,大大降低PLC实验的费用。存在着与硬件间通讯弱的问题。它的总体框架如图1所示。
2通讯系统总体框架
论文借助VisualC++6.0的串口通讯控件MSComm来实现上位机与单片机间的通讯。数据经USB口送出后,须先经过USB口转串口芯片处理,连接到单片机。后,由单片机来连接硬件电路。虚拟PLC借助单片机可以直接驱动硬件和采集现场信息,从而完成了整个通讯系统的建立。通讯系统总体框架图如图2所示。其中,整个通讯系统包含以下三个模块。
1 ) M S C o m m 模块。在V i s u a l C + + 6 . 0中,MSComm控件是Microsoft为我们提供进行串口通讯的ActiveX控件。
2)USB口转串口模块。USB口较九针口方便易用,但须在上位机中安装对应于USB口转串口芯片的驱动,以便通讯时进行USB协议的加载和解析。该系统中采用的USB口转串口芯片是PL2303hx。
3)下位机模块。该系统采用的下位机是单片机STC89c52rc。
3MSComm模块
M S C o m m控件在进行串行通讯时有两种方法:事件驱动方法和查询法。论文采用事件驱动方法:在接收到数据时触发事件响应的消息,由专门的函数来对消息进行处理。论文采用的串口通讯相关参数如表1所示。
COM口的设置须参照设备管理器中生成的虚拟COM口号,该系统生成的虚拟口是COM3。在添加完M S C o m m控件后系统会自动生成CMSComm的通讯类,而我们仅需要调用该类中的函数即可完成串行通讯的设置,论文的具体相关设置的部分代码如下:
MSCommIni()
{
……
m_ctrlMSComm.SetCommPort(3); //选择COM口
m_ctrlMSComm.SetbbbbbMode(1);
//输入方式为二进制方式
m_ctrlMSComm.SetInBufferSize(1024);
//设置输入缓冲区大小
m_ctrlMSComm.SetOutBufferSize(1024);
//设置输出缓冲区大小
m_ctrlMSComm.SetbbbbbLen(0);
//设置当前接收区数据长度为0
m_ctrlMSComm.SetSettings("9600,n,8,1");
//波特率9600,无校验,8个数据位,1个停止位
m_ctrlMSComm.SetRThreshold(1);
//参数1表示串口接收缓冲区中有多于或等于1
个字符时将引发一个接收数据的OnComm事件
……
}
由于该系统主要是将Y口的状态发送给下位,选择的是二进制的传输方式。由于USB线通讯时的数据越少越好,将每个Y口对应一个bit位,每8个Y口状态按照一定的顺序进行一次绑定。后,将每次绑定的数据按照一定的顺序统一打包发送给单片机。发送的部分代码如下:
m_ctrlMSComm.SetOutput(binDT); //发送数据
MSComm控件在接收到单片机发送来的数据时,寻找相应的消息响应函数。这里,系统中响应函数为OnOnCommMscomm1()。具体响应的部分代码如下:
if(m_ctrlMSComm.GetCommEvent()==2)
//事件值为2表示接收缓冲区内有字符
{ myVar.Attach(m_ctrlMSComm.Getbbbbb());
safearray_inp=myVar;
//VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize();
//得到有效数据长度
for(k=0;k
safearray_inp.Gebbbement(&k,rxdata+k);
//转换为BYTE型数组
for(k=0;k
{BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.bbbbat("%c",bt);
//将字符送入临时变量strtemp存放
char test[8]={'C','D','E','F','G','H','I','J'};
//定义不同事件响应的代号
for (int i=0;i<4;i++)
{If (strtemp == test[i])
//对比出单片机要引发哪个事件响应
{if(m_pDoc->m_bDlgPLC)
m_dlgPLC.vcX[i] = TRUE;
else if(m_pDoc->m_bDlgTrafficLight)
m_dlgTrafficLight.vcX[i] = TRUE;
}}}}
该系统中,MSComm控件既要将虚拟PLC运行平台的Y口状态发送到单片机,又要接收单片机发送来的数据,并对其中的有效数据处理后,影响虚拟PLC的运行状态。它的整个工作流程图如图3所示。
4USB口转串口模块
上位机的数据发出后,要进行USB传输协议的处理,发送给单片机。USB口转串口模块就是负责USB协议的解析和打包。
论文采用PL2303hx作为USB口转串口芯片,须外接12.0MHZ的晶振,提供其外部的时钟脉冲。它的输出电平无需再经过MAX232的调平处理,可直接与单片机引脚连接。
PL2303hx可双向传输数据。一方面接收上位机模块的数据进行USB协议解析,并将电平转换为标准的TTL电平,保证单片机能正常的接收数据;另一方面,对单片机发送出来的数据进行USB协议处理和电平转换,保证数据能有效传输到上位机。
5 单片机模块
该系统就是采用单片机是S T C系列的89C52rc。它具有40个引脚,P0-P3各个P口有8个I/O口,其中P3.0和P3.1是负责与上位机模块进行串口数据的接收和发送。
单片机的多功能性使其在进行某一特定功能时,须先进行相关的设定。该系统主要用到了STC89c52rc的串行通讯功能、定时器功能等。该系统中单片机的外接晶振是11.0592MHz,而其所选的是可以进行自动重装的工作模式2,采用定时器1作为波特率发生器。定时时间t=1/9600,震荡周期为1/(11.0992×106)。根据公式:
t =(28 –T1的初值)×振荡周期×12;
计算出定时器1的初值并转化为16进制的形式。单片机中初始化的部分代码如下:
SerialIni(){
……
TMOD = 0x21; //工作在模式2
TH1 = 0xfd;
TL1 = 0xfd; /* 9600 */
TR1 = 1;
SCON = 0x50; /* 工作在方式1*/
……}
该系统采取中断的方式来响应上位机发送来的数据。一旦有数据发送过来时RI被置为1,进入中断程序。中断程序中先对RI复位,将串行缓存寄存器SBUF中的数值取出,经处理后存储在一个数组中,接着对设置的全局变量的值进行加1,判断全局变量是否超出了设定的上限值,超过就归零,否则不动作。进行下一次SBUF的扫描,直到RI归零为止。其中的全局变量取决于上位机发送来的Y口的总数。部分接收程序如下:
ReciveData(){ /*有串口数据过来*/
RI = 0;
temp = SBUF; //取出SBUF中的值
if((0x00<=temp)&&(temp<=0xff)){/*卡定范围*/
temp1 = temp-0x00; }
if(j==0){sled_data[0]=temp1; }
else if(j==1){sled_data[1]=temp1; }
else if(j==2){sled_data[2]=temp1; }
j=j+1;
if(j>2)
j=0;}
该系统设置通过P1口采集现场的硬件运行状况,接收用户信号的输入,并将采集到的数据处理后发送到上位机。这样,使得用户在操作时如发现电路运行时序出现错误,可以通过按下相应的按键等发送特定的信息给上位机,从而影响虚拟PLC的运行时序,保证了LED等组成的控制对象和上位机运行时序的同步及电路运行的安全。其部分代码如下:
if(down_to_up0 == 0) //捕获按键按下的消息
button1 = 0x43;
……
else if(down_to_up3 == 0)
button4 = 0x46;
if(button1!=0xff&&down_to_up0==1) //确保按
键按下时仅触发一次动作
{ SBUF = button1;button1 = 0xff;}
……
if(button4 != 0xff && down_to_up3 ==1)
{ SBUF = button4;button4 = 0xff;}
该系统中采用不断循环扫描的方式来进行串行通讯数据的接收和现场信息的采集。是检测P1口的各个引脚电平是否有变化,如有变化就发送相应的信息给上位机。扫描串行通讯中断标志位RI是否有效,有效则处理接收到的数据。其整体工作流程图如图4所示。
6 实验验证
论文选取虚拟PLC编辑的跑马灯程序进行通讯系统的验证。
电源模块是由USB接口处的VCC端提供外部电源的输入,经稳压处理后分别对USB口转串口模块、单片机模块、以及由LED灯组成的控制对象进行供电。USB口转串口芯片的供电是不经电源开关的,由VCC端输出后经滤波后直接供应;剩下的单片机模块和LED灯则是经电源开关控制其电源的供应,以确保电路运行的安全。在硬件电路中设置了四个按键X0~X4,分别对应上位机中的X000~X003按钮,通过该按键可以改变P1口的输入电平。整体的电路连接图如图5所示。
论文采用9盏LED灯做为硬件控制对象,分别对应虚拟PLC输出口的Y000-Y007和Y010。虚拟PLC通过编辑Y口的改变来驱动LED灯的运行,从而实现虚拟PLC对硬件的控制;用户可以通过按键来影响虚拟PLC的运行时序。其中,X0按键启动单灯,X1按键启动双灯跑动,X2停止单灯跑动,X3停止双灯跑动。其梯形图和硬件效果对比如图6所示。
7 结束语
论文针对虚拟PLC硬实时性差的问题,研究了基于单片机的硬件通讯系统,实现了虚拟PLC对LED等硬件的控制。存在的特色和创新之处如下:
1)通过该系统,可以实现虚拟PLC对硬件电路的控制,拓展了虚拟PLC的应用范围;
2)利用USB电源数据线代替DB九针使硬件仿真操作更为方便,具有很好的适用性,方便用户操作;
3)利用单片机代替硬件PLC来作为下位机,保证了PC仍是PLC运行的核心,较传统PLC降低了硬件仿真的成本。的工作,研究驱动功率更大,需求更为复杂的硬件模型。若要了解更多PLC技术、资讯、分析报告文章,请点击查看http://plc.jlck.cn/ 2011年PLC企业“爆”团,新鲜技术全接触。