数控机床上应用PLC一般有两类:一类是内置型PLC。NC 和PLC之间的信息传递是在内部总线的基础上进行,因而有较高的交换速度和较宽的信息通道。一类是外置型PLC。它独立于NC装置,具有独立完成控制功能的PLC,一般采用专业化的PLC厂家的产品,它在输人/输出信号接口技术规范、输人/输出点数、程序存储容量以及运算和控制功能等方面均能满足数控机床的要求。在本数控系统内部的多轴运动控制器提供了内置的PLC,但考虑到它们共用一个CPU,大量的PLC程序运行时占用的伺服循环扫描时间过多,会影响运行过程中的数据运算和位置控制。同时,机床运行过程中如果CPU出现运算忙或意外的机会产生极为严重的后果。所以,在本系统中使用了外置型的PLC。独立的PLC可以方便地实现I/O扩展和同上位机连接;且独立的PLC具有独立的CPU及控制电路、程序存储器、I/O接口、通信接口、电源等设备,能够独立于IPC和多轴运动控制器之外工作,既不占用PC和多轴运动控制器的运行时间及资源,也不受二者运行忙和故障的影响,可以更加安全、可靠地保证机床运行。
1 基于主从式数控系统硬件结构
1.1 数控系统的结构
在本数控系统中,作为主机的工控机IPC完成数据的采集、存储、分析处理及显示输出等功能,实现对系统的实时监控,同时完成对现场的实时控制。多轴运动控制器完成电机位置和速度的实时控制、刀具补偿、插补运算、曲线轨迹计算及螺距补偿等工作。下位机的PLC实现机床数据采集、工作状态判断及指令输出控制等功能,完成控制机床加工和监视机床运行状态的任务。PLC是数控系统与外部协调工作的一个重要接口,它通过接收IPC传来的指令或向外传递信息,或由DMP的输人单元接收机床操作指令,监控机床的状态,并根据这些输人信息运行时先编制好的机床工作逻辑程序,将结果通过输出口直接驱动电器控制系统执行相应动作,同时将信息送MMI/CRT进行实时显示。系统结构如图1所示。
图 1 基于IP C和PMAC的数控系统结构
1.2 PLC与IPC的硬件连接
PL C本文选用松下的FP1系列产品的C72和扩展单元E24。采用点对点的通信方式,连接方式如图2所示。PLC与计算机的通信为RS232串行方式,利用PLC和计算机各自的RS232串行通信口,通信线路采用9芯屏蔽电缆。
2. PLC与主机的通信
2.1 PLC的串行通信方式设置
PLC 的通信端口有一个串行口和一个编程口,编程口也是遵循RS232C协议的串行口。通过串行口实现数据的上传和下载,也用于实现人机界面通信。
图2 RS232电缆连线图
分页
现读取继电器X0000的状态,则其发送预格式为:
“% 0 1 # RCSX00001DCR”RCS为读单个接点,X0000为发送的文本,1D为校验码
2) 响应祯格式
PLC接收到计算机的呼叫后,首先判断是不是一个完整的信息,然后检查呼叫站号是不是自己的站号,若是呼叫自己,则发送相应信息,否则不予理睬。当通信正确时,PLC发送下列信息:
设当前输人状态为“1”,则其响应祯格式为:
“% 01 $ RC120CR”,1 为X0000的接点状态,20为校验码
在数据传送期间如有错误,将由PLC发送下列信息:
2.3 块检查码程序BCC()
块校验码是为提高上位机与同PLC通信的可靠性设置的,按照通信协议,上位机也必须进行相应的和校验。将每一个命令帧中的第一个字符到该帧中正文的最后一个字符作“异或”运算,并将异或的结果转换为两个ASCII码,以此为该命令帧的BCC。接收端计算出收到的帧的BCC,如果与发送端传送的BCC不同,可以判断通信有误,并输出校验错误信息,BCC的计算见BCC()函数,
Function BCC (ByVal Outstring As String) As
String
Dim Slen ,t, Sum As Integer’定义变量
Dim Surnstr As String
Slen= Len(Outstring)’求字符串的长度
Su m = O
For t= 1 T oS len’将字符串Chttstring和校验
区的数据相加
Sum = S um X orA sc(M id$(Outstring,t,
1))'+_>xor
Next t
Sumstr= Hex$(Sum)’将和转换为十六进制
If Len (Sumstr)=1 Then'N EW ADD
Sumstr = “ 0 “+ Sumstr
End If
If Le n( Sumstr)=3 Then
Stunstr= Mid $ ( Stunstr,2, 2)
End If
BCC = Surnstr
If Mid $ (Sumstr,1,1 )=Mid$(Outstring,
Slen-1, 1)And Mid$ ( Sumstr, 2, 1)=Mid
$(Outstring,Slen,l) Then
BCC= Sumstr ,如果Sumstr和Outstring的对应位相等,则和校验成功
Else
BCC=“ 和校验错误”
End If
End Function
3 上位机通信程序的开发
3.1 通信方式的选择
FPI是非主动性通信模块,所有通信都需要主计算机发命令控制。IPC与PLC之间的通信采用主从应答式,IPC始终处于主动地位,根据需要向PLC发出读尸写命令;PLC处于被动状态只能响应IPC的命令,无需编程,通信模块自动进行应答,它没有请求发送权。由于监控信息出现的随机性,IPC并不知道何时去读取。因此,通信方式的选择对系统的实时性有一定的影响。
主机接收 PLC串行数据可采用查询和中断工作方式实现。查询工作方式是指在程序中主机定期读取PLC的有关信息,当监控点的状态发生变化时,采取相应的处理程序这种方法虽然简单、易于实现,但由于主机始终扫描串行口,它的工作效率较低,而且对双方通信的实时性产生很大的影响。采用串行中断工作方式接收数据,主机对串行口进行必要的初始化设置后不必再始终监控串行口的状态在PLC中建立一个通信请求标志位,只有当监控点的状态发生变化,才被置“1”,表明串行口有数据到达,主机在串行中断服务子程序中读取标志位,执行相关的数据接收和处理任务,主机的处理速度很快,工作效率大大提高。
3.2 IPC与PLC间的串行通信程序的开发
在本系统中使用串行通信编程的MSComm,通信控件,MSComm控件是微软公司开发的在Windows下串行通信编程的ActiveX控件,它为应用程序提供了串口进行数据输人和数据输出的能力。在VB6.0环境下,通过对MSComm控件串行中断属性的相关设置,主机提供了完善的串行端口中断功能,使常见的串行通信中断能力得以大大提升,MSComm控件提供两种处理通信的方式:查询方式和事件驱动方式。比较简单的通信任务可通过查询串口获得相关的信息并进行相应的处理。比较复杂的通信任务应该使用事件驱动方式,事件驱动通信是处理串行端口数据接收和发送的一种很有效的方法。Rthreshold和Sthreshold属性决定数据发送、接收的方式。当Rthreshold = 0时,接收数据不产生OnComm事件,通信程序必须定时主动查询接收数据缓冲区。在RThreshold = 1时,则接收到1个字符就产生OnComm事件,通信程序可以立即响应,从缓冲区中读取数据并执行响应的处理程序。由于通信程序在发送数据时不用进行相应的处理,只需等待,Sthreshold属性可以设置为0。在上位机通信程序中,采用中断接收、周期查询发送的方法,可以及时响应通信事件,保证通信的正常进行。具体中断响应如下:
Private Sub MSComml-OnCornm( )
Select Case MSComml。CommEvent
Case com EvCD'CD状态变化时处理
Case ComEvDSR'DSR状态变化时处理
Case comEvReceive’数据接收处理
MSComml 。In BufferCount=0
str = “% 0 1# RCP8R0001R0002R0017
R0018R0019Y0009Y000DR000A“’读取继电器
str =str +BCC (str) ’校验和处理
MS Comm l。 Output二 str+Chr$(13)'
先发送读命令读出各辅助继电器的状态
Do’延迟到缓冲区中有数据出现
DoEvents
Loop Until MSComml。InBufferCount> = 17
Var= MSComml。Input
Bin = HextoBin(Mid$ ( Var,7, 12))
If Mid$ ( Bin,13,1)=1Then
… …’对接收到的输人数据进行处理
Else
… …’其它处理
End If
End Select
End Sub
4 结论
在机床数控系统开发过程中,由于PLC的稳定可靠而被作为机床逻辑动作的核心控制部件使用。但它自身的信息管理能力较弱,特别是不能给用户提供一个友好的交互界面,妨碍了运行过程的实时捉侧综与故障诊断。利用上位机与PLC相结合的办法可以有效地解决上述问题,即PLC完成对系统底层的控制,而IPC则完成系统的监控与信息管理。基于VB6.0具有良好的面向对象设计方法、友好的用户界面、简易方便的串行口操作特点,实现PLC与IPC通信的方法,并用于实际的工程项目。