基于PLC自由口通信的应用

来源:网络

点击:1363

A+ A-

所属频道:新闻中心

关键词: PLC 自由口通信

    1 引 言

            常规的通过PC机,利用PC对工艺对象的控制,大多都是在具有组态软件或通讯模块的情况下进行,但是对于一些小型的控制系统而言,由于受到简单实用和成本低的原则限制,不适合使用常规方法。

            为了满足小型系统中带上位机结合PLC实现自动控制的低成本的要求,把控制放在PLC中运行,利用Visual Basic结合PLC中的通信语言进行编程,实现上位机与PLC之间,在无通讯模块情况下的数据信息的双向通信传输,很好地解决了工程应用中的一些实际问题。

    2 控制系统的组成

    2.1 工艺对象的介绍

            由1个具有一定气阻和气容所构成的压力贮罐装置是1个一阶对象,而由3个一阶特性的压力贮罐串联,就组成了一个三阶压力对象装置,在工程中通常认为是高阶系统。如图1所示,主流量经调节阀、转子流量计再依次进入1#、2#、3#贮罐中,从而分别实现一阶、二阶、三阶对象,对象的时间常数分别由R1C1、R2C2、R3C3来决定(R为气阻,C为气容),并可由R1、R2、R3来改变对象的特征。而对对象产生干扰,即为进入各个贮罐的干扰源。

    2.2 控制系统方案实施

            在图1中,3#罐的压力是否稳定,将直接反映出输出介质压力的质量,故以3#罐的压力作为被控变量。如果以3#罐的压力为测量值设计一单回路控制系统,也能达到一定的自动控制的目的。由于干扰不仅从3#罐底部进入,而且也会从前面两个罐子的底部进入。为了使自动调节具有较强的克服干扰的能力,设计了一个串级控制系统。以3#罐压力为主被控变量,以干扰变化比较大且比较平凡的1#罐压力为副被控变量。在此串级控制方案中,副调节器可以改善主调节器的广义对象特性,同时副回路能自动克服对象的非线性影响,能够按照主回路的要求,更精确地控制操纵变量的质量流和能量流。具体方案如图1所示。

     
    图1 三阶压力装置流程图


            在实施过程中,采用S7-226PLC作为下位机,以1台PC机作为上位机进行监控和管理。下位机的任务是CPU配合EM235模块进行模拟量的输入/输出工作,能检测3个压力罐的压力测量值,送CPU进行处理。能分别在手动V 自动情况下输出3个压力罐的6个高、低报警信号和最终的调节器输出,并把输出信号经过隔离和转换送到调节阀,最终达到控制流量的目的;同时与上位机进行数据传输,把测量值-输出值-报警值及所处运行状态输入上位机。上位机除了接受下位机来的信号外,也向PLC输出一些控制参数,如PID调节参数的修改以及给定值的设定,动态地在流量图上显示变量的变化,并附有调节界面和各参数的变化曲线。

    3 上、下位机的通信

    3.1 两者之间的物理连接


            S7-226CPU是西门子SIMATIC S7-200系列中的一种,其内部集成的PPI接口为用户提供了强大的通信功能,PPI接口物理特性为RS485,可在多种模式下工作,其中自由口通信方式是S7-200PLC的一个很有特色的功能,它可以与任何协议公开的其它设备、控制器等进行通信。上位机串口符合RS-232标准协议,为了实现两者的通信必须进行协议转换,可以利用PC/PPI电缆连接两者,并同时完成协议转换的任务。

    3.2 的通信

            S7-200CPU支持多种通信方式,其系统协议为点对点接口(PPI),基于开放系统互联(OSI)7层通讯结构模型。PPI协议是一种主6 从协议,采用RS-485信号标准的令牌总线通信方式,通讯速率可在9600~19200bit之间选择。PPI协议是基于字符的,使用11位字符、1位起始位、8位数据位、1位奇偶校验位、1位结束位。通讯帧依赖起始和结束字符。S7-200CPU的通讯端口采用RS-485信号标准的9针D型连接口,PC/PPI电缆把S7-200CPU同个人计算机连接起来,S7-200的这个通讯端口可由LAD或STL程序来指定通讯方式,本程序中所指定的该端口的操作模式就是所谓自由端口模式。在自由端口模式下,用户可用程序来定义波特率、每个字符位数、奇偶检验和通讯协议。

    3.3 基于VB6.0的串行通信

            VB6.0把与串行通信有关的操作都封装在MSComm控件里,它是一种事件驱动的对象。VB同时也为这个控制提供了标准的事件处理函数、过程,并通过属性的方法提供了通信接口的参数设置,从而解决了串行通信的问题。

            涉及到的MSComm控件的主要属性如下:

            CommPort属性用于设置或返回通信连接端口号码。程序必须指定所要使用的串行端口的口号。Windows系统会使用所设置的通信端口与外界进行通信,程序也可以借助此属性返回所使用的连接端口号。

            Settings属性用于设置初始化参数,以字符串的形式设置或返回传输速率、校验位、数据位、停止位等4个参数。其默认值是:“9600,N,8,1”,表示所使用的通信端口是以9600位/s的速度传输,不作校验位检查,每个数据单元是8位,而停止位是1位。需要注意的是:这4项必须按照上述顺序,不可前后对调,字母“N”可以大小写,而且使用RS-232通信的双方,Settings必须完全一样,彼此才能顺利的沟通。

            PortOpen属性用于设置或返回通信连接端口的状态。使用前必须将要使用的串行接口先行打开,而在使用完毕后,也必须执行关闭操作。串行通信端口各项功能都是在PortOpen的True与Fause之间完成的。

           Input属性用于从输入缓存区返回并删除字符,程序靠这个命令将对方传到输入缓存区中的字符读出来,并清除缓存区中已被读取的字符。

            Output属性用于将一个字符串写入输出缓存区,当程序向对方传输字符串时,可使用此命令将字符串写入输出缓存区中。

            Rthreshold属性用于设置或返回引发接收事件的字符数,当缓存区达到所设置的字符数时,将会引发Ohcomm事件中的接收事件,它是引发接收事件的“门阀”,默认值为“0”,表示无论缓存区中有多少字符均不引发接收事件。

        使用MSComm控件的方式表面上看来要比使用直接调用API函数来得复杂,但实际上使用MSComm控件可以省去不少底层程序的编写,因此实际上要比API函数简单多了。

    3.4 接口编程
     
            在高阶压力系统的自控中,PLC要向PC传输10多个参数:3个压力罐的压力信号、调节输出信号、6个报警信号及手动6 自动状态信号等,同时要求PC向PLC传送主副调节器中的调节参数及主调的给定值,并把手动/自动状态命令送入PLC中,组成一个带上位机的PLC智能控制系统。在高阶压力装置监控操作界面上,单击调节器符号会弹出调节器操作面板界面和对应的测量值曲线界面。

    3.4.1 部分程序

        初始化:
        NETWORK 1
        LD SM0.0
        MOVB 9,SMB30
        NETWORK 2
        LD SM0.0
        MOVB 16 # EC,SMB87
        MOVB 103,SMB88
        MOVE 71,SMB89
        MOVW +1000,SMW92
        MOVE  35,SMB94
        R SM87.2,1
        NETWORK 3
        LD SM0.0
        ATH RcvComp,23
        ATH TxComp,9
        NETWORK 4
        LD SM0.0
        ENI
        RCV VB700,0
        MOVE 2,VB750
        MOVE 16#41,VB751
        MOVE 16#35,VB752
        NETWORK 5
        LD SM0.7
        =SM30.0

        3.4.2 VB6.0的部分程序代码

        采用自由口通讯协议通讯,其代码段为:

        发送格式:开始字符(g)+命令字+4个字节ASCⅡ码+BCC校验码(2个ASCⅡ)+结束字符(G)
        Dim OutData As Variant
        Dim Outllrrav(12)As Bvte
        Dim i As Byte
        Dim bcc As Byte
        Dim count As Integer
        Dim mvtime As Double
        CommControl. OutBufferCount=0
        OutArray(0)=Asc(“g”)
        OutArray(1)=Command
        OutArray(2)=Asc(Hex((PLCOUT1 And & HF0)/16W‘HIGH
        OutArray(3)=Asc(Hex(PLCOUT1 And & HF))‘LOW
        OutArray(4)=Asc(Hex((PLCOUT2 And & HF0)/16))‘HIGH
        OutArray(5)=Asc(Hex(PLCOUT2 And & HF))‘LOW
        OutArray(6)=Asc(Hex((PLCOUT3 And & HF0)/16))‘HIGH
        OutArray(7)=Asc(Hex(PLCOUT3 And & HF))‘LOW
        OutArray(8)=Asc(Hex((PLCOUT4 And & HF0)/16))‘HIGH
        OutArray(9)=Asc(Hex(PLCOUT4 And & HF))‘LOW
        bcc=0
        For i=1 To 9‘计算机BCC校验码
        bcc=bcc Xor OutArray(i)
        Next i
        OutArray(10)=Asc(Hex((bcc And & HF0)/16))‘HIGH
        OutArray(11)=Asc(Hex(bcc And & HF0))‘LOW
        OutArray(11)=Asc(“G”)
        OutData=OutArray
        count=0
        Send:
        CommControl.Output=OutData
        mvtime=Timer
        Do
        DoEvents
        Loop Until CommControl.InBufferCount≥4 Or
        Timer>mytime+0.3
        if CommControl.InBufferCount≥4 Then
        PlcSetOut=True
        CommControl.InBufferCount=0
        Form 1.Iblplc.Caption=“PLC通讯正常”
        Else
        count=count+1
        if count≤3 Then
        Go To Send
        Else
        MsgBox“通讯失败”
        PlcSetOut=False
        Form 1.Iblplc.Caption=“PLC通讯错误”
        errcount=errcount+1
        Form 1.Iblplc.Caption=errcount
        Exit Function
        End If
        End If
        End Function

    4 结束语

            文中所介绍的通信方案适用于中小型的智能控制系统,具有使用方便、应用可靠的特点,已成功应用于所介绍的高阶压力系统的串级控制回路中。目前正用于研究不同压力下,高阶系统稳定性的情况分析,以及不同压力下调节器参数的变化规律。经实践证明这是一种非常有效、可靠的通信方法,其建立在通信基础上的动态参数显示及在线参数修改,大大提高了系统的控制性能。这种通信方法完全可以应用于其它相关的通信场合,具有一定的普遍意义。

    (审核编辑: 智汇李)