实时数据库与驱动程序开发接口-解析

合集下载

工业组态

工业组态

1.(一)工业组态软件的主要特点:延续性和可扩充性,封装性,通用性。

2.工业组态软件的结构组成:工程管理器,开发系统,运行系统,实时数据库(Db),Io驱动程序,web服务器。

3.力控的扩展组件有:通用数据库接口,网络通信程序,无线通信程序,通信协议转发组件,实时数据库编程接口。

4.(二)工业组态控制项目的总要求:可分为5个部分,即控制现场工艺,执行部件及控制点数,控制设备,现场模拟和监控以及数据库。

5.组态工程开发的一半过程:首先建立数据库点参数,对点参数进行数据连接,其次建立窗口监控画面,对监控画面里的各种图元对象建立动画连接,然后编制脚本程序,进行分析曲线,报警,报表制作后便完成了一个简单的组态开发过程。

6.(三)力控中的变量类别及相应的作用域:窗口中间变量,作用域仅限于力控应用程序的一个窗口;中间变量:作用域为整个应用程序,不限于单个窗口;间接变量:作为其他变量的指针;数据可变量:作用域为数据库;系统变量:整个系统。

7.间接变量的一半作用:作为其他变量的指针。

8.数据库变量的特点:数据库变量域数据库Db中的点参数进行对应,完成数据交互,数据库变量是人机界面与实时数据库联系的桥梁,其中的数据库变量不但可以访问本地数据库,话可以访问远程数据库,构成分布式结构。

9.系统变量的特点:都以美元符号“”开头。

10.变量的数据类型有:实型,整型,离散型,字符型。

11.定义变量:变量---数据库变量---变量管理---添加变量。

12.删除变量:变量管理---删除变量。

13.引用变量:14.(四)基本概念:点是一组数据的集合。

节点是树形结构的组织单元。

15.点的类型:模拟IO的,数字IO点,累计点,控制点,运算点等。

16.点的参数:是含有一个值得数据项的名称,例如PV,NAME,DESC等。

17.点的数据连接类型:IO设备连接,网络数据库,内部连接。

18.数据库的点如何访问:采用”节点路径I点名. 参数名”的形式访问19.点的创建过程:可以选择DbManager菜单命令“点”---“新建”。

驱动程序基础知识单选题100道及答案解析

驱动程序基础知识单选题100道及答案解析

驱动程序基础知识单选题100道及答案解析1. 驱动程序的主要作用是()A. 优化硬件性能B. 连接硬件和操作系统C. 提供用户界面D. 管理文件系统答案:B解析:驱动程序主要负责连接硬件设备和操作系统,使得操作系统能够识别和控制硬件。

2. 以下哪种不是常见的驱动程序类型()A. 显卡驱动B. 音频驱动C. 办公软件驱动D. 网卡驱动答案:C解析:办公软件不属于硬件,不需要专门的驱动程序。

3. 安装新硬件后,首先要安装的是()A. 应用程序B. 驱动程序C. 系统补丁D. 杀毒软件答案:B解析:为了让新硬件正常工作,首先要安装对应的驱动程序。

4. 驱动程序通常由()提供A. 硬件制造商B. 操作系统开发商C. 第三方软件公司D. 以上都有可能答案:D解析:硬件制造商、操作系统开发商和第三方软件公司都可能提供驱动程序。

5. 驱动程序版本更新的主要目的是()A. 增加新功能B. 修复漏洞C. 提高兼容性D. 以上都是答案:D解析:驱动程序版本更新可以实现增加新功能、修复漏洞、提高兼容性等目的。

6. 不正确安装驱动程序可能导致()A. 硬件无法正常工作B. 系统崩溃C. 数据丢失D. 以上都有可能答案:D解析:不正确安装驱动程序可能引发各种问题,包括硬件无法正常工作、系统崩溃、数据丢失等。

7. 以下哪种方式获取驱动程序最可靠()A. 从随机附带的光盘获取B. 从硬件制造商官网获取C. 从第三方下载网站获取D. 使用驱动精灵等工具自动获取答案:B解析:从硬件制造商官网获取的驱动程序通常是经过严格测试和适配的,最为可靠。

8. 对于Windows 操作系统,驱动程序文件的扩展名通常是()A..exeB..dllC..sysD..inf答案:C解析:.sys 是Windows 操作系统中常见的驱动程序文件扩展名。

