MCGS数据采集单片机数据传送的设计资料解读_第1页
MCGS数据采集单片机数据传送的设计资料解读_第2页
MCGS数据采集单片机数据传送的设计资料解读_第3页
MCGS数据采集单片机数据传送的设计资料解读_第4页
MCGS数据采集单片机数据传送的设计资料解读_第5页
已阅读5页,还剩61页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、目录摘要 4引言 41、信达广场工程设计介绍 51.1 工程数据采集显示全过程 51.2 本设计数据采集传输过程 52、MCGS既述 52.1 VB程序目 62.2 VB 程序流程图 62.3 单片机串行通信概述 73、本设计有关原理图及主要芯片 93.1 上位机原理图和PCB板图93.2 上位机汇编设计程序和流程图 113.3 LM7805 133.4 MAX202 133.5 74ALS244 143.6 P89LPC93 15154、调试过程中遇到的问题及解决5、致谢词 166、参考文献 177、附录 237.1附录一:传送数据给下位机的程序(模块一) 187.2 附录二:从服务器中采集

2、数据程序(类模块程序) 217.3附录三:测试及初始化设备程序267.3.1 窗体一 267.3.2 窗体二 297.3.3 窗体三 347.3.4 窗体四 377.3.5程序模块427.4 附录四:上位机汇编程序 467.5 附录五:英文资料及中文翻译 55设计标题 摘要 在信达广场大楼建设工程中, 由于楼房建设规模庞大, 为实现楼房 的有效管理与监控, 这就要求设计一个楼房信息的监控与显示系统。 该 设计通过0PO议和MCGS巴父设备和服务器相连,采集楼房的温度等 数据信息。再通过调用MCG系统中的程序模块,使用MCGS勺自定义设 备传输数据。 然后,父设备把数据传给子设备。 子设备和父设

3、备是通过 RS-232 相连,与子设备进行串行数据通信。子设备根据接收到的数据 通过模拟显示屏显示, 实现楼房的有效监控, 最终实现楼房数据采集的 自动化。 关键词 MCGS数据采集、单片机、串行通信、RS-232AbstractIn the project of XinDa Square, because the buildings scale is huge, for valid management that realizes building with monitor and control, this will need to design a system for the cont

4、rol and manifestation of the buildings information. Through the 0PC agreement and the MCGS, the father equipments and the server are connected with each other, so it can realizes data acquisition of the building. The design use MCGS procedure in the system mold piece and definition equipments delive

5、rs the data. Then, the father equipments pass the data to subequipments. The Sub- equipments and the father equipments are connected by the RS-232 with each other .It can realizes the serial data communication between the father equipments and sub-equipments. According to the data received, the sube

6、quipments indicate the data on the screen. That realizes the building supervises and control effectively. Finally, the system realizes the automation of the building data collect. key wordsMCGS 、 data acquisition 、 signal Chip Microcomputer 、Serial Communication 、 RS-232 1 引言随着电子技术的迅猛发展,单片机技术不断成熟,并已

7、广泛应用于军事、 工业、通讯、家用电器、智能玩具、智能仪表等领域。单片机的使用使产品功 能、精度和质量大幅度提高,而电路设计更简单、故障率低、可靠性高而且成 本低廉。在当今的单片机运用系统中,由于单片机具有处理数据快优点,在很 多的运用系统中,只用到一片单片机来处理各种各样的数据。 在生产过程和日 常生活中各种信号的采集、处理和输出显示以成为最重要且最普遍的项目技术 之一。随着科学技术的进步,人们住房条件的改善,楼宇规模不断扩大,楼层 监控系统部分的设计至关重要,它关系到整个楼宇的运行状况乃至安全。1信达广场工程设计介绍1. 1工程数据采集显示全过程信达广场的模拟数字监控系统,采用 OPC协议

8、与服务器相连,将各楼 层数据信息从服务器中取出后,利用 MCGS系统发送上位机。上位机将数 据打包后按地址传送给下位机。下位机通过驱动红、绿灯和数码管将数据所 表示的信息在显示屏上显示出来。2. 2本设计数据采集传输过程首先对传输设备进行初始化,例如设置串口线状态,以及传输设备属性。 数据由MCG通过OPC协议从服务器中取出后,先将数据打包,再传给上位机, MCG每次发50个数据,在一秒内判断接收是否正确,如不正确则重发,上位 机收到数据后再将数据以包的形式传给下位机,每包中包含一个地址,四个数 据。2. MCGS概述计算机技术和网络技术的飞速发展,为工业自动化开辟了广阔的发展空 间,用户可以

