




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
四方华能电网控制系统有限公司 CSE600系列通讯管理与控制装置 开发文档 四方华能电网控制系统有限公司目 录1 配置文件sysconf-32 规约库框架-53 Q&A-9 1 配置文件sysconf1.1 概述 在CSE600工程下有一个sysconf文件夹,其中存放的是工程配置文件,后缀名是.cfg。该配置文件针对每一个通道,每一类型的接口,每一类型的规约而分别存在,即一个配置文件配置的是一个通道,该通道采用的规约库,和该通道的接口类型。.cfg配置文件主要配置了该通道下接入/转出设备/RTU的数量、装置链路地址、所用规约库、接口参数(以太网/串口)等信息。1.2命名规则一般情况下,配置文件的命名与所使用的规约库相一致。down代表下行接入,up代表上行转出,后跟规约类型的缩写。(如down103.cfg表示接入103规约的设备;upCSC2000表示转出规约为CSC2000的后台。)1.3配置文件注解addrmap 地址映射:该段落内配置了装置地址信息,每一行表示该通道下接入了一台装置。第1个字节是装置的实际物理地址(即链路地址);第3个字节是厂站号,即通信管理机号,一般为0;第4个字节是设备号,此号很重要,是从0开始顺序排列,并且要求全站内接入设备有唯一的设备号(例如down_103通道接入3台装置,它的设备号是0,1,2。down_csc2000通道接入5个装置,设备号从3开始往下排列)。第5个字节代表是否可控(即有遥控),1代表可控,0代表不可控。channel 通道规约信息:配置接入/转出规约库名称。该规约库名称需要与现有的规约库名称一致,否则无法加载。protocol=downPlugin103加载规约名称PortNumber=1端口个数SwitchTime=5各进程切换时间RateLimit=5速率限制autorun=1是否自启动PortConfig 接口参数:设置通道接口类型,如485/232/UDP/TCP/MULTICAST等。设置相对应接口的参数,串口和以太网都有自己专属的接口参数字段,如串口有端口号、比特率、校验方式等;以太网有主机ip,端口号,子网掩码等。type=serialtype=posudpalias=serial2alias=udp1portno=5remoteip=200.0.0.124binary=1remoteport=1889baudrate=9600localip=200.0.0.157parity=evenlocalport=7889databits=8stopbits=1interface=RS232protocol 扩展功能:针对每个不同规约可能会出现除了以上字段中描述的接口参数,设备地址以外的配置和参数信息,该字段的作用就是可以使得程序员将所有需要额外扩展的信息配置在这里,然后在规约库中去编写相应的程序提取所配置的信息。这样就可以使得编写的规约库程序达到尽可能的可配置,更多更灵活的配置信息,规约库接口就会越少的修改,就会越通用。CSE600的主程序已经提供了接口给规约库程序(见下节),可以直接调用相应的接口提取protocol字段下的内容。这些配置信息是以字符串形式被读入,以行作为每个字符串的结束。例如,针对可控设备,每一个通道都有一个CHANNEL_YK_TABLE字段,该字段内配置了该通道下的N个设备的M个遥控信息点。如下图所示,每个字节分别是设备号(不是设备地址),遥控点序号,遥控点号,分合码。CHANNEL_YK_TABLE=0,0,1,209|0,1,1,210|0,2,2,209|0,3,2,210|0,4,3,209|0,5,3,210|1,0,1,209|1,1,1,210|1,2,2,209|1,3,2,210|1,4,3,209|1,5,3,210|2,0,1,209|2,1,1,210|2,2,2,209|2,3,2,210|2,4,3,209|2,5,3,210|2 规约库框架2.1 主程序流程 1,加载配置文件中列装的通道。 2,根据每个通道产生不同的CXPort实例。 3,初始化通道参数。 4,读入通道参数, 创建通道实例。 5,创建规约实例。 6,装载版本信息。 7,装载链路地址信息。 8,装载规约特有配置项。(QueryConfig(),DoConfig(),LoadTransmitData()) 9,注册规约设备对应关系,启动规约库线程,进入规约层数据收发的处理。(DoStart())2.2 规约库程序框架规约库程序主要包括3部分: 固定接口:与CSE600主程序交互的主程序成员函数。这些函数不需做修改,与规约层无关。create_protocol_object();创建规约实例CommonProcessThread();规约线程入库free_protocol_object();释放规约实例读取配置文件接口:是规约库中,用来读取第一节中介绍配置文件的规约类的成员函数。主要包括如下三个函数。QueryConfig();加载配置文件中配置信息DoConfig();读取配置文件中的配置信息DoTransmitData();读取配置文件中的转发表信息规约类的处理接口:是针对不同规约而设计的不同的收发处理函数。其中主要包括如下一些重要的函数。RecvData();接收报文SendData();发送报文ReadAndProc();接收并开始处理VerifyFrame();校验ProcessFrame();解析报文,处理4遥量信息handle_interrogate();组织报文下发召唤handle_YK();遥控处理2.3 Dubug程序的调试在ProtocolGW文件夹的bin目录下有一个protocolgw.exe的可执行程序,它是转为CSE600设计的方便在windows调试的主程序。当完成规约库程序后,可以在windows下调试,通过cmd命令行打印收发报文,查看程序运行结果和流程是否正确。在VC下组合键alt+F7,弹出工程设置,如下图正确填写CSE600主程序所在的URL即可。3 Q&A1,工程命名规则?习惯上,规约库的命名按照接入方式和规约关键字两者来命名,例如下行接入103设备,工程可命名为downPlugin103;转出CSC2000后台,工程可命名为upPluginCSC2000。2,生成的规约库dll文件的命名规则?在Projecj SettingLinkOutput file name是工程编译后生成的DLL的名称,命名规则与1中的规则一致,必须按照如上的命名规则命名,不允许自创名称。同时该dll名称需要与.def文件中的【LIBRARY】名称一致。3,如何新建工程?替换。复制已有工程,在全部工程文件中替换已有工程的规约关键字为新规约的关键字。并且,修改所有工程文件的名称,也替换为新规约的关键字。注意,还需要替换Makefile文件中的*.so的文件名4,程序中对用户自定义配置的处理?当在配置文件字段protocol下新增配置信息后,在规约库中,需要首先在QueryConfig()中声明,然后才能在DoConfig()中读取到相应的配置信息,并附给成员变量。5,Doconfig()中无法正确读取配置文件中写入的信息?配置文件相应字段字符串书写有空格,对其备注放在该字段上方了。注意,对配置文件的注释只能放在该字段后方或者下方。6,调试时出现Link.exe错误?在Object/library name和Additional include directories下添加缺少的链接库和文件夹路径。7,程序调试时,被莫名killed?错误可能出现在程序中的RecvData()中。类成员变量byteReadBuffREADBUFFLENTH中READBUFFLENTH的长度,要求设置时大于MAX_PDU_LEN,一般设置成它的2倍。因为防止因接收越界而出现的指针错误、内存错误。数组指针都有一定的边界,当程序中出现超界、越限的错误时,程序会出现异常运行结果。如果发现当前数组存不下,会将数据顺延到其声明时的下一个变量中去。如果后面的变量还不够存,就可能将数据填充到可执行的代码中。8,头文件中结构体struct的声明定义?在0S_UNIX环境下,struct和union需要有特殊的处理。如上图所示,在工程设置中,设置struct member alignment为8 bytes。说明档struct中不满8个字节时,编译器会为该结构体补足8个字节。这样可能会出现一个异常现象:监视报文存入某一个结构体中的字节顺序与实际报文上送的字节不一致,程序不会因此报错中断运行,但却会使得程序解析报文错误得到错误的结结果。就是因为这种补足机制,可能将一帧报文中的某些字节填充给解析结构体中去。再加上UNIX下的字节顺序与windows下相反,更会使得所使用的结构体被错误赋值。解决办法,需要设置一个宏定义:#ifdef OS_UNIX#define STRUCT_MEMBER_ALIAGNMENT_1BYTE _attribute_(_packed_)#else#define STRUCT_MEMBER_ALIAGNMENT_1BYTE#endif并且在每一个声明的结构体name前加上STRUCT_MEMBER_ALIAGNMENT_1BYTE使得编译器不对struct进行补充位置的操作。9,配置文件addrmap与遥控的关系?配置文件中的【addrmap】中,最后一个字段标示能否对该设备进行遥控,如果需要对其进行遥控,必须设置为非0数,否则无法遥控。10,YC/YX/YM入库错误?入库的时候,必须根据入库类型将序号依次从0开始入库,也就是将遥测根据个数,按照0-(NUM-1)赋值给seq_no,进行入库,这个主要是因为CSimpleFlatStorage类(用来开辟内存存储实时数据)里的处理时这样的。而且通信管理机默认的是0-1023,超过1023的seq_no会引发错误。11,CSE600的网卡配置CSE600的网卡设置的 # /prog/startup.sh文件中,每次开机启动对某块网卡的设置。对于接入四方华能的以太网103设备,不管是任何网段,需要确保该网卡的广播地址broadcast设置为*.*.*.255,即一位255的D类ip。设置方法,修改startup.sh配置文件ifconfig eth1 100.0.0.188 broadcast 100.0.0.255 netmask 255.255.255.012,up规约YX建表规则一般的上行转出规约都要求上送 事故总/告警总 这两个虚拟遥信点。在建立up的配置文件时,在字段TransmitYX中是转发的全部遥信点。规定,将转发点为0 1的两个点定义为事故总/告警总。因为它们是虚拟的,没有实际的厂站号和设备号,规约事故总、告警总书写格式如下:#名称 是否有效 RTU号 转发点号 厂站号 设备号 测点号 是否取反事故总 1 1 0 0 0 65534 0告警总 1 1 1 0 0 65535 0(即事故总0XFFFE,告
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025武汉合资企业更迭名称及法人合同须重新签订
- 初中考试题及答案大全
- 济南监控考试试题及答案
- 基础消防考试试题及答案
- 中国氧化镉项目商业计划书
- 第三方协议书签了后离职
- 工艺品可行性分析报告
- 3月护理三基试题库含答案
- 2025年中国螺二芴项目创业计划书
- 2025年仓储安全管理员安全管理危机处理考试试卷
- 马铃薯高产栽培技术
- 丙烷气体安全培训课件
- 《论语》中的家庭伦理与教育理念考察
- 化工尾气安全风险分析报告
- 2024年模具项目管理培训课件
- 广东省地质灾害危险性评估实施细则(2023年修订版)
- 无人驾驶的法律和伦理问题
- 压缩空气储能
- 中职数学基础模块下册数列教案
- 新天骄全任务
- 27-子宫脱垂的围手术期护理
评论
0/150
提交评论