当前位置:首页>> 基于PLC自由口通信的应用

基于PLC自由口通信的应用

发布时间:2015-08-27作者:智汇李

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 结束语

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

公司简介

宜科(天津)电子有限公司是中国工业自动化的领军企业,于2003年在天津投资成立,销售和服务网络覆盖全国。作为中国本土工业自动化产品的提供商和智能制造解决方案的供应商,宜科在汽车、汽车零部件、工程机械、机器人、食品制药、印刷包装、纺织机械、物流设备、电子制造等诸多领域占据领先地位。宜科为智慧工厂的整体规划实施提供自系统层、控制层、网络层到执行层自上而下的全系列服务,产品及解决方案涵盖但不局限于云平台、MES制造执行系统、工业现场总线、工业以太网、工业无线通讯、机器人及智能设备组成的自动化生产线、自动化电气控制系统集成、智能物流仓储系统等,以实现真正智能化的生产制造,从而带来生产力和生产效率的大幅提升,以及对生产灵活性和生产复杂性的管理能力的大幅提升。多年来,宜科以创新的技术、卓越的解决方案和产品坚持不懈地为中国制造业的发展提供全面支持,并以出众的品质和令人信赖的可靠性、领先的技术成就、不懈的创新追求,在业界独树一帜。帮助中国制造业转型升级,加速智能制造进程,成为中国工业4.0智慧工厂解决方案当之无愧的践行者。

更多详情>>

联系我们

  • 联系人:章清涛
  • 热线:18611695135
  • 电话:
  • 传真:
  • 邮箱:18210150532@139.com

Copyright © 2015 ilinki.net Inc. All rights reserved. 智汇工业版权所有

电话:010-62314658 邮箱:service@ilinki.net

主办单位:智汇万联(北京)信息技术有限公司

京ICP备15030148号-1