【vb精品源码栏目提醒】:本文主要为网学会员提供“【精品】-基于VB开发工业以太网主机与Oracle服务器的接口程序 - 综合课件”,希望对需要【精品】-基于VB开发工业以太网主机与Oracle服务器的接口程序 - 综合课件网友有所帮助,学习一下!
基于
VB开发工业以太网主机与Oracle服务器的接口程序福州大学电气工程与自动化学院福建福州350108姚彬王进华福州福大自动化科技有限公司福建福州350008康孝顺摘要应用
VB中的TextBox控件与Intouch组态软件通信来读取生产数据并将数据打包通过Winscok控件发送到Oracle服务器Oracle服务器接收内网数据再通过引用ADO部件实现与Oracle数据库的连接并将数据写入到Oracle数据库采用这种经济、简单、适用的方法成功的解决了由于正向型隔离器的使用而带来的无法通过在以太网主机中直接应用Intouch组态软件编写SQL语句将数据写入到Oracle服务器的问题。
关键词VBOracle正向型隔离器WinsockADO中图分类号TP31文献标识码B文章编号1000-3886201004-0035-04DevelopmentoftheInterfaceProgrambetweenIndustrialEthernetHostsandOracleServerBasedonVBFuzhouUniversityFuzhouFujian350108ChinaYaoBinWangJinhuaFuzhouFuDaAutomation-TechCoLtdFuzhouFujian350008ChinaKangXiaoshunAbstract:TheproductiondataarereadandpackedthroughtheTextBoxcontrolandIntouchconfigurationsoftwarecommunicationThenwiththehelpofWinscokcontrolthedataaresenttotheextranetserverwhichreceivestheIntranetdatabymeansofADOcomponentsTheconnectionbetweenproductiondataandOracledatabaseonwhichtheformerdataarewrittenisrealizedCausedbytheuseofthepositive-typeisolatortheproblemisimpossileofwritingthedatabytheSQLstatementsintoOracleserverthroughthedirectapplicationofIntouchconfigurationsoftwareintheethernethostsissuccessfulresolvedbythiseconomicalsimpleandsuitableapproachKeywordsVBoraclepositive-typeisolatorWinsockADO0引言随着信息技术的发展网络已经广泛到各行各业中网络安全也就显得越来重要南瑞NARI正向型隔离器凭借其独特的网络保护能力广泛的应用在电力网络和工业以太网中正向型隔离器对内网和外网之间进行物理隔离经过隔离装置进行数据传输的应用软件应遵守以下规则1外网主机和内网主机中的应用程序禁止采用SQL命令访问数据库2数据通信的启动端由内网发起外网反向的应答报文不容许携带数据。
因而有效的保护了内网的安全。
本文介绍的是需将内网———工业以太网的生产数据写入到外网———办公网的Oracle服务器由于要保护工业以太网的正常运行和数据安全在内网与外网之间加装了南瑞正向型隔离器SysKeeper-2000这样虽然保护了以太网的安全却不能在内网主机中直接应用Intouch组态软件编写SQL语句来访问Oracle服务器并将数据写入到Oracle数据库。
南瑞提供的与正向型隔离器配套使用的“SysKeeper-2000文件传输软件”和“ST-3000数据传送平台”实现与数据库的同步通信但是配套软件的价格昂贵因此需要一种既经济又实用的软件来实现内网主机通过正向型隔离器将数据传输到Oracle数据库的功能。
为解决这个问题我们采用
VB开发了工业以太网主机与Oracle服务器的接口程序。
1硬件组成及功能内网是一个两层网络外网是一个三层络内网主机和Oracle服务器之间安装了正向型隔离器正向型隔离器允许内网主机的数据发送到外网Oracle服务器而外网反向的应答报文不容许携带数据达到了保护内网安全的目的内网主机是一台工控机应用Intouch组态软件实时监控现场PLC和仪表等设备并显示和储图1硬件结构图ElectricalAutomation35《电气自动化》2010年第32卷第4期ComputerTechnologyApplications计算机技术与应用图2接口程序组成示意图存生产设备的运行数据外网服务器上安装了Oracle数据库储存企业的各类数据。
硬件组成如图1所示。
2接口程序的组成及功能接口程序包括两个部分客户端程序
VB_Client和服务端程序
VB_Server两个部分。
通过配置正向型隔离器的规则实现两者之间的连接正向型隔离器通信协议类型选择UDP协议再根据网络结构配置相应的通信规则即可实现内外网之间的连接客户端程序通过配置TextBox控件的属性与Intouch组态软件之间进行通信以读取生产数据并将数据通过Winsock控件发送到外网服务端程序通过Winsock控件接收内网数据同时经引用ADOActiveDataObiect部件与Oracle数据库建立通信连接并将数据写入到Oracle数据库。
接口程序组成如下图2所示3隔离器配置规则通过配置正向型隔离器的规则使得隔离器能按照预先设置的规则检查数据包已决定哪些数据允许通过那些数据包不能通过保护内部安全网络免受外部网络的影响。
根据图1中的网络结构需配置一条通信规则和一条ARP报文规则前者完成内外网之间的通信连接后者用于内网与外网主机之间交换ARP报文。
1通信规则协议类型选择UDP配置规则如下表1。
2ARP规则协议类型选择UDPARP规则如下表24客户端程序41从Intouch组态软件中读取数据在Intouch标记名字典中设置需要读取数据的I/O标记名项目名为
VB中文本框地址Text10、……、Text140TextBox控件显示运行时数据信息。
通过配置DDE协议的属性实现与Intouch组态软件数据交换。
DDE协议的属性如下LinkItem在DDE与另一个应用程序会话时返回或设置传给接收端数据程序中为所读取数据的Intouch标记名。
LinkMode返回或设置用于DDE会话的链接类型。
LinkTimeout返回或设置等待DDE响应消息的时间。
LinkTopic对于接收端控件返回或设置发送端应用程序和主题程序中为所读取数据的Intouch应用程序名。
程序如下从Intouch中读取数据WithText10LinkTopic“VIEWTagname”Intouch应用程序名LinkItem“CY_BAN”Intouch标记名LinkTimeout50LinkMode1EndWith……WithText140LinkTopic“VIEWTagname”Intouch应用程序名LinkItem“B51BQ_DC”Intouch标记名LinkTimeout50LinkMode1EndWith42数据发送到外网Oracle服务器1Winsock控件介绍它提供了访问TCP和UDP网络服务的方便途径通过设置件的属性并调用其方法就可轻易连接到一台远程计算机上去实现与远程计算机之间的数据传输。
用户数据报文协议UDP是一个无连接协议。
跟TCP的操作不同计算机并不建立连接。
另外UDP应用程序可以是客户机也可以是服务器。
为了传输数据客户端计算机只需将RemoteHost设置为外网的虚拟IP地址并将RemotePort属性设置为跟服务端计算机的LocalPort属性相同的端口并调用SendData方法来发送信息。
于是服务端计算机使用DataArrival事件内的GetData方法来获取已发送的信息或者数据。
2
VB程序如下这里的IP地址不是一般的内外网主机实际IP地址应于正向型隔离器的虚拟IP地址客户机的Winsock属性中IP地址为外网虚拟IP地址否则通信将无法实现。
设置IP及端口PrivateSubForm_LoadWithudpPeerARemoteHost“841912011”设置外网计算机的虚拟IP地址RemotePort1002设置外网计算机端口Bind1001绑定本地计算机端口EndWithEndSub发送数据打包PrivateSubSend_Data36ElectricalAutomation《电气自动化》2010年第32卷第4期ComputerTechnologyApplications计算机技术与应用SText10“”Text12“”Text13“”Text14“……”Text140“txtSendTextSEndSub调用SendData发送数据PrivateSubTimer_Send_TimerudpPeerASendDatatxtSendTextEndSub5服务端程序的实现51从内网接收数据通过配置Winsock控件接收来自客户端主机发送的数据服务端计算机只需将RemoteHost设置为客户端计算机的内网的虚拟IP地址是并将RemotePort属性设置为跟客户端计算机的Lo-calPort属性相同的端口。
程序如下设置IP及端口PrivateSubForm_LoadWithudpPeerBRemoteHost“10702010”设置为内网计算机的虚拟IP地址RemotePort1001设置内网计算机连接的端口号。
Bind1002绑定到本地的端口。
EndWithEndSub接收来自内网的数据PrivateSubudpPeerB_DataArrival_ByValbytesTotalAsLongDimstrDataAsStringudpPeerBGetDatastrDatatxtOutputTextstrDataEndSub分解数据包PrivateSubtxtOutput_ChangeDimValAsVariantValSplittxtOutput“”vbTextCompareText10Val0……Text140Val40EndSub52数据写入Oracle数据库1连接Oracle数据MicrosoftADOActiveDataObject部件是一个访问数据源COMConponentObjectModel接口它是程序语言与数据源的中间层能让开发者在不知道数据库的操作的情况下编写数据库的程序。
在使用ADO访问数据源的时候并不需要具有SQL的知识虽然ADO也能执行SQL命令。
程序编程中通过使用ADO与OLEDBOLEDB是一种底层编程接口用来访问许多不同类型的数据源并隐藏创建数据访问服务过程中的具体细节建立通讯来访问各种数据库因为应用程序中不能直接使用OLEDB接口。
ADO提供了一系列可编程对象用来存放由OLEDB提供的数据。
一共包括7个对象Con-nectionCommandRecordsetFieldParameterProperty和Error。
以下介绍3个主要的对象ConnectionCommand和Recordset。
Connection对象该对象代表所选数据源中的一个单一会话。
这种连接与Data控件直接连接到数据库的方式相同。
Connection供应用程序中的不同实例共享使用。
Command对象该对象指定了数据定义或所要执行的数据操作代码行。
虽然ADO既支持数据定义也支持数据操作但是仍然可以使用ADO来动态创建数据库。
Recordset对象该对象存放由数据库Command对象返回的一系列记录行。
可以控制记录中的光标的类型数据的排列和过滤方式也可以查看Recordset各字段的定义。
程序如下连接Oracle数据库PrivateSubConnectionDBOnErrorGoToErr_ConnectionDB:IfcnnState1ThencnnCloseSetcnnNewADODBConnectionSetrsNewADODBRecordsetcnnConnectionString“ProviderOraOLEDBORACLEDataSourse”“AUTO”“PersistSecurityInfoTrueUserIDsysmanPasswordOEM_TEMP”设置Oracle数据库的数据源名称、用户名及密码cnnCursorLocationadUseClientrsCursorLocationadUseClientcnnOpenExitSubErr_ConnectionDB:msg“Error”StrErrNumber“wasgeneratedby”_ErrSourceChr13ErrDescriptionMsgBoxmsg“Error”ErrHelpFileErrHelpContextErrClearEndEndSub2数据插入到数据库应用SQL语句“Insertto表格名称Values列名1列名2……”把数据写入Oracle数据库相应的表格中要插入时间/日期数据时应调用“to_date”时间函数。
程序如下把数据插入数据库PrivateSubUpdateDBOnErrorGotoErr_UpdateDB:IfrsState1ThenrsClosestrcon“insertintoTB_DATA_DJvaluesto_date”FormatNow“yyyy-mm-ddhh:mm:ss”“yyyy-mm-ddHH24:MI:SS”Text10“”Text11“……”Text140“rsOpenstrconcnnadOpenStaticadLockOptimisticExitSubErr_UpdateDB:ResumeNextEndSub6结束语本文介绍了因南瑞正向型隔离器的使用而造成的无法直接通过在内网主机应用程序中编写SQL语句来实现向Oracle服务器中写入数据的问题的解决办法应用
VB语言编写的客户端程序
VB_Client和和服务端程序
VB_Server将其分别在以太网主机和Oracle服务器上运行通过这种间接的方法将以太网生产数据写入了Oracle数据库而且经济、简单、适用。
参考文献1高飞乔瑞萍使用
VB开发数采系统与Oracle数据库的接口程序M西安西安交通大学电子与信息工程学院2高爽、肖扬OracleVB和Matlab在智能交通系统中的应用J铁路计算机应用200413124043ElectricalAutomation37《电气自动化》2010年第32卷第4期ComputerTechnologyApplications计算机技术与应用下转第46页46ElectricalAutomation可编程序控制器应用PLCApplications《电气自动化》2010年第32卷第4期图6系统等幅振荡过程成型工作。
在上模移动及合模过程中上下模内的温度受各种干扰的影响会变化。
此时PLCA/D模块接受的温度信号不等于给定值通过PID控制程序对偏差信号运算处理后经过D/A模块输出电压信号V1和V2分别控制加热系统中的调压模块工作从而调节加热器的输出功率实现温度的恒定控制。
3热压成型PLC控制系统软件设计控制系统程序设计采用基于个人计算机的CX-programmer编程软件适用于OMRONPLC的用户程序编制。
通过PC/PPI电缆与PLC编程口相连支持梯型图或指令编程。
它还可以使用统一的WINDOWS开发工具操作其强大的监控和调试功能使得程序开发简单。
其控制系统软件设计流程图如图5所示。
31PID控制算法的PLC实现用PLC实现上模温度和下模温度两个回路的PID闭环控制。
其PID控制程序设计:通过PLC的PID功能指令PID有三个操作数分别是输入数据字IW第一参数字P1输出数据字OW实现。
当它与模拟量输入-输出模块一起使用时不但能达到良好的PID控制效果而且有良好的经济性。
程序设计时必须给PID提供从P1开始的总共33个连续字P1—P132当执行条件为ON时PID指令根据P1P16中指定参数进行PID控制如表2所示。
32PID参数的确定系统调试时上下模的PID温度控制中必须要进行PID参数整定即确定最佳的比例度δ、积分时间TI、微分时间TD。
我们采用临界比例度法把调节器的积分时间TI置于最大微分时间TD置于零比例度置于最大值使系统投入闭环运行然后将调节器比例度δ由大逐步减小并反复调整得到如图6所示的系统等幅振荡过程。
此时调节器的比例度为r临界比例度δk振荡曲线的两个波峰之间的时间即为临界振荡周期TK根据这两个临界值可通过下表3中经验公式进行PID最佳参数计算。
4结束语采用PLC实现热压成型机的自动控制简化了控制系统硬件接线增强了控制系统的控制功能。
提高了系统的可靠性延长了系统维护周期和使用寿命。
其手动、自动两种工作方式的设计为调试和维修提供方便也为生产提供可靠保障。
其上下模温度控制采用了多个集成模块并运用PID控制指令达到了较高的控制精度。
实验表明系统可以很好的满足热压成型机工艺要求能够提高工作效率和其产品质量获得较好的经济效率。
参考文献1廖常初主编可编程序控制器编程方法与工程应用M重庆重庆大学出版社20012孙增圻等智能控制理论与技术M北京清华大学出版社200113赵文峰编控制系统设计及仿真M西安西安电子科技大学出版社20024OMRON公司CPM2A可编程序控制器编程手册M2003125邵裕森、戴先中主编过程控制工程M北京机械工业出版社200116黄俊王兆安编电力电子变流技术M北京机械工业出版社200427吴海燕PLC闭环控制系统PID控制器的实现JPLCFA200688徐瑾瑜PLC模拟量模块在发动机进气控制系统中的应用J自动化与仪器仪表20075作者简介吴宏岐1963男教授硕士生导师研究方向智能控制。
秦少军1962男副教授。
刘霞1974女副教授。
吕晓峰1986男硕士研究生。
图5PLC程序流程图上接第37页3张炜主编中文版VisualBasic60数据库开发应用教程M北京航空工业出版社200064韦建忠
VB网络编程技术中的Winsock使用J科技情报开发与经济17141961975高俊光赵崇辉施真芳基于
VB的Winsock控件的原理与应用J应用科技3131961976李廷文
VB控件高级编程M北京:人民邮电出版社20007赵松涛Oracle9i基础培训教程M北京人民邮电出版社2003128飞思科技产品研发中心Oracle9i基础与提高M北京北京电子工业出版社200319南京南瑞集团信息系统分公司SysKeeper-2000网络安全隔离装置正向型用户手册M南京南京南瑞集团信息系统分公司作者简介姚彬1982男陕西商南人硕士研究生主要研究方向智能控制火电厂热工自动化。
王进华1963男福建人博士生导师主要研究方向鲁棒控制、非线性控制。
康孝顺1973男福建泉州人主要从事火力发电厂的热工调节特别是MCS调节机炉协调优化对经典的PID调节预估算法等有丰富的实践经验。