首页 新闻 工控搜 论坛 厂商论坛 产品 方案 厂商 人才 文摘 下载 展览
中华工控网首页
  P L C | 变频器与传动 | 传感器 | 现场检测仪表 | 工控软件 | 人机界面 | 运动控制
  D C S | 工业以太网 | 现场总线 | 显示调节仪表 | 数据采集 | 数传测控 | 工业安全
  电 源 | 嵌入式系统 | PC based | 机柜箱体壳体 | 低压电器 | 机器视觉
世纪星组态软件和Visual Basic 6.0数据交换
北京世纪长秋科技有限公司
收藏本文     查看收藏
引言
    尽管组态软件已经具备了很强的功能,但是在很多场合都有直接使用第三方代码的要求。例如用户需要将组态软件采集的实时数据传送到自己开发的VB程序中做更复杂的数据分析或者是将世纪星采集的数据做特定的处理之后再传送给世纪星,这都需要有一种数据交换机制。
    当然实现这种交换机制有很多传统的方法,如使用文件共享数据、使用DDE数据交换机制。传统的方法虽然能够达到数据交换的目的,但其使用方法较为烦琐,使用文件共享数据就需要在组态软件和外部程序内部进行文件读取操作,这样不但麻烦而且处理速度也相对较慢,在要求实时性较好的工程中就显得力不从心。为了让第三方程序方便地读写世纪星数据,世纪星提供了基于ActiveX技术的OCX控件,此控件可以在大多的开发环境中使用(如VC++6.0、VB6.0),它就是DBComm。
 
2  DBComm 世纪星数据交换标准控件
    世纪星提供标准控件 DBComm.ocx 与外部第三方程序进行数据交换,数据交换内容包括:
2.1 实时数据交换
    外部程序可以读取世纪星的系统变量(包括系统离散、系统整数、系统实数和系统信息)、内存变量(包括内存离散、内存整数、内存实数和内存信息)和IO变量(包括IO离散、IO整数、IO实数和IO信息);还可以改写世纪星的内存变量和IO变量。
    相关函数:
    DiscValue=tagReadDisc(Tagname) 读取世纪星离散变量的当前值
    IntValue=tagReadInt(Tagname) 读取世纪星整数变量的当前值
    FloatValue=tagReadFloat(Tagname) 读取世纪星实数变量的当前值
    MessValue=tagReadMess(Tagname) 读取世纪星信息变量的当前值
    tagWriteDisc(Tagname, DiscValue) 改写世纪星离散变量的当前值
    tagWriteInt(Tagname, IntValue) 改写世纪星整数变量的当前值
    tagWriteFloat(Tagname, FloatValue) 改写世纪星实数变量的当前值
    tagWriteMess(Tagname, String) 改写世纪星信息变量的当前值
    InitComm() DBComm初始化函数
2.2 历史数据读取
    外部程序可以按时间和变量名称读取世纪星的历史数据。
    TimeUINT=ConvertTime(Year, Month, Day, Hour, Minute, Second)
    时间转换函数
    DiscResult=GetHistoryData(Tagname,StartTime,EndTime,DataArray,SizeOfArray, Interval)
    根据指定的起止日期时间和世纪星的变量名称读取世纪星的历史数据。
 
3  DBComm在VB6.0中的应用

    VB工程和世纪星工程数据交换示意图:

世纪长秋 世纪星组态软件

    下面是一个应用VB程序在外部计算PID输出功率的一个简单实验:
    需要硬件:三菱FX2N系列PLC、FX2N-4AD-TC、加热器、S分度热电偶(TC)、固态继电器(SSR)。
    需要软件:世纪星组态软件7.22、VB6.0。
    如下图所示为电器原理图:
    世纪长秋 世纪星组态软件
     
    如上图所示是一个加热控制系统。PLC主模块负责控制继电器的通断(PID输出),TC模块负责温度采集(PID输入),上位机世纪星部分负责温度设定、采集下位机信号、曲线显示、数据记录、数据检索等功能,上位机VB部分负责从世纪星获取设定温度SV、测量温度PV、计算PID输出(固态继电器的通断时间)。
3.1 世纪星监控程序
    将控制电路配置好,将上位机连接到PLC。开发世纪星监控程序,配置相应的串口驱动、串口参数,创建的监控画面如下:
      世纪长秋 世纪星组态软件
3.2 VB外挂程序开发
    * 创建一个VB标准工程。
    * Projiec—Components—DBComm ActiveX Control Moudle。
    * 初试化DBComm
    dbcomm_pid.InitComm
    * 从世纪星组态软件读取温度设定和实际值
    SV= dbcomm_pid.tagReadFloat ("sv")
    PV= dbcomm_pid.tagReadFloat ("pv")
    *  y0输出时间计算函数(根据P=0.5,I=0.5,D=0)
    Private Function PIDCalc(pp As PID, ByVal NextPoint As Double) As Double
    Dim dError As Double
    Dim Error As Double
          Error = pp.SetPoint - NextPoint
          pp.SumError = pp.SumError + Error
          dError = pp.LastError - pp.PrevError
          pp.PrevError = pp.LastError
          pp.LastError = Error
          PIDCalc = pp.P * Error + pp.i * pp.SumError + pp.D * dError
    End Function
3.3 加热输出控制
    根据2中计算的加热时间(时间百分比,x%*1s),对PLC的Y0 进行输出控制。
    Y0 ON/OFF:tagWriteDisc ("y0",1)/ tagWriteDisc ("y0",0),Y0脉宽调制如下图所示:
    世纪长秋 世纪星组态软件
3.4实验结果
    本工程利用世纪星组态软件采集温度实际值(从PLC),在组态软件中设定温度的目标值,在VB6.0程序中计算输出功率的百分比,VB再将 加热时间(Y0时间)传递给组态软件,组态软件再传给PLC,PLC控制加热。
    由于采用了粗糙的PID,所以控温精度在正负1度以内(精度不在本文研究范围内),但是VB通过DBComm和世纪星组态软件实时交换数据功能良好。
 
4 总结
    综上所述,世纪星所提供的DBComm 控件使用方便,为第三方程序提供了完备的数据交换接口。另外DBComm 控件还可以访问世纪星组态软件的历史数据库,本篇暂不详述。
 

 

状 态: 离线

公司简介
产品目录

公司名称: 北京世纪长秋科技有限公司
联 系 人: 徐向农
电  话: 010-84645656
传  真: 010-84646515
地  址: 北京市朝阳区惠新东街8号设计大厦14层
邮  编: 100029
主  页:
 
该厂商相关技术文摘:
世纪星油库进出油量监测方案
《世纪星组态软件》的独特功能
世纪星:罐区安全 全面监控
世纪星实现弹簧按钮功能升级
世纪星控件DBComm:小块儿有大“智慧”——DBComm.OCX控件 实现PID控制
世纪星组态软件完美的时间转换函数:DateTimeConvert
世纪星组态软件强大的数据库查询函数
建立完美通信:世纪星与西门子S7-200以太网
怎样通过OPC Client与世纪星交互
世纪星与硬件设备的连接秘笈
世纪星组态软件新技术:短息报警功能
世纪星组态软件的数据存储策略
更多文摘...
立即发送询问信息在线联系该技术文摘厂商:
用户名: 密码: 免费注册为中华工控网会员
请留下您的有效联系方式,以方便我们及时与您联络

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 不良信息举报
工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2022 Gkong.com, All Rights Reserved