电脑组拓展学习das plc上位机dhmi quickstart_第1页
电脑组拓展学习das plc上位机dhmi quickstart_第2页
电脑组拓展学习das plc上位机dhmi quickstart_第3页
电脑组拓展学习das plc上位机dhmi quickstart_第4页
电脑组拓展学习das plc上位机dhmi quickstart_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

背 DHMI调用ExternalActiveXDLLVB子程 Data DataServer与TwinCAT通 在DHMI上VB界面并与TwinCAT通 VB标准控件在DHMI上的使 2、按“5.2在DHMI上VB界面并与TwinCAT通讯”中的方法 ProcessServer中曲线变量的连 chanels的连 EventInfo的连 DHMI中使用的VB界面,DataServer数据服务器的使用和设置,以及与DHMI调用ExternalActiveXDLLVB子程文档,这里仅介绍如何使用ExternalActiveXDLLVB中所编制的用户界面Data DataServer是DHMI平台的数据管理和通讯的主要服务器。数据管理通讯层确据管理层还可以和其它附属设备的OPC/DDEDHMI能DataServer是DHMI人机界面设计的基础,所有的数据都连接到DataDataServer首先屏幕右下角的DHMItformsystem的图标,然后选ServersConfigurationDataServerDataserverDataServer的数据结构是采取和一般面向对象编程的程序数据结构相对应的,Type,统数据结构类(Temte),再由这些数据结构类来具体定义数据结构实体。面我们列出建立DataServer先建立数据变量类(Temtes–>Vars)右击Temtes–>Vars,点击“AddTemteVarType”来新加一个数据变量类数据变量类识别码(VarTypeKey),“DataType”,DataServerINT整型,16位LONG长型,32位STRING字符串型BOOL布尔型,8位(VarTypeDataServer控制参数(HMI传入PLC并数据HMI参数(在HMI中,不与PLC通讯过程变量+(既可从HMI写入PLCPLC读到HMI,过程变量+命令(既可从HMI写入PLCPLC读到HMI,但(DefaultValue每个变量类型还可添加附加属性(Attributes),这一步可以直接利用DHMI建立数据结构类集合(Temtes–>VarCollections)右击“Temtes–>VarCollections”选择“AddTemteVarCollection”,提供数据结构类集合的标志码“Var,假设为子数据结构类集合链结(TemteVarCollection指向“VarCollections”下的另一个数据结构类集合,这一结构就使数据结子数据结构类集合(SubTemteVar性都可以在这个备份结构中加以改变。这样一个数据结构类集合可以包结,只是在生成具体的实体时才从链结结构中继承过来(当然其附加属性也在实体生成时才继承过来,然后才能修改这些特性)构类集合(SubTemteVarCollection)的区别:子数据结构类集合会被来,然后才能修改这些特性。变量(TemteVarCollectionLink”,即添加新的子数据结构类集合链结,或若选择“AddSubTemteVarCollection”,即添加新的子数据结构类集合,(“Key“个已定义好的数据结构类集合(“LinkTo”Combo框将列出所有的可链结的数据若选择“AddTemteVar”,即增加变量(“Key“定义好的数据变量类(“LinkTo”Combo 选择“AddDacqServerDacqServer的标志码,以及Server名称。驱动程序名称“DriverName”):DataServer将根据驱动程序名称来找到对应的驱动程序,所以驱动程序名称应(PrgID,比如“ActiveXDriverSample.DrivrSample驱动程序类型(“DriverType”):DataServer提供了三种驱动程序类型:ActiveXDragonflySpecificActiveXWIN32_DLL表示可用传统的Win32DLL来编写驱动程序类型;ActiveXComponent表示可 来编写驱动程序类型DragonflySpecificActiveXServer表示可通过来实现Dragonfly接口函数来编写驱动程序类型;在后面来详细讲解这个问题。“TemLink“TemComboDacqServer操作;若“OK”按钮一按,则DataServer会自动把数据结构类集合的数据结构复制到该DacqServerDataserver设置页面,右键添加各种标准数据类型,如下图所示。并保存为Temte,以便今后方便使用。(BOOL右键VarlCollection,输入,如在新生成的Trainning_sample_1输入变量的Key,如bSystemRun,LinkTo添加数据实体,右键 选中AddDacq填入Dacq在此我们举例使用BeckhoffTwinCATPLC, 所以驱动名称(DriverName)填入: 在驱动类型中选择”DragonflySpecificActiveXTrainningLink中选择在VarCollection中刚才的变量结构类集保存所设置的文件输入的名称然后关闭DataServer页面重起DataDataServerTwinCAT版本的DHMIDataServer与TwinCAT通讯不上时可按下首先要DHMI与TwinCAT的通讯驱动,这个由拽亘弗莱提供。共分为两个文方面,而DasTcPlcAE.exe则用在和的通讯。打开windows在”运行”,同样输入:文件路径\DasTcPlcAE.exe/Regserver,点击确定即可成功 有关于如何在TwinCAT编程,这里不再赘述,请参看相关TwinCAT文档。打开上节内所设置的DataServerTag中输入”MAIN.bStart”中的变量位置一致运行TwinCAT选择Value属性并选间的checkbox, 量值,如“TRUE”点击下图中黑色箭头,可以看见value点击右下角”Write”TwinCATPLC当中。亦可点击”Read”按钮,变量值从PLC中返回DataServer服务器当中。DHMITwinCATDATASEVERDHMIDHMI与TwinCAT的PLC连接,需要经过PLC->DATASERVER->DHMI,在上节中,我们已经完成了DATASERVER与PLC的数据连接,这一节中,我们通过示例来演示如何将DATASERVER与DHMI连接。打开HMI如所有软件一样,我们需要输入用户名和登陆界面进行设计,点击左上角登陆。密码:DASAdmnDASFunction2这个功能组,因此在添加的时候功能组的名字会Function3,这个名字可以根据实际需要更改,在此,我们就默认此单击AddFunction3Function3Function3Function3 的空间,来显示PLC的一些信息。置位型按钮:双击按 Button,ButtonType和CheckButtonType设置如点触型按钮ButtonType和CheckButtonType单击需要连接变量的控件,右 >属性变量,再此,按钮连接的变量为bStart。剩下的控件都可以按照此方法来连接数据变量。连接好后,就可以显示PLC的变量的状态变化。至此,我们就完成了DHMI与PLC在DHMI上VB界面并与TwinCAT通我们也可以在VB上画出我们需要的界面添加到DHMI中;下面以一个简单的示例来说明如何完成VB的。首先,我们在DHMI的安装文件下找到ExtDLLTem将文件夹中的文件拷贝到VB 下,VB安装在哪个盘,就在该盘找到打开VB新建里会出现DAS的HMI动态库,打开它VB中已有的一些控件外,还有DAS的一些控件,我们用DAS的按钮直接与PLC通讯。在VB上拖拽两个名为DASHMIBtn的DAS控件,拖到form1中后,我们来右键我们需要把上图中红色圈内的路径拷贝到DASHMIBtn控件属性中DataVB的界面添加到DHMI中呢?选中生成DASHMIExternalDLL.dll后,弹出下面的你可以为自己的这个练习建个文件夹,用来保存生成的.dll文件,然后单击确下面我们打开打开后,输入用户名和登陆(上面已经讲过如何登陆单击FrameworkConfigure后,弹出下面的框单击单击ExternalDLLSetup上图中的Key我们可以随意添加,但是注意这个必须是唯一的,ExternalDLLName的组成必须是工程名称.类模块名称,如::2.名字 DHMI上ExternalDLLName就添入ExtDllTemple.cltDll单击Add后,我们就把在VB上设计的界面添加进来了;那如何将的VB界面在DHMI中显示出来呢?下面我们新建一个功能组。添加功能组的方法和上在为test在FormClass中就看到我们刚添加进来的VB页面的名字DLL-wq-Form1,VB的界面添加到DHMI中。至此,我们就完成了VB界面的全过程PLCScreenUpdateRate的值(100。按以下步骤进行修改 ScreenUpdateRate如果发现按钮没法按下,重新打开以下HMI那如果我们在VBForm呢?该怎么样添加到DHMI中呢?现在我们右键选择添加窗体,这样就添加了Form2,然后更改Form2CaptionControlBox设置为MaxButton设置为MinButton设置为将form1的也 到form2中,若不是从form1 “tmrUpdate,“tmrUpdate,我们可以在Form2下面我们选中Form1查看代码,将模板中的代码到Form2中,然后需要在类模块cl tDLL中添加一些代码,PrivateFunctionIExtDLLInterface_GetFormList()AsString()DimstrForms()AsStringReDimstrForms(0To0)strForms(0)="Form1"End2formReDimstrForms(0To1)strForms(0)="Form1"strForms(1)=formform。以下代码适form2.If(strFormKey="Form2")SetIExtDLLInterface_GetFormObject=NewForm2If(Notm_objNavFormColIsNothing)ThenEndIfEnd添加完后,生成DASHMIExternalDLL.dll,剩下的步骤和上面介绍的VB界面Alarm/Event DASAlarm库VAR_GLOBAL级别 级别初始化时根据这定义(*AlarmSeverityDefinition,0--Lowest,100--MAIN调用FBIFbTriggerAlarmHandler.M_ReportAlarm(bStateTRUE,objAlmsTestAlarm);AlarmHandler.M_ReportAlarm(bStateFALSE,objAlmsTestAlarm);级别定义sTestAlarm.sHMIAlm.dwSeverityMAIN初始化(初始化 级别及M_init 级别级别定义如右图所示IF(bInitFALSE)bInitTRUE;触发信号:bTrigger变量:sTestAlarmST_PLCAlarm(aAlmDesc'TestAlarmbInit一个空的信号:sEmptyMAIN调用功能空给空信号AlarmHandler(objAlmsEmpty);AlarmHandler.M_Send(objAlmsEmpty);打开PLCControl,添加 点击Resources:中的出现库所包含FB以下程序是1个的主程序PROGRAMMAIN ST_PLCAlarm:=(aAlmDesc:='TestAlarm bInit: : 初始化级bInit:=TRUE;IFbTrigger,: 级别M_init(*AlarmSeverityDefinition,0--Lowest,100-- :INT:=250; :INT:=500; :INT:= :INT:=PROGRAMMAIN 2触发信号 ST_PLCAlarm:=(aAlmDesc:='TestAlarm ST_PLCAlarm:=(aAlmDesc:='TestAlarm 2变量bInit: : 初始化:严重程bInit:=TRUE;IF IF 两个级别的初始化M_init中程序如下2、DHMI连 AddnewAEServer AddNewKey与ServerName可以根据需名,名称要唯一DriverProgID该项填 Addnew AddnewKeyAreaNameAddNew AddNewKey与AlarmName根据需名,名称要唯一AlarmPath连接PLCControl中设置的变量如PLCControl中定义的变量为sTestAlarm,则AlarmPath填MAIN.sTestAlarm.sHMIAlmTwinCAT中定义的变量为sTestAlarm1,则AlarmPath填MAIN.sTestAlarm1.sHMIAlmSource连接语言库Description设置画面时显示的信息3、添加画FormClass 令bTrigger=False,bTrigger1=False(消除,则DHMI上的画面上的相应的变为点击ClearInactiveAlarm可清除画面上VBDHMIVB标准控件的使用具体使用可由三部分组成:第一部分:VB界面的设置和程序编写。第二部分:PLCControlVBCommandButtonTextBoxDataServer中的12的值传到PLC中相应的VB1VB---DASHMIExternal3、VBDimm_objAutoCmdAsDASCTRLDATASERVERLib.DataVar连接VB(按钮)与DataServerDimm_objAutoTxt1AsDASCTRLDATASERVERLib.DataVar连接VB(数值1)与DataServerDimm_objAutoTxt2AsDASCTRLDATASERVERLib.DataVar连接VB(数值2)与DataServerDimbStartAsBoolean 按钮Start变量DimbInitOKAs 判断VBDataVerserDimaValueAs 1DimcValueAs 2双击按钮进入按钮的程序段,编写如下程序bStartNot aValue= 数值1:文本框Text1的cValue= 数值2:文本框Text2的IfbInitOKFalse) VBDataServerMsgBox("exit")ExitSubEndIf(Notm_objAutoCmdIsNothing)m_objAutoCmd.Value=CInt(bStart) Callm_objAutoCmd.WriteEndIf(Notm_objAutoTxt1IsNothing)m_objAutoTxt1.Value=CInt(aValue) 1m_objAutoTxt1Callm_objAutoTxt1.WriteEndIf(Notm_objAutoTxt2IsNothing)m_objAutoTxt2.Value=CInt(cValue) 2m_objAutoTxt2Callm_objAutoTxt2.WriteEndbInitOK=If(NotgObjDataServerIsNothing)DimbSucAs DimbSuc1AsBooleanDimbSuc2AsbInitOKbSucAndbSuc1And EndPLCControlPLCControlPROGRAMMAINbStart:BOOL;bLight:BOOL;5.3DHMIDataServer2、按“5.2在DHMI上VB界面并与TwinCAT通讯”中的方法添加画面,添加后如测试:运行PLCControl中的程序,在文本框输入数值,按下按钮,PLCbStart=True,ProcessServerchanels些重要的参数,具有重要的作用,DHMIPLC的程序来实现。 注射位置曲线 FB_CurveSampler;(*位置曲线 FB_CurveSampler;(*速度曲线 FB_CurveSampler;(*压力曲线2、在FB_InjCyl下的M_StatusUpdate实时数据并记录时 MAIN下的M_StatusUpdate 4DHMIProcessServerEditSampleServerNameServerNameSamplingDriverNameDasTcCurves.TcCurveSampler.1;AddCurveChanel ( 需要显示的变量在PLCplcBuffer Sampling Data floatSampling ProcessServer上位机的实现代码(以后添加EventInfoPLC : :MAIN下的M_StatusUpdatedwCurveTrigger:=CSETBIT32(dwCurveTrigger,0,gstMachineStatus.bCycActive);dwCurveTrigger:=CSETBIT32(dwCurveTrigger,1,gstMachineStatus.bSemiCycling);dwCurveTrigger:=CSETBIT32(dwCurveTrigger,2,gstMachineStatus.bCycEnd);dwCurveTrigger:=CSETBIT32(dwCurveTrigger,3,gClampSys.sStatus.bMoldClsAct);dwCurveTrigger:=CSETBIT32(dwCurveTrigger,4,gClampSys.sStatu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论