9、方便快捷地组建优质高效的监控系统, 并且通过采用远程监控及 诊断等先进技术,使系统更加安全可靠,在这方面, MCGS 工控组态软件提 供强有力的软件支持。 MCGS 全中文工业自动化控制组态软件(以下简称 MCGS工控组态软件或 MCGS)为用户建立全新的过程测控系统提供了一整 套解决方案。 MCGS 工控组态软件是一套 32 位工控组态软件,可稳定运行于 Windows95/98/NT 操作系统,集动画显示、流程控制、数据采集、设备控制与 输出、网络数据传输、双机热备、工程报表、数据与曲线等诸多强大功能于一 身,并支持国内外众多数据采集与输出设备,广泛应用于石油、电力、化工、 钢铁、矿山、冶

10、金、机械、纺织、航天、建筑、材料、制冷、交通、通讯、食 品、制造与加工业、水处理、环保、智能楼宇、实验室等多种工程领域。 MCGSWW 服务器版本, 集工业现场的集散控制和各类历史、 实时数据及相关 曲线的 WWW 发布于一体,可以解决整个企业的 Internet/Intranet 方案,随时 随地掌握工业现场运营状态,了解所需的各项信息,大幅度提高工作效率。2.1 VB 程序目的采集数据程序(附录一 1.2 )程序目的:将数据通过OPC协议从服务器中采集出来后,再将其打包传送 给上位机。对于设备的初始化和各属性参量也在该程序中设置。传送数据程序(附录一 1.1 )程序目的: 1、定义设备名称

11、。 2、将读数据的命令通过串口发送出去,接 收发回来的数据, 再将数据包发给下位机, 并判断下位机是否正确接收, 否则 从发。发送时对数据并对其采用和校验。设置数据采集的界面程序(附录二)程序目的:设置MCG的参数界面,可在该界面中设置 MCG的各种通信参 数,调用MCG的帮助系统。整个程序的工程文件最后生成.dll文件嵌入MCG工控组太软件系统的自 定义设备中 , 调用该设备对服务器进行数据采集 , 再将采集到的数据与上位机 进行串行通信。282.2程序流程图2.3 单片机串行通信概述计算机的数据传送有两种方式:并行数据传送和串行数据传送。并行数据 传送的特点是:各数据位同时传送,传送速度快

12、、效率高。但并行数据传送有 多少数据位就需多少根数据线,传送成本高。串行数据传送的特点是:数据传 送按位顺序进行,最少只需一根传输线即可完成,成本低但速度慢。我们采用 串行通信方式。在串行通信中,格式位的发送和接收分别由发送时钟脉冲和接 收时钟脉冲进行定时控制。因为计算机中使用的数据都是并行数据, 所以串行 通信需要进行数据转换。数据转换的实现由通用异步接收发送器(UART )完成。通用异步串行接收器和转发器(UART)是一个高度灵活的串行通讯设备。 主要特点为:1) 全双工操作(独立的串行接收和发送寄存器)2)高精度的波特率发生器3) 支持5, 6, 7, 8,或9个数据位和1个或2个停止位

13、4)帧错误检测5)多处理器通讯模式涉及的控制寄存器:1) 串行控制寄存器 SCON位地址9FH9EH9DH9CH9BH9AH99H98H位符号SM0SM1SM2RENTB8RB8TIRISM0、SM仁01 串行口工作方式选择位; SM2 多机通信控制位; REN允许接收位;TB8 发送数据位 8; RB8接收数据位 8; TI 发 送中断标志;RI接收中断标志电源控制寄存器PCON位序B7B6B5B4B3B2B1B0位符号SMOD/GF1GF0PDID在我们的使用中,该寄存器中除最高位之外,其他位都没有定义。最高位(SMOD)是串行口波特率的倍增位。在该系统中,为减少误差我们采用了波特率倍增中

