用户中心
· 企业空间 首页 | 资讯 | 技术 | 产品 | 企业 | 直播 | 专题 | 智能制造 | 论坛| 在线研讨会
北京世纪长秋科技有限公司
企业空间 > 案例应用 > 正文
  • 世纪星控件DBComm:小块儿有大“智慧”——DBComm.OCX控件 实现PID控制
  • 发布时间:2010/12/16 11:12:05   修改时间:2010/12/16 11:12:05 浏览次数:3931
  • 1 引言

      尽管组态软件已经具备了很强的功能,但是在很多场合同样有直接使用第三方代码的要求。例如用户需要将组态软件采集的实时数据传送到自己开发的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中的应用

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

    图 1

      下面是一个应用VB程序在外部计算PID输出功率的一个简单实验:

      需要硬件:三菱FX2N系列PLC、FX2N-4AD-TC、加热器、S分度热电偶、固态继电器。

      需要软件:世纪星组态软件7.22、VB6.0。

      电器原理图如下图所示:

    图 2

      上图是一个加热控制系统。PLC主模块负责控制继电器的通断(PID输出);,TC模块负责温度采集(PID输入);上位机世纪星部分负责温度设定、采集下位机信号、曲线显示、数据记录、数据检索等功能;上位机VB部分负责从世纪星获取设定温度SV、测量温度PV以计算PID输出(固态继电器的通断时间)。

    3.2 世纪星监控程序

      首先,正确配置控制电路,将上位机与PLC相连,然后开发世纪星监控程序,创建相应的驱动,便能得到如下监控画面:

    图 3

    3.3 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.4 加热输出控制

      根据2中计算的加热时间(时间百分比,x%*1s),对PLC的Y0 进行输出控制。

      YO ON/OFF:tagWriteDisc ("y0",1)/ tagWriteDisc ("y0",0),Y0脉宽调制如下图所示:

    图 4

    3.5 实验结果

      本工程利用世纪星组态软件采集温度实际值(从PLC),通过在组态软件中设定温度的目标值,在VB6.0程序中计算输出功率的百分比,VB再将加热时间(Y0时间)传递给组态软件,组态软件最后再传给PLC控制加热。由于采用了粗糙的PID,所以控温精度在正负1度以内(精度不在本文研究范围内),但是VB通过DBComm和世纪星组态软件实时交换数据功能良好。

    4 总结

      综上所述,世纪星所提供的DBComm控件使用方便,为第三方程序提供了完备的数据交换接口。另外,DBComm控件还可以访问世纪星组态软件的历史数据库,下次有机会我们再详述。

  • 企业介绍
北京世纪长秋科技有限公司是从事工业自动化软件研发的高新技术企业,提供软件开发、销售、服务及工业自动化系统集成等整套服务,以创新为本的理念,为用户提供量身定做的解决方案。 我们的团队由充满创新活力、综合素质高的业内精英组成,拥有经…  更多>>
  • 产品分类
  • 联系方式

北京世纪长秋科技有限公司

联系人:徐向农

地址:北京市顺义区空港工业区B区裕东路7号

邮编:100029

电话:010-84645656

传真:010-84646515

公司网址:http://www.chncla.com

  • 该空间手机版

扫描此二维码即可访问该空间手机版

  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件:
您还没有登录,请登陆,
如果您还没有注册,点击这里注册.
  • 网友反馈
  • 王工 在2023/10/17 10:43:00留言
  • 留言类型:得到贵公司产品的价格信息,
  • 详细留言:买软件,系统一些的东西,联系您这边一直联系不上
  • 郑文瑞 在2022/8/8 13:14:00留言
  • 留言类型:得到贵公司产品的价格信息,贵公司产品销售人员联系我,
  • 详细留言:需要组态软件
  • 崔文涛 在2022/4/14 14:14:00留言
  • 留言类型:我想得到贵公司产品的价格信息,
  • 详细留言:得到贵公司产品详细资料,得到贵公司产品的价格信息,
  • 马成亮 在2021/5/23 10:32:00留言
  • 留言类型:得到贵公司产品详细资料,得到贵公司产品的价格信息,
  • 详细留言:组态软件
  • 方雪峰 在2021/4/13 16:22:00留言
  • 留言类型:得到贵公司产品详细资料,
  • 详细留言:我是一名大四学生,无机非金属材料专业,毕业设计为混凝土搅拌站的设计 希望贵公司能提供一些生产资料进行学习借鉴,祝贵公司生意兴隆
更多请进入空间管理中心查看
关于我们 | 网站地图 | 联系我们
© 2003-2018    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688
我要反馈