9. 在Linux 系统中,驱动程序通常被编译进()A. 内核B. 应用程序C. 库文件D. 脚本答案:A解析:在Linux 系统中,很多驱动程序会被编译进内核。

Windows 驱动程序开发指导说明书

Windows 驱动程序开发指导说明书

课程内容驱动基本概念介绍驱动核心代码分析WDM和WDF介绍Windows 10通用驱动平台驱动程序是一个软件模块,可以使操作系统和硬件设备进行交互驱动程序是操作系统的一个扩展驱动程序一般是由硬件的设计者或厂商进行编写Microsoft已经为符合公共设计规范的硬件设备提供了内置的驱动程序可执行文件,扩展名是.exe入口函数是Main()Main()函数完成大部分工作应用程序完成工作后返回,并释放内存空间在用户态运行可执行文件,扩展名是.sys入口函数是DriverEntry()DriverEntry()不会做很多工作,只是初始化驱动驱动其他部分会注册很多回调函数,会被系统的不同模块调用驱动不会返回,会一直存在直至被显示的释放在内核态或用户态运行Driver StacksPDO位于驱动栈的最底层,和总线驱动相关联当总线驱动被加载时,它会枚举所有挂载在总线上面的设备并请求设备所需要的资源每个设备都有自己对应的PDOPnP管理器会确定每个设备的驱动并在设备的PDO 之上构建适当的设备栈设备栈的核心部分,FDO和设备功能驱动相关联设备功能驱动完成Windows和设备交互的核心功能对上向应用程序和服务提供上层接口对下为设备或其他驱动提供数据交换的接口一个设备栈可以包含多个FiDO,可以在FDO之上或之下每个FiDO和一个过滤驱动相关联,FiDO是可选的通常的目的是修改一些在设备栈中传输的I/O请求,例如可以加密和解密读写请求当一个新设备被插入到系统后,系统总线驱动会向PnP管理器报告这个新设备PnP管理器通过总线驱动查询这个设备的更多信息,比如设备ID和设备所需要的资源PnP管理器利用这个信息去查找是否有有对应的驱动在本地或WU(Windows Update)上面一旦查找到设备对应的驱动,Windows便会安装并加载这个驱动加载驱动到地址空间解析驱动中引入的函数-调用其他模块调用驱动的入口函数(DriverEntry()),因此驱动可以注册回调函数调用AddDevice(),驱动此时可以创建一个“设备对象”,并将这个对象加入到设备栈中所有的事物在驱动框架中都是用对象呈现的(驱动,设备,请求等等)对象拥有属性,方法和事件WDF 对象方法属性事件操作对象的函数被WDF 框架调用用于通知某些事件设置或获取单个属性值的方法Driver (WDFDRIVER)Device (WDFDEVICE)Device (WDFDEVICE)Queue (WDFQUEUE)Queue (WDFQUEUE)……ObjectOperation方法:Status = Wdf Device Create ();属性:Cannot failWdfInterrupt Get Device();WdfInterrupt Set Policy();Can fail:Status = WdfRegistry Assign Value();Status = WdfRegistry Query Value();Status = WdfRequest Retrieve InputBuffer();回调事件:PFN_WDF_INTERRUPT_ENABLE EvtInterruptEnable初始化宏:WDF_XXX_CONFIG_INITWDF_XXX_EVENT_CALLBACKS_INIT当驱动被加载时,DriverEntry是第一个被操作系统调用的函数WdfDriverCreate( RawDriverObject, […] , attributes, &driver )NTSTATUS DriverEntry(_In_PDRIVER_OBJECT DriverObject ,_In_PUNICODE_STRING RegistryPath ) {[…]// Create WDF Driver ObjectWDF_OBJECT_ATTRIBUTES_INIT(&attributes);attributes.EvtDriverUnload = OnDriverUnload;WDF_DRIVER_CONFIG_INIT(&config, OnDeviceAdd);status = WdfDriverCreate(DriverObject ,RegistryPath ,&attributes,&config,&driver );}WDF EventWDF MethodWDF ObjectDeclare vars这是一个过滤驱动程序吗?驱动程序是电源管理策略的所有者吗?为设备对象创建I/O队列创建辅助对象,例如计时器,工作者对象,锁等NTSTATUS OnDeviceAdd( WDFDRIVER Driver,PWDFDEVICE_INIT DeviceInit) {WDFDEVICE device;IWDFIoQueue* pDefaultQueue= NULL;DeviceInit->SetPowerPolicyOwnership(TRUE );status= WdfDeviceCreate(&DeviceInit,&deviceAttributes, &device);context = GetContext(device);context->WdfDevice= device;status = pIWDFDevice->CreateIoQueue(NULL, TRUE, WdfIoQueueDispatchParallel,TRUE, FALSE, &pDefaultQueue);return status;}Static Configuration Device CreateSetting ContextQueue Create进入电源状态管理(D0Entry)使能中断(InterruptEnable)…获取硬件资源,进行一些静态配置,(PrepareHardware)进入电源状态管理(D0Entry)使能中断(InterruptEnable)…获取硬件资源,进行一些静态配置,(PrepareHardware)NTSTATUS OnPrepareHardware(WDFDEVICE Device ,WDFCMRESLIST ResourcesRaw ,WDFCMRESLIST ResourcesTranslated ) {int ResourceCount = WdfCmResourceListGetCount(ResourcesTranslated );for (i=0; i < ResourceCount; i++) {descriptor =WdfCmResourceListGetDescriptor(ResourcesTranslated , i);switch (descriptor->Type) {case CmResourceTypePort : […]case CmResourceTypeMemory : […]case CmResourceTypeInterrupt : […]default : break ;}}return STATUS_SUCCESS ;}进入电源状态管理(D0Entry)使能中断(InterruptEnable)…获取硬件资源,进行一些静态配置,(PrepareHardware)NTSTATUS OnD0Entry(IN WDFDEVICE Device ,IN WDF_POWER_DEVICE_STATE RecentPowerState ){PADXL345AccDevice pAccDevice = nullptr pAccDevice = GetContext(Device);WdfWaitLockAcquire(pAccDevice->m_WaitLock);I2CSensorWriteRegister(pAccDevice->m_I2CIoTarget, MY_REGISTER,MY_VALUE, sizeof (MY_VALUE) );pAccDevice->m_PoweredOn = true ;WdfWaitLockRelease(pAccDevice->m_WaitLock);return STATUS_SUCCESS ;}进入电源状态管理(D0Entry)使能中断(InterruptEnable)…获取硬件资源,进行一些静态配置,(PrepareHardware)NTSTATUS OnInterruptEnable(IN WDFINTERRUPT Interrupt,IN WDFDEVICE Device){PDEVICE_EXTENSION devExt;ULONG regUlong;PULONG intCsr;devContext = GetDeviceContext(WdfInterruptGetDevice(Interrupt) );intRegId = &devContext->IntRegisterId regVal = READ_REGISTER_ULONG( intRegId );regVal = ENABLE_INTERRUPT_BYTE( regVal );WRITE_REGISTER_ULONG( intRegId, regVal );return STATUS_SUCCESS;}进入电源状态管理(D0Entry)使能中断(InterruptEnable)…获取硬件资源,进行一些静态配置,(PrepareHardware)EvtIoResume EvtDMAEnablerFillEvtDeviceSelfManagedIoInitEvtDeviceDisarmWakeFromSxEventChildListScanForChildren EvtDeviceRemoveAddedResourcesStart power-managed queuesEvtIoResume Disarm wake signal, if it was armed. (called onlyduring power up; not called during resource rebalance)EvtDeviceDisarmWakeFromSx EvtDeviceDisarmWakeFromS0Request information about child devicesEvtChildListScanForChildren Enable DMA, if driver supports it EvtDmaEnablerSelfManagedIoStartEvtDmaEnablerEnableEvtDmaEnablerFillConnect interruptsEvtDeviceD0EntryPostInterruptsEnabledEvtInterruptEnable Notify Driver of state change EvtDeviceD0EntryDevice OperationalRestart from here if device is in low power statePrepare hardware for power EvtDevicePrepareHardwareChange resources requirements EvtDeviceRemoveAddedResourcesEvtDeviceFilterAddResourceRequirementsEvtDeviceFilterRemoveResourcRequirementsRestart from here if rebalancing resourcesCreate Device object EvtDriverDeviceAddDevice arrivedEnable self-managed I/O, if driver supports it.EvtDeviceSelfManagedIoInit (implicit power up),EvtDeviceSelfManagedIoRestart (explicit power up)Stop power-managed queuesEvtIoStop Arm wake signal, if it was not armed. (calledonly during power up; not called duringresource rebalance)EvtDeviceArmWakeFromSx EvtDeviceArmWakeFromS0Disable DMA, if driver supports it EvtDmaEnablerSelfManagedIoStopEvtDmaEnablerDisableEvtDmaEnablerFlushDisconnect interrupts EvtDeviceD0EntryPostInterruptsDisabledEvtInterruptDisableNotify Driver of state changeEvtDeviceD0Exit Device OperationalStop here if transitioning to low power stateRelease hardware EvtDeviceReleaseHardwarePurge power-managed queuesEvtIoStop Stop here if rebalancing resourcesFlush I/O if driver supports self-managedI/OEvtDeviceSelfManagedIoFlush Device removedSuspend self-managed I/O, if driver supports it.EvtDeviceSelfManagedIoSuspend Cleanup I/O buffers if driver supports self-managed i/o EvtDeviceSelfManagedIoCleanupDelete device object s context area.EvtDeviceContextCleanupEvtDeviceContextDestroyWDM和操作系统深度耦合,WDM驱动程序直接调用系统服务例程,直接操作系统数据结构WDM驱动程序全部为内核态程序,操作系统对驱动输入只做有限的检查WDF框架处理与操作系统的交互,驱动本身专注于和设备交互WDF基于对象模型和事件驱动WDF支持内核态程序和用户态程序将操作系统底层的复杂逻辑抽象化使驱动代码有可能<20行对不同的硬件设备使用相同的编程模型例如GPIO,UART,I2C,NFC,传感器驱动框架内置的日志系统为数据分析定制的工具支持上千种不同的硬件设备最初UMDF V1基于C++ COMUMDF V2使用和内核态驱动开发相同的模型和语法支持USB周边设备,传感器,NFC,智能卡,HID(包括触控)等等驱动崩溃只会影响宿主进程,不会影响整个操作系统系统重启策略可以自动恢复崩溃的UMDF驱动Windows 10提供了一系列API和DDI,对于所有的Windows平台都是通用的,被称为Universal Windows Platform(UWP) Windows通用驱动是指一个内核态或用户态的驱动并能运行在所有基于UWP的系统上面Windows通用驱动只能调用属于UWP部分的DDI,这部分DDI会在MSDN文档中标记为Universal确定你的驱动是否支持UWP,把你的驱动标记为通用驱动然后重新编译在Visual Studio中打开驱动项目工程在配置选项中把操作系统选择为Windows 10在工程属性中把目标平台改为“通用”,其他选项还有“桌面”和“手机”重新编译驱动,这时可以会出现一些链接器错误尝试修复这些错误,对于出现错误的API,请参考文档是否有通用平台的API可以替代,如果没有,您可能需要重新设计你的驱动KMDF version Release method Included in this versionof Windows Drivers using it run on1.19Windows 10, version1607 WDK Windows 10, version1607Windows 10 version1607 and later,Windows Server 20161.17Windows 10, version1511 WDK Windows 10, version1511Windows 10 version1511 and later,Windows 10 Mobile,Windows 10 IoT Core,Windows Server 20161.15Windows 10 WDK Windows 10Windows 10 for desktop editions, Windows 10 Mobile, IoT Core, Windows Server 2016UMDF version Release method Included in this version ofWindows Drivers using it can run on2.19Windows 10, version 1607WDK Windows 10, version 1607Windows 10, version 1607 (all SKUs), Windows Server 20162.17Windows 10, version 1511WDK Windows 10, version 1511Windows 10 for desktop editions (Home, Pro, Enterprise, and Education), Windows 10 Mobile, Windows 10 IoT Core (IoT Core), Windows Server 20162.15Windows 10 WDK Windows 10Windows 10 for desktop editions, Windows 10 Mobile, IoT Core, Windows Server 2016驱动程序运行在哪个版本的操作系统上驱动程序支持的硬件类型驱动程序使用的驱动模型确定驱动程序是否使用了只有KMDF支持的功能,如果驱动程序没有使用KMDF的功能,并且驱动运行在Windows 8.1或以后的系统上,则可以迁移到UMDF 2https:///en-us/windows/hardware/drivers/wdf/wdf-porting-guide Which Drivers Can Be Ported and WhereDifferences Between WDM and WDFPreparing for PortingSteps in PortingSummary of KMDF and WDM Equivalents。

OPC技术在Deltav系统中的实际应用

OPC技术在Deltav系统中的实际应用

OPC技术在Deltav系统中的实际应用(转载)2007-03-04 09:41作者:张宏李含草胡晓岚摘要:OPC技术的产生为应用软件和现场设备提供了通用的接口标准。

基于OPC技术的几种OPC软件产品在Deltav系统中的实际应用,大大争强了Deltav系统的开放性能,本文介绍了这几种OPC软件产品,并提出了OPC Server看门狗脉冲信号发生器的设计回路方案,用来检测连在一起的各个OPC Server之间的通讯状态。

Abstract: OPC technology realized an open and seamless connection between the application and plant-floor device.The article describes the application of the types of OPC products in Deltav system,and gives out how Deltav system improve its capability and open ability with OPC technology.In order to create an easy communication line monitor for the OPC communication lines ,the article gives the design of OPC Server watch dog generator.关键词:OPC OPC服务器Deltav系统Keywords: OPC OPC Server Deltav System中图分类号:TP311.52 文献标识码:BOPC是OLE for Process Control 的缩写,即把OLE应用于工业控制领域。

OPC是作为解决应用软件与各种设备驱动程序的通信而产生的一项工业技术规范和标准。

数据 实时 接口 原理

数据 实时 接口 原理

数据实时接口原理
实时数据接口的原理如下:
数据接口通讯原理根据装置监控系统接口多样性的特点,数采站上运行的数据采集软件针对不同的监控系统接口类型,根据数据采集服务器的数据请求,从监控系统读取生产实时数据,并返回给实时数据库。

数据采集站具有本地缓存功能,使系统在接口服务器与数据采集服务器之间的网络中断时,数据采集不中断。

实时数据存储与管理基于实时数据库,实时数据库是数据采集系统的实时数据存储中心,存储从各装置采集到的生产实时数据,并向应用系统提供数据服务。

此外,数据接口的传输过程通常包括数据的发送和接收,通过特定的协议和标准进行数据交换。

总之,实时数据接口通过一系列的技术和协议,实现了对实时数据的采集、传输、存储和应用,为各种应用系统提供了实时的数据支持。

如需更多信息,建议查阅相关文献或咨询计算机领域专业人士。

OSIPI实时数据库系统

OSIPI实时数据库系统

OSI PI实时数据库系统OSI PI实时数据库系统PI实时数据库系统(Plant Inhrmation System)是由美国OSI Software公司开发的基于C/S、B/S结构的商品化软件应用平台,是工厂底层控制网络与上层管理信息系统连接的桥梁,PI在工厂信息集成中扮演着特殊和重要的角色。

PI实时数据库系统适用于电力、石油、化工、冶金、造纸、制药、水处理、食品饮料、通讯等各种生产流程企业的生产过程优化。

PI是全世界装机量最多的实时数据库系统,己成为OSI公司的标志产品。

美国OSI SOftware公司创建于1980年,总部设在加州|San Leandro。

在休斯顿、西雅图、克里夫兰设有分部,在美国的IL、FL、MO、MA、NY、NC等州设有办事处,在澳大利亚、新西兰、德国、新加坡设有办事处,全球范围有超过80多个分销商。

OSI Software公司与Microsd、SAP、KBC等著名公司保持着良好的合作关系,PI的客户端产品中底层完全采用微软Windows技术,同时也将用户界面Windows化。

迄今为止,PI的客户端模块以功能强大、灵活、易用的特点在业界一直保持着领先的地位。

OSI So ftware公司还与世界上几乎所有的DCS/PLC厂商保持着良好合作关系,这就使得PI与DCS/PLC的数据接口建立在坚实的基础之上。

PI实时数据库系统概述世界上众多的企业都认识到生产过程的实时数据与历史数据是企业最有价值的信息财富,是整个企业信息系统的核心和基础。

但是,如果生产现场缺乏数据,数据不完整或者不一致,以及历史数据丢失,都将导致管理者对工厂的现状无法判定,给管理带来困难,严重时甚至导致工厂停产,发生事故等等。

二十年来,OSI S0ftware公司一直致力于实时数据库产品的开发工作,使得PI系统成为世界上最优秀的实时数据库产品。

目前,全世界超过5000家公司选用了PI系统,而且购买PI用户每年以40%的速度增长,使得凹的装机量近万套,成为全球装机量最多的实时数据库产品。

003-力控企业级实时历史数据库pSpace产品介绍

003-力控企业级实时历史数据库pSpace产品介绍

企业级实时历史数据库
pSpace应用组件
u关系库转储 SQLRouter用于pSpace Server和关系数据库建的数据交互,转储方式灵活, 支持多种表结构,同时提供数据统计转储、在线配置、二次开发接口等高级功能。 u关系库扩展 psSQL为关系库扩展组件,基于标准关系库进行了二次开发,与pSpaceServer 高效交互,提供基于SQL92标准的JDBC和ODBC接口,通过第三方抽取工具即可 实现数据集成。 uOPC数据转发 OPCServer是一个符合OPC 2.0的标准OPC数据服务器,为用户提供完整的工 业访问接口。
曲线、报表、菜单 可视化插件 图形库 参考行业软件设计标 多媒体技术 准 GDI、GDpace可视化界面
企业级实时历史数据库
pSpace可视化界面
upsView 后台脚本支持 面向对象设计的脚本编译环境, “所见即所得”,方便引用方法 和变量; 类“Basic”的语言环境,提供面 向对象编程方式; 脚本类型和触发方式多样,支持 条件动作、数据变化动作、窗口 动作、循环动作等; 脚本支持多种结构,支持数组运 算和FOR循环结构。
企业级实时历史数据库
pSpace可视化界面
upsView 组态开发 提供方便友好的开发环境及面向对象的设计,工程人员可根据这些工 具来搭建自己的监控系统。 数据源级联 工程导入与导出 查找与替换 窗口复制、文件夹管理 文件管理 贝塞尔曲线 多种图元绘图 对象克隆、镜像 标准Windows控件 日期框、下拉框、复选框 鼠标动作、垂直水平填充等 动画连接 智能对象封装 this&parent嵌套 自定义属性方法 画面分层 255图层选择
企业级实时历史数据库
pSpace核心服务器软件
企业级实时历史数据库

实时数据库的关键技术及未来发展前景

实时数据库的关键技术及未来发展前景

实时数据库的关键技术及未来发展前景摘要:作为数据库领域的一个重要分支。

实时数据库弱化了关系型数据库的某些功能,通过采用专用的工业实时数据压缩算法以及特殊的历史数据存储索引机制,应对特殊的需求。

实时数据库推动了信息化从传统领域向新的领域扩展,向更高层次发展。

这些新的领域包括生产实时监视、电力调度、交通监视及控制、实时仿真、作战指挥自动化等。

展望未来,在物联网领域实时数据库将会发挥更重要的作用。

关键词:实时数据库数据压缩算法信息化关系数据库物联网中图分类号:TP311.133.2文献标识码:A文章编号:1007-9416(2014)04-0215-021引言1.1实时数据库简介及应用背景实时数据库作为一种特殊的数据库,早在十多年前就已经在国外的大型流程工业企业部署应用。

随着网络、存储及计算技术的飞速发展,实时数据库广泛应用于电力、钢铁、石油、石化、交通、航空、水利、环保等重要行业和领域,已经是工业领域信息化的核心基础软件,在“信息化与工业化融合”过程中发挥着重要作用。

1.2国内外主流实时数据库介绍目前国内外市场上主流的实时数据库有:美国OSI公司的PI实时数据库,美国GE公司的IH实时数据库和美国印步公司的eDNA实时数据库。

国产的有代表性的实时数据库有:上海麦杰的openPlant,北京中科启信的Agilor。

2实时数据库的主要特点及架构2.1实时数据库的特点实时数据库面向的应用领域有如下3个特点:2.1.1单位时间内响应的数据量大如:一个的火电厂的SIS系统使用实时数据库存储数据,同时需要处理的测点数超过了一万,这些测点的变化周期通常在1秒钟之内,也就是说,需要将超过一万点的数据在1秒钟之内保存到数据库中。

2.1.2存储数据量大实时数据库的核心就是对大量的实时信息进行处理,由于成年累月的数据将占据大量的硬盘空间。

假设同时处理对于1万点的系统,每1秒钟存储一次,每次单点占用8个字节,那么保存10年的数据量将有10000*8*10*365*86400=25228800000000字节,接近23TGB。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实时数据库与驱动程序开发接口
V1.0 2006/12/29发布
1引言
根据整个组态的结构描述,在驱动程序与实时数据库之间交换的内容包括采集的实时数据及由实时数据库向驱动发送的控制命令串,驱动程序要求实时数据库或其他驱动支持的功能。

2实现方式
具体的实现方式是能过共享内存的方式进行数据传送。

系统驱动所使用的共享内存全部编号使用,编号从0开始顺序递增,不同的驱动使用不同的共享内存编号,一般一个驱动使用一个共享内存,特殊情况下一个驱动可以使用一个以上的共享内存号。

系统提供若干函数对共享内存的创建及使用进行支持。

并且提供完整的温巡驱动程序,使用纯C语言编写。

二次开发人员可以阅读,参照完成其他驱动的编写工作。

另外对每一个驱动的开发需要在drive目录下建立一个单独的文件存储驱动的应用程序与设置文件.以omron为例,需在drive下建立omron 目录.对每一个驱动程序写一个readme.txt文件和一个config.txt文件来描述开发的目的及驱动的用法及驱动程序的参数设置.
系统占用的共享享内存编号有如下几个, 其他程序请不要占用.
100 声音驱动使用
102 短信程序使用
103 电话语音报警使用
80web驱动使用
3驱动程序编写说明
3.1 数据区
驱动程序采集的量一般分为两种形式一种是实时数据量如遥信,遥测与遥脉等. 另一种类型是结构量,如SOE, 保护动作记录等。

实时数据量采用0 - 1999进行编号, 驱动程序开发人员可自行安排其中的某一段为遥信,遥测或遥脉, 例如0 - 100 为遥信, 101-200 为遥脉, 201 - 300 为遥测.对于遥信多的,将更多的编号分配给遥信,对于遥测多的将更多的编号分配给遥测。

采集上来的量在组态的参数配置中按驱动编写的情况进行配置.
3.2 上传结构变量
结构型变量采用如下方法进行传送,系统提供若干个结构串位置,当将指定形式的若干个结构串放入结构串中时,同时将串个数告诉实时数据库。

则实时数据库程序读入所有的串,并根据指定的格式进行存盘操作或命令操作。

结构串的格式一般为一个特征码附加若干有效字串参数。

3.3 命令区
驱动程序从实时数据库中接收的内容一般是命令串,命令串中包括命令特征码及命令附带的数据,当收到退出命令时驱动程序应自动安全地退出. 退出命令是命令字符串"EXIT"。

3.4 下行结构变量
下传结构变量一般是由实时数据库传送到驱动程序的下行结构变量。

接收下行结构变量的程序一般有声音报警,电话报警,及调度程序等。

4类接口说明
4.1 支持函数文件列表
1)ramdrive.h
2)ramdrive.c
4.2 使用步骤
1)使用方法bool CreateRam( int ramid );
完成共享内存的建立,参数为数据共享区的编号.
2)设置实时数据
void SetValue( int id, int iValue )
id 编号iValue 实时值
3)设置结构串
void SetStruct( int iNum , char * chStruct )
iNum 串内容编号chStruct 串内容
4)设置结构串个数,当实时数据库读完之后会置0
void SetStructNum( int iStructNum )
iStructNum 结构串个数
4.3 实时数据库接收的命令
命令组成: 一般是一个标识开头,跟随着是一些参数
Synax0 = CONC 站号开出号
Descr0 = 发出一个控制命令
Synax1 = COND 站号命令编号数字串
Descr1 = 发出一个带数字的控制命令
Synax2 = CONS 站号命令编号使用字符串代替参数设置内的内容下发
Descr2 = 发送指定的字符串下去字符串中可能有空格
Synax3 = CONV ALUE 站号命令编号数字串
Descr3 = 用于定值更改,会保存原始定值. 有默认取默认值,无则根据关联取出默认值, 如都没有则空出等输入
Synax4 = ASSIGNSYS 编号值save
Descr4 = 给系统总线上的某一个量赋值
Synax5 = SQL SQL语句
Descr5 = 执行一个可执行的sql语句
Synax6 = SOE yyyy mm dd hh mm ss ms ramid istate
Descr6 = 执行一个SOE语句年月日时分秒微秒遥信在共享内存内的编号动作后的状态值
Synax7 = BPACT netaddr gztype yyyy mm dd hh mm ss ms data1 data2 data3 data4 data5 data6
Descr7 = 保护动作语句网络地址故障类型年月日时分秒微秒故障数据1 故障数据2 故障数据3 故障数据4 故障数据5 故障数据6
Synax8 = CMDTORUN CMDSTR
Descr8 = 给上位机的命令CMDSTR为命令脚本
例如:CMDSTR为DisplayMsg Hello ! 则在上位界面程序的状态栏显示Hello ! 例如:OPENDLG …为在上位机弹出指定的对话框
Synax9 = DDL ymramid timetype dataj dataf datap datag datas
Descr9 = 传送电度表量的语句电度表量编号时间种类尖峰平谷总对于时间类型0 本月 1 上月 2 上上月
Synax10 = REMOTE remotetype ctlno ctltype
Descr10 = 调度上送命令
REMOTE 远程命令标志固定使用
remotetype 远程命令类型0 远方遥控1 升降命令
ctlno 遥控号/对象号
ctltype 开关/升降错开关的代码分别为0 1 升降错的代码分别为0 1 2
例如:
REMOTE 0 1 1 意义为遥控号为1 控制内容为关
Synax11 = EVENT netaddr eventtype evnetcode yyyy mm dd hh mm ss ms Parm Descr11 = 设备事件消息命令
EVENT 事件关键字
netaddr 设备网络地址相关设置表格:保护单元描述保护单元地址eventtype 事件类型代码相关设置表格:事件类型
evnetcode 事件代码相关设置表格:事件代码
yyyy mm dd hh mm ss ms 事件时间
Parm 事件参数中间可以有空格多余一个空格会缩为一个空格
例如:
EVENT 0 1 1 2007 3 27 08 30 33 132 parm0 parm1
分析流程:
根据设备网络地址–> 设备类型(通过保护单元地址设置)
根据设备类型,事件类型,事件代码–> 代码意义(通过事件代码表格)Synax12 = DZ filename
Descr12 = 保护定值传送命令
定值接口文件放在组态的temp子目录下。

