浔之漫智控技术-西门子PLC代理商
西门子PLC模块 , 变频器 , 触摸屏 , 交换机
云南西门子S7-300代理商

云南西门子S7-300代理商

1 引言
  数据库可以实现数据的表格化处理,使程序功能得到极大的增强。在plc的应用中,一般针对逻辑控制的对象,很少涉及数据库的功能实现。但随着plc应用的日益广泛,高端的plc中逐步引入了一些数据表的操作的功能,利用这些指令可以实现简单的数据库功能,使plc的应用更为灵活,程序功能更强。
  cc-bbbb是三菱公司提供的面向现场应用的一种plc现场总线网络系统,利用cc-bbbb网络模块可以实现异地plc之间的信息通信和共享。本文讨论在cc-bbbb网络系统及plc中实现具有异地数据共享的网络数据表功能。

2 系统的构成
  图1是一个喷漆机器人的系统构成。



图1 喷漆控制系统

  喷漆系统应用在连续喷涂的生产线中,根据客户及机器人的要求,在生产线的上件处设置信息录入系统输入工件的信息,在喷房区域设置工件检测确认系统,检测输送机上的工件状态,查询工件的信息并发送给机器人。因此在工件上件处和喷房分别设置了plc站,plc站和四台机器人之间通过cc-bbbb系统连接成一个网络系统,利用cc-bbbb的网络通信功能实现系统的信息通信。
  其中喷房处的plc采用q02cpu,作为网络的主站,其cc-bbbb网络主站模块为qj61bt11,而上件处的plc采用fx2n系列,作为网络的子站,其子站模块为fx2n-32ccl。
  在这个系统中,要求实现如下的数据库功能:在上件处录入信息,在喷房处检测工件状态并将对应的录入信息发送给机器人,同时在上件处和喷房处能够同步显示已录入的信息及其状态,而且两地都能够实现对已录入信息的修改、删除、查询、插入等功能。

3 功能实现
3.1数据库的建立
  为了数据的唯一性及数据库实现的方便,数据库建立在本地站,录入站的数据操作通过指针对本地站的数据库进行相应的操作,两站之间通过cc-bbbb进行数据交换。
  首先是数据表的建立。受plc特点的限制,建立数据表时要根据设计的要求预先确定数据表中每个字段的大存储要求,根据该存储量对表格中的每个变量字段分配一段连续的存储区。在本文的应用中,根据机器人的要求,必须建立两个数据表。其中个表格记录录入程序的信息,该表格包括以下字段:程序号,颜色,要处理的工件数量,程序的状态。第二个表格记录每个工件的当前位置,工件的对应程序在个表格中的位置。在本系统中,大的工件程序限定为100个,大的待处理工件数也限定为100个,因此两个数据表的长度都限定在100的范围内,为此建立表格如表1、表2所示。

[NextPage]

表1 程序表


表2 工件队列表
 


  上述两表中的第二行表示在plc中分配给对应字段的内存地址。其中工件队列表中“工件的对应程序位置”字段的值指向该工件所需处理程序在程序表中的位置,因此两表之间构成了相关的关系。
  第二步是指针的建立,在q系列plc指令系统中提供了基本的数据表指令,但为了实现更灵活的功能需要建立指针。对工件队列表建立查表指针d8000和指向数据表末端的指针d8001,利用d8000可以查询表中的任意记录,利用d8001可以将新的工件信息正确地录入到数据表中,从而建立起正确的工件队列信息。
  由于程序表需要在本地站和录入站中进行表格显示,因此对程序表建立本地站数据显示表格的表头对应的指针d8002,表尾对应的指针d8003以及查表指针d8004,相应地针对录入站的操作也有对应的一组指针d8005,d8006,d8007。为了数据的录入,建立程序表的表尾指针d8008。对应正在处理的程序,建立跟踪当前处理程序的指针d8009。