14、断允许寄存器IE位 地 址0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8H位 符 号EA/ESET1EX1ET0EX0其中EA 中断允许总控制位;ES 串行中断允许位定时器的工作方式控制寄存器 TMOD位序B7B6B5B4B3B2B1B0位符号GATEC 7TM1M0GATEC 7TM1M0高半字节定义定时器/计数器1,低半字节定义定时器/计数器0。GATE门 控位;C/ T 定时方式或计数方式选择位; Ml M0工作方式选择位。程序设计过程中,我们设定初始值为定时器 1工作方式2,中断总允许, 禁止串行中断,波特率倍频,波特率设定为 9600bps,串行工作方式1并允许 通信

15、。从上位机发送数据给下位机时,采用的是7个口 COM?时发送,采用串行 通信。7个口每个口有16个栈。3. 本设计有关原理图及主要芯片3.1上位机原理图和PCB板图上位机电路板作用:通过RS-232接口与PC机进行数据通信接收数 据;与下位机进行串行数据通信,把数据传送给 下位机显示。上位机原理图J2J19VU17805 1C1方10由C31044 二迂TDB9|gnd48 R1007R4100U3871314 C6 R2INR2OT2OUT2 R1INRK T1OUT11uF 2C2-C2+V+VCD1D2 +3/ViC4GJR6C5104DNC2l 100UFI042hTDBKhJ2Kr3

16、 -rd10 -OUT R2100CGNDG+3/U26尸1uFCT十 CMAX2021uF1uF5KP21 2P2213P2314P2415P2516P2&7VCC26 25 24 231110P0XDP1XDPSFSTP2.P2.P2.P2.P2.P2.P1AD10P2AD11P3ID12P0D13INT3/INT4/PPPP32201912542827 ICG271 P20 IC00H+3/2帀 VDD7 VSS7!1R2GND 2O31K12MP87LPC9354VCCU4上位机PCB图3.2上位机汇编程序流程图:上位机汇编程序(附录三)目的:从 MCG中接收数据,再把数据打包传输给

17、指定的设备和从站。在数据处理完后,通知主设备接收成功。3.3 UA7805C 介绍:J2C1100uFC3仙U17805VCC D1+5VDNGC2100uFf-HC4104D2+3.3V-C5*1049V2JJi该器件为一电压转换器件,将九伏电压变为五伏。输入电压为7到25伏,输出为4.8到5.2V该芯片在电路中的作用是提高电路的可靠性,避免由于外界电网电压不稳导致输入电压不稳而对单片机产生损坏。3.4 MAX202 介绍:C5i; inPui上 1S賞辛7nucMOS iNPvrsC2+ -+KJVTO-10VC2- VOLTAGE IJVERIEHC1+ mSVTO . idVG VOL

18、TA&EDOUBLERnuchios * fluwsS2rgvt220MAX232.W32AI 工山 卅OuN 讥 GT1R1R1T1T2 S3回回可JDlLrJ &N乃时lljl这是一个+5v供电、多通道RS-232驱动器/接受器。在 max202内部可将+5v转换为+10v (空载),为RS-232驱动器提供工作电压。第一个转换器利用 电容C1将+5V输入加倍,得到(V+输出端)C3上的+10V;第二个转换器利用 电容C2将+10V转换为(V-输出端)C4上的-10V。可以从+10V(V+)和-10V (V-)输出端获取少量的电源功率,为外部电路供电3.5 74ALS244 介绍:U474

19、ALS244该芯片内部含有2个4位的三太缓冲器,它在电路中的功能是进行单片机的I/O扩展,解决输出数据锁存,并达到当输入设备被选通时, 使数据源能与数据总线直接连通;而当输入设备处于非选通状态时,则把数据 源与数据总线隔离,缓冲器输出呈高阻抗状态。3.6 P89LPC93:IX B Pl dLKQUTTAL2T3 0R4TL PL 4-阖冋2AV2-1EZLe回a2110?01U 日 L5?CTALLP3.l聞巩$SDA/TSTQ pi ?P0A C1NIR KUHP0.MJN1A/KBI4P0.5CMPREFXBI5VDDP0 6A7MPI/KR16PO.7T1 fKBL7FIX C 2M