通常为c:\ctconfig\temp
或/usr/local/ctconfig/temp目录。

向实时库传送时,只需要放入文件名即可.不要带路径.
接口文件定义如下:使用纯文本文件。

addr 1 //保护地址
zoneno 0 //保护定值区号0-3 对于压板类型固定设为-1,以此标记设定为压板
data 0 1 10.1 //定值序号为0 性质1为投入值为10.1
data 1 1 11.2 //定值序号为1 性质1为投入值为11.2
data 2 1 12.3 //定值序号为2 性质1为投入值为12.3
data 3 1 13.4 //定值序号为3 性质1为投入值为13.4
查看指定的保护定值使用exec 命令。

exec browsedz.exe
Synax13 = displayalarm
Descr13 = 驱动要求界面强制显示指定的报警信息
displayalarm iStationid, iDataKind, iid berror date time stationdescr alarmdescr alarmkind tellother devicename
displayalarm 关键字
iStationid, iDataKind, iid 点编号
berror 0 故障标志黄色闪烁1 事故标志红色闪烁
date time 日期时间
stationdescr 站点描述
alarmdescr 报警内容描述
alarmkind 报警类型
tellother 是否在网络上传输
devicename 采集设备描述,表示从哪个设备上过来的报警
4.4 下行信息语法
此语法供调度类型的驱动程序接收
CDTSOE yyyy mm dd hh mm ss ms stationid yxid state
SOE语句年月日时分秒毫秒遥信站号遥信编号动作后状态CDTBPACT netaddr gztype yyyy mm dd hh mm ss ms
保护动作语句网络地址故障类型年月日时分秒毫秒CDTEVENT eventtype evnetcode yyyy mm dd hh mm ss ms
事件动作语句网络地址事件类型事件代码年月日时分秒毫秒。

相关文档
最新文档