3.2 数据库基本功能的实现
  数据库基本的功能包括添加、插入、修改、删除、查询等操作。
  其中,plc本身提供了数据表的添加、插入、删除指令,他们是:添加指令fifw将数据写入到数据表的末尾,插入指令为fins,删除指令为fdel分别在表格的对应位置插入或删除数据。查询、修改功能没有对应的plc指令,但可以利用plc提供的变址访问功能实现。以查询为例:查询指针记录了表中的查询位置,利用以下程序,可以查询到程序表中某个记录的值。
  修改功能则是对指针所指向的存储器的值进行修改即可。但是,在实现上述功能时,都会涉及到某些指针的修改,plc本身并不提供指针的自动修改功能,因此必须在功能实现时,及时对指针进行修改。考虑到plc梯形图程序是按顺序扫描执行,因此在进行功能实现和指针修改时,可以不用考虑相互功能实现之间的影响。
3.3 数据的异地访问
  在我们的系统中,以喷房的本地站为主站,录入处的plc为子站,并且分配四个逻辑子站给子站plc。在录入站中要实现程序数据的录入和主站中的程序表的显示,因此利用cc-bbbb网络,将录入站的数据库操作命令及数据写入或从本地站读入数据。
  但是,对于每个子站,cc-bbbb规定了远程输入点和远程输出点各16位,而写远程寄存器和读远程寄存器各4个,本系统中,对数据库的写入只需要3个寄存器,但因为在子站的表格的显示需要,需要每次从主站读入20个数据,而4个cc-bbbb子站提供的读远程寄存器只有16个,如果寄存器与数据一一对应,则实际的寄存器数量满足不了需要。为了解决这个问题,将子站的操作指针直接设置在主站,主站根据子站的操作命令对该指针进行修改或调用,然后将需要的数据返回子站。返回时,将20个数据通过数据之间的组合编码,转换为16个字的内容,通过cc-bbbb返回给子站,在子站再进行解码,还原出20个对应的数据进行显示。

4 结束语
  通过上述的分析,利用plc本身的数据表指令以及变址访问的应用,可以在plc中实现数据库的基本功能,而通过cc-bbbb的网络数据通信功能以及数据变换编码的技术可以实现数据库中异地数据的录入及查询显示功能

1  引言

    可编程控制器PLC是以微处理器为核心,综合计算机技术、自动控制技术和通信技术发展起来的一种通用工业自动控制装置,它具有可靠性高、体积小、功能强、程序设计简单、灵活通用、维护方便以及抗干扰能力强等优点,因而广泛应用于电力、冶金、能源、化工、交通等领域,但是大多数中小型PLC的显示功能较差,人机交互操作不便,管理人员不能及时了解现场情况,尤其是在现场调试中,为弥补PLC在这些方面的不足,在实际控制系统中,通常采用PLC作为下位机实现对生产过程的控制,以计算机作为上位机实现工艺流程参数显示、控制参数设置等功能,使PLC和计算机相互结合,充分发挥PLC在开关量、模拟量控制和计算机在管理、监控等方面的优势,以实现优势互补,极大提高控制系统的性价比。
实现计算机和PLC控制系统的关键是两者之间的通信,一般情况下,用户可以采用现有的组态软件实现监控,但该方法成本较高,为此本文介绍了在Visual Basic 6.0的环境下,实现计算机与三菱FX系列PLC的串行通信方法。

2  PLC与计算机的通信端口连接

    FX系列PLC的编程接口采用RS-422标准,而计算机的串行口采用RS-232C标准,因此采用接口模块FX-232AW将RS-422标准转换为RS-232C标准。如图1所示,计算机、PLC与FX-232AW之间采用反馈与交叉相结合的连接图。


图1  FX-232AW接口引线连接图


?引脚2、3:将引脚2、3交叉互连,使PLC与上位机之间能发送和接收数据。
?引脚4、5:将引脚4、5反馈短接,对计算机发送数据来说,PLC总是处于数据准备就绪状态,计算机在任何时候都可以将数据送到PLC中。
?引脚6、20:将引脚6、20交叉互连,对计算机来说就必须检测PLC是否处于准备就绪状态,即检测引脚6是否为高电平。当引脚6为高电平时,表示PLC准备就绪,可以接收数据,这时计算机就可以向PLC发送数据了;反之,当引脚6为低电平时,PLC与计算机则不能通信。

3  计算机与PLC之间的通信协议

    FX系列PLC与计算机的通信模式有两种:
? PLC与计算机采用专有协议(dedicated protocol)通信,这种方式无须编写梯形图,计算机直接读写PLC;
?PLC与计算机无协议通信,这种方式需要编写梯形图,并使用串行数据传送指令RS。这里介绍专有通信协议。
FX系列PLC与计算机专有通信协议提供有数据读取、控制命令写入、控制PLC启/停和网络测试等功能,该协议有两种格式:bbbbat1和bbbbat4。两种协议的区别在于字符串中是否添加CR/LF码,采用哪种格式的协议由PLC中的特殊数据寄存器D8120决定,计算机向PLC传送的字符串格式如图2所示,在该字符串中,可由D8120来决定是否添加和校验码,此外bbbbat4需要在字符串末尾添加CR/LF。计算机与FX系列PLC之间采用主从应答通信方式,PLC内部不需要额外的通信程序,只要将所需数据放在数据寄存器中即可。每个数据寄存器都有相应的物理通信地址,通信时计算机直接对物理通信地址进行操作。


图2  字符串格式


控制代码(Control Code)主要用来控制每步数据的传送。以bbbbat 1为例,当要对PLC进行读操作时,计算机发出请求报文,该报文以ENQ码开头,并包括了报文中的所有字段,其中有字符域A。PLC对计算机的请求作出响应,以STX码开头,以ETX码结尾,该报文不包括操作指令字段和消息等待时间。当计算机收到PLC发出的响应报文,计算机发出确认报文或未确认报文,该报文只包括有控制代码、站号、PC号和错误码Error Code,如图3所示。


图3  计算机从PLC读操作报文协议

[NextPage]
计算机与PLC间通过报文来交换信息,这些信息在交换过程中需要遵守一些约定。当要对PLC进行写操作时,计算机同样发出请求报文,该报文以ENQ码开头,包括了报文中的所有字符字段,其中有字符区域C,PLC对计算机的请求作出响应,返回确认报文或未确认报文,如图4所示:


图4  计算机向PLC写操作报文协议


站号(Station NO.)用来决定计算机访问哪一台PLC,在FX系列PLC中,站号范围从00H到0FH,特殊辅助寄存器D8121可用于设置站号。
PC号(PC NO.)用来识别PLC上的CPU,对于FX系列PLC,该值为FFH。
指令(Command)用来指定要进行的读写操作,每个命令字都由两个ASCII码表示。
消息等待时间(Message Wait)指从计算机发出指令到成为接收状态所需的时间,以10ms为一单位,等待时间可达150ms,可通过一个0到F间的ASCII码来设定。消息等待时间主要用于半双工通信模式下读写操作间的切换。
字符区域(Character)A为计算机要读取的存储区的开始位置和字节数。B为PLC返回的要读取的存储区的数值。C为计算机要写入的存储区的开始位置和数值。
和校验码(Sum Check Code)是从站号开始、和校验之前所有字节按位相加后取和的低两位数的ASCII码,和校验码主要用于校验数据传送过程中是否发生位错误。

4  计算机与PLC通信程序设计

    在bbbbbbs操作系统中实现串行通信主要有三种途径:
?利用一些编程工具如Delphi提供的通信控件SPComm,Visual Basic或Visual C++提供的特定通信控件MSComm,开发者通过对这些控件编程来实现对串口的操作。
?调用bbbbbbs提供的API函数在Win32环境下,硬件设备被当作文件系统来访问,应用程序调用Create File()函数来读写数据。
?通过C/C++语言将自己的程序编译链接为DLL,然后用Visual Basic调用DLL里的函数来通信。这里介绍VB中通过MSComm控件实现串行通信的方法。
由于Visual Basic 6.0是bbbbbbs环境下简单高效的可视化编程语言开发系统,以其所见及所得的可视化界面设计风格和面向对象程序设计等特点,已广泛应用于各个领域,改编程语言不但提供了良好的界面设计能力,而且在计算机串口通信方面也有很强的功能,VB中的通信控件MSComm具有完善的串行数据收发和接收功能,不但包括有全部bbbbbbs API中关于串行通信的函数所具有的功能,还提供了更多的对象属性来满足不同用户的编程需要。
MSComm控件提供了两种处理通信的方法:
? 事件驱动法:当有数据到达端口,端口状态发生改变或有通信错误发生时,触发MSComm控件的OnComm事件,事件驱动实时性强,对外界情况可以作出快速响应,因而是处理串行端口交互作用的一种非常有效的方法。
?查询法:用软件或在程序中设置定时器实现对端口周期性扫描,通过读取CommEvent属性值来查询通信事件和错误,并作出相应处理,查询法编程简单,调试方便,如果应用程序较小,并且是自保持的,这种方法是可取的。
由于MSComm控件隐藏了调用过程,屏蔽了通信过程中的底层操作,使用该控件只需定义相应的属性,调用Send方法发送数据或等待处理相应的事件接收数据,就可以轻松实现串行异步通信。MSComm控件支持如下主要属性和事件。
CommPort属性:设置(返回)控件对应的端口号,系统用端口号唯一标识每一个串行端口。
Settings属性:设置(返回)控件所用的传输协议,以字符串的形式定义控件使用的波特率、奇偶校验、数据位、停止位等参数。此设定应与PLC的设定相一致。
PortOpen属性:打开或关闭通信端口。
bbbbb属性:从接收缓冲区接收并保存MSComm控件接收到的数据。
Output属性:向发送缓冲区发送数据。
bbbbbLen属性:设置从接收缓冲区读取的字符数。
InbufferCout属性:返回接收到数据缓冲区中需要处理的数据长度。在查询方式中,该属性可用来判断输入缓冲区是否接收到所需的字符。
bbbbbMode属性:设置(返回)bbbbb属性传输的数据类型。
OnComm事件:MSComm控件产生动作(如接收数据)或错误时,触发该事件。
CommEvent属性:返回近的通信事件或错误,可在OnComm事件中检测该属性的值后处理。
这里给出计算机与PLC采用查询法通信的部分程序。

[NextPage]
’MSComm控件初始化
Private Sub bbbb_Load()
STX$=Chr$(2)
ETX$=Chr$(3)
ENQ$=Chr$(5)
NAK$=Chr$(&H15)
ACK$=Chr$(6)
MSComm1.Settings=”9600,e,7,1”
MSComm1.InBufferSize=1024
MSComm1.CommPort=1
MSComm1.OutBufferSize=1024
MSComm1.OutBufferCount=0
MSComm1.PortOpen=True
MSComm1.bbbbbLen=0
End Sub
’计算机与PLC的连结程序
Private Sub Command_Click()
Dim WaitTime As Long
Dim StartTime As Long
MSComm1.Output=Chr(5)
WaitTime=5
StartTime=Timer
Do While Timer<StartTime+WaitTime
    DoEvents
Loop
If MSComm1.InBufferCount>0 Then
    If Asc(MSComm1.bbbbb)=0 Then
MsgBox(“连结成功,准备发送数据”)
    Else
  MsgBox(“连结失败”)
    End If
Else
   MsgBox(“连结失败”)
End If
End Sub
’计算机从PLC读函数程序
Function CmdRead(Rd As bbbbbb) As bbbbbb
Dim X As Integer
Dim Y As Integer
Dim Z As Integer
MSComm1.InBufferCount=0
Read$=Chr(5)&Rd&CheckSum(Rd)   
’读数据帧由ENQ、命令串和和校验码组成
MSComm1.Output=Read$
Do
    DoEvents
Loop Until MSComm1.InBufferCount>=9
Data$=MSComm1.bbbbb
X=Val(Asc(Left(Data$,1)))
Y=CheckSum(Mid(Data$,2,Len(data$)-3))   
’计算应答帧的和校验码
Z=Mid(Data$,Len(Data$)-1,2)   
’计算接收到的应答帧的和校验码
If X=2 And Y=Z then   
’STX的ASCII码为02H
    CmdRead=Mid(Data$,6,Len(Data$)-8)
    MSComm1.Output=ACK$
Else
CmdRead=‘Error’
    MSComm1.Output=NAK$
End If
End Function
计算机向PLC写函数程序与读函数程序类似。

5  结束语

    文中给出了利用VB的MSComm控件实现计算机与PLC实时通信的基本思想和设计方法,该程序简单、可靠、实用,并可根据实际工矿要求灵活修改程序。现在火电厂输煤程控系统的电除尘设备中,有些系采用该系列的PLC,可采用上述方法来保证控制系统通信稳定、有效。


发布时间:2024-05-08
展开全文
优质商家推荐 拨打电话