20、? I *.l 1 Il单片机P89LPC9技收MCG传来的数据,内存为512字节4、调试过程中遇到的问题及解决方案在调试上位机与下位机进行串行数据通信时,开始忽略了波特率的设定, 上位机与下位机的波特率不一致, 导致通信不能进行,修改波特率后正常,但 误差较大。后来,通过倍频的方法减小了误差。当把数据传送给下位机时,下 位机P0口数据不能显示,经查阅资料发现下位机P0口无带载能力,我们最后 给P0 口加上拉电阻解决了这个问题。5、致谢词为期两个月的毕业设计就要结束了,这将是我永生难忘的宝贵经历。本 次毕业设计期间我翻阅了大量相关的文献资料和书籍,不仅加强了我的专业 知识水平,更开拓了我的视野

21、。我做的毕业设计是信达广场数据采集工程的硬件及软件设计。在宋老师 的耐心指导下一些同学的帮助下,我们首先设计方案,经过多次比较后,选 择了以上所述系统,这次工作中涉及很多电子集成电路、PCB板制作和单片机 方面的知识以及电路的实际焊接。为此,我查阅了很多相关资料,使我对专 业知识有了更清楚的认识,通过实际操作锻炼了我的动手能力。期间,与同 伴们的共同合作也是一笔财富,提高了我们的合作精神。本次毕业设计使我 受益非浅。最后,再次感谢宋老师的悉心指导以及在此期间同学们的大力帮助。由 于时间有限,如有错误,望予以原谅。设计者:熊恒2005-6-10参考文献1、朱大奇等 . 单片机原理串口及应用 .

22、南京:南京大学出版社, 20032、宗光华等 . 多单片机系统应用技术 . 北京:国防工业大学出版社, 20033、张伟等 . 单片机原理及应用 . 北京. :机械工业出版社, 20024、李广第等 . 单片机基础 . 北京:北京航空航天大学出版社, 20015 、张树兵等 . Visual Basic 6.0 程序设计教程 . 北京:清华大学出版社, 20026 、夏路易等 . 电路原理图与电路板设计教程 . 北京:北京希望电子出版 社,20037 、何立民等 . 单片机应用技术选编 . 北京:北京航空航天大学出版社, 19988 、康华光等 . 电子技术基础 . 北京:高等教育出版社, 2

23、002 9、Intel: Microcontroller Handbook,1988 10、M.D.Beer: Microcomputer Interfacing,19857、附录7.1 附录一:传送数据给下位机的程序( 模块一)Option ExplicitPublic Declare Function WinHelp Lib user32 Alias WinHelpA (ByValhwnd As Long, ByVal lpHelpFile As String, ByVal wCommanAds Long, ByVal dwData As Long) As LongPublic Decla

24、re Sub Sleep Lib kernel32 (ByVal dwMilliseconds As Long)Public Declare Function GetTickCount Lib kernel32 () As Long*标识不同PLC继电器区的符号Public Const gc_DeviceName = 数字显示屏 Public Const gc_DeviceHelpName = Adam4050.hlp * 设备驱动中常用的常量定义函数调用成功函数调用失败Public Const mc_OperateSuccess = 0Public Const mc_OperateFail

