实时数据库与驱动程序开发接口-解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 //保护地址