《世纪星组态软件和Visual Basic 6.0数据交换.docx》由会员分享,可在线阅读,更多相关《世纪星组态软件和Visual Basic 6.0数据交换.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、世纪星组态软件和VisualBasic6.0数据交换世纪星组态软件和VisualBasic6.0数据交换zhangting导语:尽管组态软件已经具备了很强的功能,但是在很多场合都有直接使用第三方代码的要求。1引言尽管组态软件已经具备了很强的功能,但是在很多场合都有直接使用第三方代码的要求。例如用户需要将组态软件收集的实时数据传送到自己开发的VB程序中做更复杂的数据分析或是将世纪星收集的数据做特定的处理之后再传送给世纪星,这都需要有一种数据交换机制。当然实现这种交换机制有很多传统的方法,如使用文件分享数据、使用DDE数据交换机制。传统的方法固然可以到达数据交换的目的,但其使用方法较为烦琐,使用文
2、件分享数据就需要在组态软件和外部程序内部进展文件读取操纵,这样不但费事而且处理速度也相对较慢,在要务实时性较好的工程中就显得力不从心。为了让第三方程序方便地读写世纪星数据,世纪星提供了基于ActiveX技术的OCX控件,此控件可以在大多的开发环境中使用如VC+6.0、VB6.0,它就是DBComm。2DBComm世纪星数据交换标准控件世纪星提供标准控件DBComm.ocx与外部第三方程序进展数据交换,数据交换内容包括:2.1实时数据交换外部程序可以读取世纪星的系统变量包括系统离散、系统整数、系统实数和系统信息、内存变量包括内存离散、内存整数、内存实数和内存信息和IO变量包括IO离散、IO整数、
3、IO实数和IO信息;还可以改写世纪星的内存变量和IO变量。相关函数:DiscValue=tagReadDiscTagname读取世纪星离散变量的当前值IntValue=tagReadIntTagname读取世纪星整数变量的当前值FloatValue=tagReadFloatTagname读取世纪星实数变量的当前值MessValue=tagReadMessTagname读取世纪星信息变量的当前值tagWriteDiscTagname,DiscValue改写世纪星离散变量的当前值tagWriteIntTagname,IntValue改写世纪星整数变量的当前值tagWriteFloatTagname
4、,FloatValue改写世纪星实数变量的当前值tagWriteMessTagname,String改写世纪星信息变量的当前值InitCommDBComm初始化函数2.2历史数据读取外部程序可以按时间和变量名称读取世纪星的历史数据。TimeUINT=ConvertTimeYear,Month,Day,Hour,Minute,Second时间转换函数DiscResult=GetHistoryDataTagname,StartTime,EndTime,DataArray,SizeOfArray,Interval根据指定的起止日期时间和世纪星的变量名称读取世纪星的历史数据。3DBComm在VB6.0
5、中的应用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世纪星监控程序将控制电路配置好,
6、将上位机连接到PLC。开发世纪星监控程序,配置相应的串口驱动、串口参数,创立的监控画面如下:3.2VB外挂程序开发创立一个VB标准工程。ProjiecComponentsDBCommActiveXControlMoudle。初试化DBCommdbcomm_pid.InitComm从世纪星组态软件读取温度设定和实际值SV=dbcomm_pid.tagReadFloatsvPV=dbcomm_pid.tagReadFloatpvy0输出时间计算函数根据P=0.5,I=0.5,D=0PrivateFunctionPIDCalcppAsPID,ByValNextPointAsDoubleAsDoubl
7、eDimdErrorAsDoubleDimErrorAsDoubleError=pp.SetPoint-NextPointpp.SumError=pp.SumError+ErrordError=pp.LastError-pp.PrevErrorpp.PrevError=pp.LastErrorpp.LastError=ErrorPIDCalc=pp.PError+pp.ipp.SumError+pp.DdErrorEndFunction3.3加热输出控制根据2中计算的加热时间时间百分比,x%1s,对PLC的Y0进展输出控制。Y0ON/OFF:tagWriteDiscy0,1/tagWriteDiscy0,0,Y0脉宽调制如下列图所示:3.4实验结果本工程利用世纪星组态软件收集温度实际值从PLC,在组态软件中设定温度的目的值,在VB6.0程序中计算输出功率的百分比,VB再将加热时间Y0时间传递给组态软件,组态软件再传给PLC,PLC控制加热。由于采用了粗糙的PID,所以控温精度在正负1度以内精度不在本文研究范围内,但是VB通过DBComm和世纪星组态软件实时交换数据功能良好。综上所述,世纪星所提供的DBComm控件使用方便,为第三方程序提供了完备的数据交换接口。另外DBComm控件还可以访问世纪星组态软件的历史数据库,本篇暂不详述。0