加载中...
今天是:
设为首页 | 加入收藏 | 全站地图 | RSS订阅
您现在的位置:中国电力资料网 >> 规程预案 >> 电力规约 >> 浏览文章
安全 电力 农电 用电 开展 农安 2009 全员

远动CDT循环规约编程

作者:布道者     文章来源:布道者    更新时间:2012年03月13日     
内容预览


  摘 要:介绍了在Windows环境下,利用DELPHI软件与WIN32 API函数结合实现部颁CDT循环规约的方法,完整地给了实现CDT循环规约的全过程,可满足为电力系统高级应用软件提供共享数据资源的需要。  关键词:Windows环境;CDT循环规约;DELPHI;线程;同步
  Abstract:The paper presents a new method of the implementation of recycling protocol CDT by use of DELPHI together with WIN32 API, in which the whole process of implementation of recycling protocol CDT has been given completely. And this implementation can meet demands of shared data in the advanced software of powersystem.  Key words: windows platform; recycling protocol CDT; DELPHI; thread; synchronization
  调度自动化及变电站综合自动化已广泛应用于电力系统中,其SCADA系统所采集到的实时数据是宝贵的资源,利用这些资源进一步开发高级应用软件是很有意义的。  介绍的就是一种利用部颁CDT循环规约进行串口通信的实现方法。该程序使用DELPHI开发,可利用WIN32 API函数或利用Micrsosft的MSComm控件实现。
1涉及规约简介1.1帧的结构  部颁CDT循环规约规定,数据以帧结构循环发送。  (1) 帧由一个同步字,一个控制字,和N个信息字组成。帧长度受缓冲区长度限制,一般以信息字N不超过160为限。
 (2) 一个同步字由六个字节组成,它们是EBH,90H,EBH,90H,EBH,90H。
 
  (3)一个控制字由六个字节组成,它们是控制字节,帧类别码,信息字数N,校验码等组成。
  (4) 控制字节固定为OF1H。  (5) 帧类别码,如表1。

 (6) 信息字数是指本帧类预定发送的信息字数,不包括遥信插入,遥调/调返校,遥控/调执行确认,遥控/调超时撤消等信息字。
  (7) 一般信息字格式
  每个遥测信息字中传送两路遥测量。每(b15…b0)为一路遥测量,b11…b0为模拟量大小,b11=0时为正数,b11=1时为负数,以2为补码负数,b14=1表示溢出,b15=1表示无数,b12,b13无意义。功能码(00H-7FH)用来标识遥测信息字,校验码为CRC校验码。  每个遥信信息字(b15…b0)中含32个状态位。b=0或b=1各表示一种状态。每(b15…b0)为一单元。1.2发送规则  数据以帧的结构循环发送,重要的帧在A帧发送,次重要的帧在B帧发送,一般遥测在C帧发送,遥信信息在DI帧发送,变位遥信随机插入发送。以控制字和功能码共同鉴别数据。1.3CRC校验  控制字和信息字都是(n,k)=(48,8)组码,生成多项式G(X)=X8+X2+X+1,陪集为FFH。G(X)以模2除前5个字节,生成R(X),以R(X)的反码为校验码。
