SVC上位机软件设计说明.docx
《SVC上位机软件设计说明.docx》由会员分享,可在线阅读,更多相关《SVC上位机软件设计说明.docx(46页珍藏版)》请在冰豆网上搜索。
![SVC上位机软件设计说明.docx](https://file1.bdocx.com/fileroot1/2022-10/27/c0cbcf9e-878b-4fab-9132-98fc933f6ad8/c0cbcf9e-878b-4fab-9132-98fc933f6ad81.gif)
SVC上位机软件设计说明
上位机软件设计说明
(内部资料)
设计:
陈晏伯
2009年8月5日
荣信电力电子股份有限公司
一.模块说明
各模块之间的通讯关系
现有的模块文件(由于设备模块比较多,数量也正在增加,这里就不全部列举了):
GDIPLUS.DLL画矢量图使用的GDI+运行库
gds32.dllFirebird本地数据库引擎(数据库仅有这一个文件就可以使用,不用注册)
msvcp60.dllVC6.0运行库文件,由数据库引擎调用
ringin.wav报警声音
RxpeSvcConOp.exe本地用户界面
RxpeSvcConOp.ini本地用户界面配置文件
RxpeSvcDataMgr.exe数据库模块
RxpeSvcDataSvr.exe通讯模块
DIAGRAMS主接线图(文件夹)
SchDiagram.vcs元件表
SchDiagramS.vdr电铁主接线图
SchDiagramT.vdr三相主接线图
MODULES设备模块(文件夹)
JCJ600D.exeJCJ600D温控仪
Nz103toSvc.exe南自的继保设备
RxpeSvc200.exe11块DSP的SVC控制器
SVC_OP_001.exe新版本单片机的SVC控制器
SVC_OP_CON.exe老版本单片机的SVC控制器
SVC_TO_NZ103.exe把SVC数据传输到南自后台
_Rxpe_Svc_Modules.cfg模块配置文件
_Rxpe_Svc_Control.cfg特殊(连锁)遥控的遥控表
*.var设备模块对应的变量表,由通讯模块RxpeSvcDataSvr.exe管理
*.cfg*.ini*.dat等设备模块的配置文件,由相应的设备模块生成和处理
SVCDATA
RXPESVC.DAT数据库结构,Firebird数据库
Dyyyymm.DATyyyy年mm月数据,Firebird数据库
TEMP临时文件(文件夹)
detail.tmp主界面明细查询结果存放在这个临时文件里面
failure.tmp主界面故障查询结果存放在这个临时文件里面
1.设备模块
具体内容根据相应的设备而定
①负责设备数据的采集,发送到通讯模块
②处理由通讯模块传过来的遥控
③如果数据送到其他厂家的设备,可接受那个厂家的设备的遥控,把遥控信息传递到通讯模块
2.通讯模块
①负责与设备模块的通讯
②数据库模块通过通讯模块获取设备信息和数据,通讯模块负责转发数据和各种命令
③管理模块,可设定加载哪些模块
④管理数据,可设定所有模块的数据的校正系数
⑤向外提供的数据,可设定数据转发的参数,即数据由一个设备模块转发到另一个设备模块
⑥可设定和管理特殊遥控表,以满足用户要求的连锁控制功能
⑦调试信息,可查看所有的通讯报文,可根据IP地址:
端口过滤(可输入前几位,也可输入全部)
3.数据库模块
①通过连接到通讯模块获取所有设备信息和设备的数据,根据这些信息创建数据库和储存数据
②把用户的遥控信息转发到通讯模块,并且把遥控操作都记录到数据库里
③记录由模块之间转发的遥控信息,即由其他厂家的设备对SVC系统进行的控制
4.本地用户界面
①显示主接线、实时曲线、历史曲线、历史数据、故障记录、硅状态、功率因数统计
②可以设定显示的计量单位(V/kV,W/kW/MW等),可以设置显示曲线的量程(曲线的y轴范围)
③可以编辑主接线,可设定主接线上显示的变量和遥控
④可以对设备的参数进行设置,采用通用的表格方式处理设备模块的设备参数与程序参数
二.通讯协议概述
1.数据帧结构
数据帧采用头、尾识别方式,在头、尾之间为转义之后的一包数据。
数据
字节数
说明
头0xeb
1
数据包头,一个字节:
0xeb
转义之后
的数据包
不定长
数据,头、尾之间为一包数据,使用0xec作为转义符,
遇到0xeb、0xec、0xee分别转换为0xec0xeb,0xec0xec,0xec0xee
尾0xec
1
数据包尾,一个字节:
0xee
注1:
以后所描述的所有的数据包结构,均为未转义的数据包。
注2:
数据包在发送的时候,经过转义,添加头、尾,发送出去。
2.数据包结构
数据
字节数
说明
功能号
1
详见功能号表,表示此包数据的功能
识别索引
1
请求数据的时候,可以随意设置的参数,一般可以每发送一次请求,这个数值加一,对方应答的数据包的识别索引必须是请求方提供的索引号,请求方认为回答的是请求的问题。
应答方回答对方的请求时,此索引号必须原样返回,请求方发现此索引号与请求时一致,认为回答的是请求的问题。
虽然请求方可以放弃识别这个索引,但是应答方必须遵从这个约定。
没有请求/应答关系的数据,这个值可以为零。
数据
不定长
数据包所提供的数据,内容和长度根据具体功能号而定。
校验码
4
数据包的CRC32校验码,包括功能号、识别索引、数据,
计算初始值为0xffffffff,最终结果取反,计算方法见后面的程序。
3.功能号一览表
功能号
说明
通
用
功
能
0x01
获取登录验证码
0x02
提供登录验证码
0x03
登录申请
0x04
登录应答
0x05
请求模块端退出、打开设置对话框、关闭对话框放弃设置
0x06
应答模块端退出、打开设置对话框、关闭对话框放弃设置
0x07
服务端准备就绪请求
0x08
服务端准备就绪应答
0x09
数据库结构发生了变化(数据模块发向界面模块)
0x0A
界面模块应答数据库结构发生了变化
0x11
获取设备信息
0x12
应答设备信息
0x13
请求模块列表
0x14
应答模块列表
0x15
通讯状态请求
0x16
通讯状态应答
0x17
特殊控制列表请求
0x18
特殊控制列表应答
0x19
模块初始化错误,需要重新启动模块:
发程序退出,然后重新加载
设
备
模
块
0x21
获取变量值请求(提供单元组名)
0x22
设备数据(可以是主动发,也可以是请求的结果)
0x23
远端控制请求
0x24
远端控制应答(返回是否成功)
0x25
请求故障
0x26
应答故障
0x28
模块时间同步,同时避免网络掉线现象发生
0x29
模块主动上送的事件或报警信息
界
面
/
服
务
0x31
实时数据请求
0x32
实时数据应答
0x33
实时故障请求
0x34
实时故障应答
0x35
远端控制请求
0x36
远端控制应答
0x37
数据转发列表
0x38
遥控命令转发
0x39
事件请求(产生事件只上送一次,不可查询)
0x3A
事件应答(产生事件只上送一次,不可查询)
0x3B
请求实时波形数据(由于波形都是主动上送,不需要询问这个命令)
0x3C
应答实时波形数据(波形数据主动上送,不需要等待询问再上送)
0x41
历史数据请求
0x42
历史数据应答
0x43
历史故障请求
0x44
历史故障应答
0x45
历史曲线请求
0x46
历史曲线应答
0x47
功率因数统计表请求
0x48
功率因数统计表应答
0x49
用户操作记录请求
0x4A
用户操作记录应答
0x50
获取用户表
0x51
提供用户表
0x52
获取用户权限
0x53
提供用户权限
0x54
修改用户信息请求
0x55
修改用户信息应答
0x56
修改密码请求
0x57
修改密码应答
0x58
核对密码请求
0x59
核对密码应答
0x60
获取工控机系统信息
0x61
提供工控机系统信息
0x62
界面修改了主接线,发送主接线信息
0x63
数据模块应答收到界面发过来的主接线信息
0x64
主接线信息请求
0x65
主接线信息应答
0x66
主接线文件请求
0x67
主接线文件应答
三.设备模块
1.设备模块的通讯流程:
设备模块连接到服务端的21098端口,一般情况下模块都是连接到本机(127.0.0.1)的这个端口上,连接成功之后,发送获取验证码和登录信息。
登录成功之后,如果服务端发送了服务端就绪信号,可以发送实时数据和故障信息,同时服务器无论在是否就绪的情况下,都可能询问有关设备的信息,例如硬件节点的变量表等。
如果无法连接到服务端,或者掉线了,可以每隔一段时间重试连接。
一个设备模块,可以对应一个硬件设备,也可以对应成组的组合设备,例如南自的一台设备,由若干独立的模块组成,而这些独立的模块都是TCPClient,必须对应一个TCPServer,这样就只能用一个设备模块去处理这些独立的模块,而设备上那些独立的模块,在程序里面就称作单元(Unit)。
每个单元,可以分若干组数据,根据设备的习惯或功能等区分都可以,例如遥测组、遥信组等、设定值组等,每个组可以有若干条数据。
命名约定:
模块名、单元名、组名、变量名,都必须符合C语言的变量的命名规则,原因是需要以这些名称创建数据库的表名和字段名。
表名由模块名+下划线+单元名构成,字段名由组名+下划线+变量名组成。
其他描述可以随意。
2.设备模块数据结构
0x01:
获取验证码
模块向服务端发送数据:
数据
字节数
说明
---
0
此数据包没有数据
0x02:
提供验证码
服务端发送给设备模块:
数据
字节数
说明
KeySeed
16
由这16个字节产生验证码Key16和Key32:
Key16=KeySeed的CRC16值,计算初始值为0xabcd
Key32=KeySeed的CRC32值,计算初始值为0x12345678
Key16和Key32计算结果需取反,计算方法见CRC校验码
0x03:
登录申请
设备模块发送到服务端:
数据
字节数
说明
Key16
2
功能0x02提供的16位验证码
Key32
4
功能0x02提供的32位验证码
ClientType
1
客户端类型(对于设备模块,为1),见编码表:
ClientType
ModuleName
WideString
模块(设备)名称,格式见数据类型:
WideString
ModuleFile
WideString
本地模块:
模块文件名,不含扩展名
远程模块:
L”RemoteModule”
格式见数据类型:
WideString
0x04:
登录应答
服务端发送到设备模块:
数据
字节数
说明
LoginStatus
1
如果登录成功,这个值等于这个模块的ClientType,对于设备模块这个值等于1,见编码表:
ClientType。
如果登录失败,这个值一般为0
DeviceID
WideString
设备编号,格式见数据类型:
WideString
RegInfo
WideString
注册信息,格式见数据类型:
WideString
ErrorCode
1
登录错误编码,见编码表:
LoginError
0x05:
请求模块端退出、打开设置对话框、关闭对话框放弃设置
由服务端发给模块的命令,只对本地模块有效,远程模块不处理。
本地模块必须处理的命令:
程序退出,其他命令可以不处理。
数据
字节数
说明
DialogOperation
1
模块操作命令,见编码表:
Di