25、= -1Public Function objCommParent As String) As LongI*FetchDataFormComm(ByVal lngCheckFlag As Long,Object, strCommOrder As String,strReturnData As函数目的 :将读数据的命令通过串口发送出去,接收PLC发回来的数据I*参数意义 : objCommParent - bytCommOrder() - strReturnData - 函数返回 : 0 -成功;lngReadFlag -1 -读还是写命令, 0 串口父设备对象 下发的命令 返回命令失败是读;

26、1 是写循环索引变量 实际读回来的数据函数返回 发送和接收数据缓Dim lngIndexAs LongDim lngReadLenAs Long的字节个数Dim lngReturnAs LongDim bytOutput(0 To 2047) As Byte 冲区,* 加校验Call AddSum(strCommOrder, 0, lngCheckFlag)For lngIndex = 1 To Len(strCommOrder) bytOutput(lngIndex - 1) = (Mid(strCommOrder, lngIndex, 1) bytOutput(lngIndex - 1)

27、= Asc(Mid(strCommOrder, lngIndex, 1)Next lngIndexDebug.Print 下发的命令是 : + strCommOrder* 按是读还是写,协议格式,通信返回值不同lngReadLen = objCommPoutindat(bytOutput(),Len(strCommOrder), 0, 0, 13, 1000)* 如果没有读到数据就出错退出If lngReadLen = 0 Then GoTo PROC_ERR* 校验处理strReturnData = For lngIndex = 0 To lngReadLen - 1strReturnDat

28、a = strReturnData + Chr(bytOutput(lngIndex)Next lngIndexlngReturn = AddSum(strReturnData, 1, lngCheckFlag)If lngReturn 0 Then GoTo PROC_ERRDebug.Print 读回来的数据是 : + strReturnDataPROC_EXIT:FetchDataFormComm = mc_OperateSuccessExit FunctionPROC_ERR:FetchDataFormComm = mc_OperateFailEnd FunctionPublic Fu

29、nction AddSum(strCommOrder As String, lngCheckDir As Long, lngCheckFlag As Long) As Long*函数目的: 加校验*参数意义: strSend - 命令字符串* lngStartPos - 校验开始位置* EnlngEndPos - 校验结束位置* 函数返回: 0 - 成功; -1 - 失败Dim lngIndexAs Long*循环索引变量Dim lngSumAs Long*校验和Select Case lngCheckDirCase 0If lngCheckFlag = 1 Then lngSum = 0Fo

30、r lngIndex = 1 To Len(strCommOrder)2)lngSum = lngSum + Asc(Mid(strCommOrder, lngIndex, 1) Next lngIndex lngSum = lngSum Mod 256 strCommOrder= strCommOrder + Right(00 + Hex(lngSum),End If strCommOrder = strCommOrder + Chr(13)Case 1If lngCheckFlag = 1 Then lngSum = 0For lngIndex = 1 To Len(strCommOrde

31、r) - 3lngSum = lngSum + Asc(Mid(strCommOrder, lngIndex, 1)Next lngIndex lngSum = lngSum Mod 256 If Mid(strCommOrder, lngIndex, 2) Right(00Hex(lngSum), 2) Then GoTo PROC_ERREnd IfCase Else: GoTo PROC_ERREnd SelectAddSum = mc_OperateSuccessExit FunctionPROC_ERR:AddSum = mc_OperateFailEnd Function7.2 附

32、录二:从服务器中采集数据程序(类模块程序)Option ExplicitPublic Enum dCheckSumd 无校验 = 0d 求校验 = 1End Enum设备地址是否求校验 串口父设备对象Public g_lngDeviceAddress As LongDim m_lngCheckFlag As LongDim m_objCommParent As ObjectPublic Function InitDevRun(objMcgsSave As Object, objMcgsData As Object) As Long* 函数目的 : MCGS 运行环境启动时调用接口一次,对设备构

33、件进行初始化工作* 参数意义 : objMcgsSave - MCGS存盘数据库对象* objMcgsData - MCGS 实时数据库对象函数返回 : InitDevRun = 0 -设备初始化成功InitDevRun = 1 -设备初始化失败On Error Resume Next* 取串口父设备对象Set m_objCommParent = objMcgsSave.ParentDevIf Err ThenSet m_objCommParent = objMcgsData.ParentDevEnd If*通过MCG游盘数据对象获取 PLC通道的各种信息End FunctionPublic

34、Function RunDevCommand(objMcgsData As Object, ByVal strCommandString As String) As Long1*函数目的 : MCGS 运行环境中,对设备执行指定的设备命令时调用接口一次参数意义 : objMcgsData - MCGS实时数据库对象strCommandString -设备命令字符串函数返回 : RunDevCommand = 0- 命令正确执行RunDevCommand = 2 -无效的设备命令1*本身被本设备的设备命令格式如下:Public Function CollectDevDat(alngDataFla

35、g As Variant, asngDataValue As Variant, astrDataString As Variant) As Long函数目的 : MCGS 运行环境中,根据指定的采集周期,定时调用本接口,对设备进行数据采集工作 参数意义 : alngDataFlag 般不用*asngDataValue - Single型数组,设备对应的数值型通道的数值,当通道为字符型时,表示通道的值在 astrDataString 数组中的位置*astrDataString - String型数组,设备对应的字符型通道的值PubIic Function GetDevHeIp() As Long

36、*函数目的:MCGS 组态环境中调用,在设备属性设置窗口的基本属性页中,按“在线帮助”行,调用本接口显示设备构件在线帮助*参数意义: 无参数*函数返回: 无返回值WinHeIp ByVaI 0, App.Path + + gc_DeviceHeIpName, 1, ByVaI 0DoHeIp &H20000B, McgsHeIpEnd Function 读取设备通道数据的类型和设备通道类型说明Public Function GetChlType(alngChlDataType As Variant, astrChlExplain As Variant) As Long* 函数目的 : MCGS

37、 运行环境中调用, Mcgs 调用本接口读取设备各通道的数据类 型和通道内容的文字描述,* 在设备属性设置窗口的通道连接属性页中所显示的内容均来自本 接口* 参数意义 : alngChlDataType - Long型数组,存储各通道的数据类型* astrChlExplain - String 型数组,存储各通道内容的文字描述* 函数返回 : GetChlType = 0 - 调用成功* GetChlType 0 - 调用失败Public Property Get DevStyle() As Long* 函数目的 : 标明设备的种类 0- 独立设备 =1 和串口父设备对应的子设备 DevSty

38、le = 1End Property Read(strRegister = strData) : 把 strRegister 标识的 PLC 继电器或寄存器 中的值,送入 strData 标识的 Mcgs 数据对象中* Write(strRegister = strData) : 把 strData 标识的 Mcgs 数据对象的值或常量 值,写入到strRegister 标识的PLC继电器或寄存器中PROC_EXIT:* 设备命令无效RunDevCommand = 2- Long 型数组,设备对应通道的数据是否需要处理,* 函数返回 : CollectDevDat = 0 - 行处理;*Col

39、lectDevDat = 1 -进行处理*CollectDevDat = 2 -*CollectDevDat =-1 -*CollectDevDat =-100 -使用 0 通道的值来表示故障的具体信息采集数据有效,但只对返回的输入数据进采集数据有效,但对返回的输入输出数据都 采集数据无效,不须进行处理。设备故障设备故障 ,但把第 0 通道的值返回,一般End FunctionDim strCommOrder As StringDim strReturnData As StringDim lngReturn As LongDim lngIndex As LongDim lngDoAs Long

40、strCommOrder = $ + Right(00 + Hex(g_lngDeviceAddress), 2) + 6lngReturn= FetchDataFormComm(m_lngCheckFlag,m_objCommParent,strCommOrder, strReturnData)If lngReturn 0 Then GoTo PROC_EXITFor lngIndex = 0 To 6 asngDataValue(lngIndex + 1) = (Val(&h + Mid$(strReturnData, 4, 2) And (2 A Ingindex) (2 A Ingin

41、dex) Next lngIndexstrCommOrder = # + Right(00 + Hex(g_IngDeviceAddress), 2) + 00For Ingindex = 1 To 50 99 IngDo = IngDo Or (asngDataVaIue(Ingindex) * (2 A Ingindex) + 8strCommOrder = strCommOrder + Right(00 + Hex(asngDataVaIue(Ingindex),2) 以 8 位二进制传输Next IngindexstrCommOrder = strCommOrder + Right(0

42、0 + Hex(IngDo), 2)IngReturn= FetchDataFormComm(m_IngCheckFIag, m_objCommParent,strCommOrder, strReturnData)if IngReturn 0 Then GoTo PROC_EXiT asngDataVaIue(0) = 0CoIIectDevDat = 0Exit FunctionPROC_EXiT:asngDataVaIue(0) = 1CoIIectDevDat = -100End FunctionPubIic Function GetDevName() As String* 函数目的 :

43、 MCGS 运行环境中调用, 供 Mcgs 读取设备的类型名称, 在设备根据 箱中显示*参数意义 :无参数*函数返回 :设备的类型名称GetDevName = gc_DeviceNameEnd FunctionPublic Function SetDevPage(objMcgsSave As Object) As Long* 函数目的 : MCGS 组态环境中调用,设置设备构件的内部属性。在设备属性设 置窗口的基本属性页中,按“内部属性”行,调用本接口* 参数意义 : objMcgsSave - MCGS存盘数据库对象* 函数返回 : = 0 -输入的内部属性设置有效,要保存End Funct

44、ionPublic Function InitNewDev(objMcgsSave As Object) As Long1*函数目的: MCGS 组态环境中调用,当把设备从设备工具箱中选取到设备窗口中时,调用本接口,设置设备的缺省属性值参数意义: objMcgsSave -MCGS存盘数据库对象函数返回: InitNewDev = 0 -设备初始化成功1*InitNewDev 0 -设备初始化失败g_lngDeviceAddress = 1End FunctionPublic Function InitDevSet(objMcgsSave As Object, objMcgsData As O

45、bject) As Long * 函数目的 : MCGS 运行环境中调用,当用户打开属性页调用本接口,进行必要 的初始化工作参数意义 : objMcgsSave - MCGS存盘数据库对象实时数据库对象设备初始化成功设备初始化失败objMcgsData - MCGS 函数返回 : InitDevSet=0 -InitDevSet=-1 -End Function* 数据类型标识 = 1 开关型数据*= 2数值型数据*= 3字符型数据* 当通道的数据类型为正数时,表示该通道的作用是把设备中读取的数据输入到Mcgs 中* 当通道的数据类型为负数时,表示该通道的作用是 Mcgs 中的数据送到设备来,

46、 供设备处理使用Dim lngIndexAs LongDim strChannelString As String For lngIndex = 1 To 50 7 alngChlDataType(lngIndex) = 1 astrChlExplain(lngIndex) = DI + Format(lngIndex - 1) Next lngIndexFor lngIndex = 1 To 50 99 To 15alngChlDataType(lngIndex) = -1astrChlExplain(lngIndex) = DO + Format(lngIndex - 0) 8)Next

47、lngIndexalngChlDataType(0) = 1astrChlExplain(0) = 通讯状态标志 End Function * 以下为设备构件的属性 , 每个设备构件必须有的四个只读属性_Public Property Get DevType() As Long* 函数目的 : 标明设备的类型 0- 父设备 =1 子设备 DevType = 1End PropertyPublic Property Get DevChannel() As Long * 函数目的 : 标明设备的通道个数 DevChannel = 51 100 *16End PropertyPublic Prope

48、rty Get DevIONumber() As Long* 函数目的 : 标明设备的所占用系统 IO 的个数DevIONumber = 0End PropertyPublic Property Get CheckSum() As dCheckSumCheckSum = m_lngCheckFlagEnd PropertyPublic Property Let CheckSum(ByVal vNewValue As dCheckSum) m_lngCheckFlag = vNewValueEnd Property7.3 附录三:测试及初始化设备程序7.3.1 窗体一Option Explici

49、tDim m_objCommParent As ObjectDim m_objMcgsDataAs ObjectDim m_objMcgsSaveAs ObjectDim m_objDevObjAs ObjectDim m_lngDevFlagAs LongDim m_lngParFlagAs LongPrivate Sub cmdSetParentPro_Click()Dim frmPage As frmTestParentIf m_lngParFlag 1 Then m_lngParFlag = 1 QueryObj m_objMcgsData, m_objCommParent, g_au

50、dtParObjPro(), g_audtParEnumPro() m_objCommParent.InitNewDev m_objMcgsSave GetObjProperty m_objMcgsData, m_objCommParent, g_audtParObjPro()End IfSet frmPage = New frmTestParentSet frmPage.g_objMcgsData = m_objMcgsDataSet frmPage.g_objDevObj = m_objCommParentSet frmPage.g_objMcgsSave = m_objMcgsSave

51、frmPage.Show 1SetObjProperty m_objMcgsData, m_objCommParent, g_audtParObjPro()GetObjProperty m_objMcgsData, m_objCommParent, g_audtParObjPro() End SubPrivate Sub cmdSetDevPro_Click()On Error Resume NextSet m_objDevObj = New clsDevObjIf m_lngDevFlag 1 Then m_lngDevFlag = 1QueryObj m_objMcgsData, m_ob

52、jDevObj, g_audtDevObjPro(), g_audtDevEnumPro()m_objDevObj.InitNewDev m_objMcgsSave m_objDevObj.InitDevSet m_objMcgsSave, m_objMcgsDataGetObjProperty m_objMcgsData, m_objDevObj, g_audtDevObjPro() End IftxtDevTypeName = m_objDevObj.GetDevName()Dim frmPage As frmTestSetSet frmPage = New frmTestSetSet frmPage.g_objMcgsData = m_objMcgsDataSet frmPage.g_objDevObj = m_objDevObjSet frmPage.g_objMcgsSave = m_objMcgsSave frmPage.Show 1SetObjProperty m_objMcgsData, m_objDevObj, g_audtDevObjPro() GetObjProperty m_objMcgsData, m_objDevObj, g_audtD

温馨提示

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

最新文档

评论

0/150

提交评论