2编程思想  RS-232C协议规定了数据终端设备DTE与数据通信设备DCE之间的通信标准。近距离(小于5 m)通信时可省去DCE设备进行“零”调制解调器的双机通信。其物理接线为简单的三线(TXD,RXD,地线)传输方式。可编程串口芯片完成物理层的位校验,启始位,终止位添加与检出等操作,8273等芯片还可进行硬件(CRC校验。根据ISO中关于OSI层网络模型定义:对链路层的通信规约可在链路层直接编程,由串口。2.1串口通信  点对点的通信有多种实现方法,用DELPHI开发串口通信软件一般有两种方法:一是利用Windows的通信API函数,另一种采用Microsoft的MSComm控件。利用API编写串口通信程序较为复杂,需要掌握大量通信知识,其优点是实现功能强,应用面广泛,适合于编写较为复杂的底层通信程序。而利用MSComm控件则相对较简单,该控件具有大量的与串口通信密切相关的属性及事件,提供了对串口的各种操作。MSComm控件的主要属性及事件。  ① CommPort:设置或返回串口端口号,缺省值为1。  ②Setting:设置或返回串口通信参数,格式为“波特率,奇偶校验位,数据位,停止位”。  ③PortOpen:打开或关闭串行端口。  ④InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。  ⑤InBufferCount:返回接收缓冲区内等待读取的字节数。  ⑥Rthreshold:该属性为一阀值,它确定当接收缓冲区内的字节数达到或超过该值后就产生代码为ComEvReceive的OnComm事件。  ⑦Sthreshold:该属性为一阀值,它确定当接收缓冲区内的字节数少于该值后就产生代码为ComEvSend的OnComm事件。  ⑧Input:从缓冲区读取一串字符。  ⑨OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。  ⑩OutBufferCount:返回发送缓冲区内等待发送的字节数。  如果在通信过程中发生错误或事件,就会触发OnComm事件,并由CommEvent属性代码反映错误类型,在通信程序的设计中可根据该属性来执行不同的操作。  由于发送方循环发送,接收方必须持续接收,而且外设速度相对较慢。所以采用善于后台处理的工作者线程专司数据接收的工作。  多线程是多任务的一种表现,32位Windows中各线程以抢占方式运行CPU 20 ms的时间片,线程的优先级确定其在某一进程内抢占CPU时间片的级别。  DELPHI提供了一个TThread类,它是一个带有虚拟抽象对象方法的类。为了使用线程,该线程应为TThread类的子类,并使用该基类的特性。但值得注意的是,在多线程应用处理程序中,有可能会造成死锁使整个系统停滞,同时为了操作系统的稳定,应在建立另一个线程前或在程序结束时删除线程。2.2数据的处理  由于遥信与遥测的数据结构不同,所以要分别构造遥测与遥信存储类来存储数据。  为了实现遥测与遥信数据的共享,避免两个线程访问相同的数据时引发冲突,可以使用Windows API提供的同步技术来同步多个线程对同一数据类的同时访问。Mutex(互斥对象)是串行访问资源的全局对象,可以首先设置互斥对象,然后访问资源,最后释放互斥对象。在设置互斥对象的同时,如果另一线程(或进程)试图设置相同的互斥对象,它将停下来,直到前一个线程(或进程)释放该互斥对象为止。2.3校验  CRC校验的实质是求一个数字信息序列的余式,对于(48,40)循环码,编码是在40位信息后附加余式,检错是求40位接收数字序列的余式,或48位接收数字序列与生成多项式g(x)模2相除的余数是否为零。程序实现CRC校验的基础是查表法,即当已知n字节信息的CRC值,求取n+1字节信息的CRC值时,首先增加的字节异或原CRC的高8位,形成一新字节,求取该字节的CRC值,再与原CRC的低8位相异或,便可求得信息的CRC值。因此信息传送的基本单位是8位字节的集合00H-FFH,预先求出CRC值,组成256个CRC值的表,即可用查表法求CRC值。这种查表法就是最基本的直接字节查表法。为了节约存储空间,并适当的照顾速度,本程序采用存储32个CRC值的双字段(4位)查表法,即按字节的高4位和低4位为氮位,每4位有0-F共16个个单元,共组成含32个CRC值的表。2.4数据的显示  数据是在工作者线程中接收的,但在工作者线程中无法显示。要实时的显示且不影响程序的正常运行,必须使用用户界面线程或当前窗体接收工作者线程的消息,而后再非模态对话框上显示数据。
3程序实现简介  为了实现程序的通用性和可维护性,本程序将不同的功能分别封装于以下几个类中:一个串口类,自定义消息封装于一个消息类中,CRC校验封装于一个校验类中及数据封装于一个数据类中。在程序中定义的数组容量以规约中定义的最大容量为准。
4结论  程序利用DELPHI实现了部颁CDT循环规约,在模拟仿真试验中,无一差错。程序还可在Windows95/98/Me及Windows NT之间进行通信,效果良好。

发表评论】【告诉好友】【打印此文】【收藏此文】【关闭窗口
0% (0)
0% (10)
上一篇文章:输配电线路维护检修规范
下一篇文章:没有了


网友评论
 以下是对 [远动CDT循环规约编程] 的评论,总共:0条评论

顶客DIGG排行
最新帖子
最新电力书籍
赞助商链接
建议使用1024X768分辨率浏览本站,本站网络实名:中国电力资料网
客服QQ:56143402 | 网站2000人超级QQ群:52321122 |变电群号:14754363|投稿信箱:56143402@QQ.com| 24小时联系电话:189-920-82051
Copyright © 2002-2008 WWW.52data.CN All Rights Reserved.陕ICP备05002507号