基于S7-300PLC的电力系统CDT规约的解析

作者: admin 分类: 新闻 发布时间: 2019-07-11 10:53

1 引言

  在工程设计过程中,经常会遇到远程终端单元(rtu)与plc进行通讯的问题。plc和rtu都适用于环境比较恶劣的工业场所,特别是在煤矿井下变电所,一般都设置远动终端。有时候需要在原有的plc控制系统上进行变电所集控系统的接入,这时可以采用以plc作为集中控制单元,并配以触摸屏作为hmi,然后通过plc与rtu的通讯实现井下变电所的集中控制。rtu主要有两类通讯规约:一类是循环式数据传送规约,另一类是问答式传送规约。cdt规约即属于前者,本文主要分析如何利用西门子通讯模块cp340来解析cdt规约。

2 cdt规约简单介绍

  部颁cdt循环规约是早期电力部颁布的一套远动规约标准,是电力系统中广泛运用的协议之一。它规定了电网数据采集与监控系统中循环式远动规约的功能、帧结构、信息字结构和传输规则等,适用于点对点的远动通道结构及以循环字节同步方式传送远动设备与系统,多用于rtu设备和后台主站之间的通信[1]。

3 cdt规约特点

  cdt规约的数据以帧格式循环发送,根据需要传送的数据的类型和重要性不同,分为:重要遥测(a帧)、次要遥测(b帧)、一般遥测(c帧)、遥信状态(d1帧)、电能脉冲数据(d2)帧、事件顺序记录(e帧)。帧结构如表1所示,每帧都以同步字开头,并有控制字,除少数帧外均应有信息字。信息字的数量依实际需要设定,帧长度可变。

4 帧系列传送顺序

  帧系列可根据需要安排传送顺序,通常有下列3种方式[1]:

  (1)固定循环传送,用于传送a、b、c、d1、d2帧。

  (2)帧插入传送,用于传送e帧(e帧长度不得大于a帧)。soe信息可能连续出现,当轮到发送e帧时用软件指针定好发送界限,后续出现的可归到下一次e帧时再送。

  (3)信息字随即插入传送,具体插入的方式如下:①变位遥信、遥控命令的返校信息、升降命令的返校信息等刚一产生就应插入当前帧的信息字传送,若当前帧是a、b、c、d帧,则原信息字被取代,插入的信息在本帧内连续(重复)三次(原帧长度不变,不许跨帧),以便接收端利用3取2原则作出判决。若本帧空间不够连续重复三次,则全部改为下一帧插入传送。当前帧如是e帧,则应在soe完整字之间插入,帧长度相应加长。②对时的子站时钟返回信息也插入传送,但仅传送一遍,其余与上述同。

  图1为各种帧类别均需传送,当需要以帧插入方式传送e帧时,即在箭头所指处插入传送,并按规定连送三遍。

  图2所示为有遥信变位需要插入传送时的示意图。这种插入不是以帧为单位,而是以信息字为单位,优先插入当前一帧,并连传三遍(取代三个原来信息字),若本帧不够连传三遍,就全部改在下一帧再传送。对时的子站时钟返回信息只插送一遍。如被插的帧为a、b、c、d帧,原信息字被取代后帧长不改变。

  图3所示为出现遥控返校信息时,被插的是e帧,则必须在事件顺序记录完整的信息之间插入,帧长度也相应增加。

  此外,当子站初始加电或重新复位后,帧系列一律从帧开始,优先传送遥信状态信息给调度端。下行通道中没有上述问题,有命令随时发送,无命令时连续不间断地发送同步信号。

5 cp340通讯参数配置

  西门子s7-300plc的编程软件为step7,首先进行plc的硬件组态,再进行软件编程。通讯模块cp340集成了串行接口,允许用户通过点对点的方式和通讯伙伴通讯,cp340通讯处理器的模块系列有三种,这里选用cp340-rs422/485。cp340通过背板总线与plc的cpu相连,为减小通信时cpu模块的负担,cp340被设计成智能型的,cp340模块上的处理器既受控制又有自主性,它根据cpu模块的命令自主管理串行口的收发工作。模块内有接收缓冲器和发送缓冲器,依靠接收和发送缓冲器建立起cpu模块与cp340的联系。发送数据时,cpu只需把发送的数据写入发送缓冲区,然后,由cp340把缓冲区中的数据逐个发送出去。cp340接收数据时,把接收到的数据写入接收缓冲区。cpu模块可以查询方式读接收缓冲区,如果缓冲区不空,cpu便得到接收数据。读写cp340上的缓冲区需要调用专用的功能块,写缓冲区的功能块称为发送功能块fb3,读缓冲区的称为接收功能块fb2。cp340在使用前必须选择通信协议并进行参数设置,cp340模块参数设定简便,集成在step

  7软件中的参数配置功能即可方便地设置cp340的通信协议及参数。rtu与cp340之间为异步串行通信,选用ascii通信协议[2]。串行通讯参数设置要与rtu相同:波特率为4800bps,8位数据位,1位停止位,无奇偶校验。图4为step7中cp340的硬件组态中的参数配置图。

6 协议解析思路

  三遥功能的实现。

  遥测量的信息:主要在a、b、c帧中,遥信信息在d1帧,电能脉冲数据在d2帧,事件顺序记录在e帧。rtu会通过固定循环传送向plc传送(其中soe为帧插入方式传送)。

  遥控的过程则需要plc向rtu发送下行遥控命令;然后rtu会以信息字插入的方式向plc发送遥控返校信息;plc收到信息并确认后再向rtu发送遥控执行命令,或者撤销命令;最后rtu执行plc下发的遥控命令,并将遥信变位信号以信息字插入方式返送到plc。整个遥控过程如图5所示。

7 plc程序设计

  7.1主程序

  主程序放在一个功能fc内,由主程序块ob1调用执行。通信程序首先通过调用功能块fb2对cdt数据的接收,并转存入数据接收区db20中。之后调用数据整理块,取出db20中的一个字(6个字节),并查找同步字(eb90

  eb90

  eb90)。找到同步字之后再取下面的6个字节(控制字),并进行处理。然后根据控制字中的提供的信息字个数,分别对帧的信息字进行处理。在对控制字和信息字处理的时候首先进行crc的校验,如果有错误,则抛弃此帧,进行下一帧同步字的查找[3]。程序主要部分如下:

  call rcv_data //接收数据并存储至db20

  call check_6byte //处理数据,判断是否有6个字节

  a istransneed //需要处理数据

  jc _001

  ju com

  _001:call check_eb90 //查找同步字

  a isframetrans //需要帧处理

  jc _002

  ju com

  _002:call contrw_trans // 控制字处理

  a isinfotrans //需要信息字处理

  jc _003

  ju com

  _003:call infow_trans //信息字解析

  com: nop 0

  7.2数据的接受和处理

  由于300plc处理数据的时间远比rtu传送来数据的速率要快。因此不会存在rtu传送的数据出现覆盖情况。在db20中建120个字节作为cpu接收rtu数据的缓冲区,因为cdt规约中无论是同步字、控制字还是信息字均为6个字节长,因此数据缓冲区可以存20个字。数据接收块(rcv_data)对来自rtu数据的接收,并转存到数据缓冲区db20中。处理数据块(check_6byte)是为了判断db20中的数据是否有六个字节,如果有6个字节则置位需要处理位(istransneeded),为下面查找同步字打开通路;如果没有6个字节则结束子程序功能块,等待plc下个扫描周期对数据的接收。

  7.3同步字查找

  当以上程序判断出数据缓冲区中有大于6个字节的数据,将会调用同步字查找块(check_eb90)。对取回的数据进行处理首要问题就是要找到同步字,可依次取出六个字节,并判断它们是否为同步字(三组eb90h)。若不是,则丢掉第一个字节,同时再取出随后的那个字节,再次进行判断。每个plc的扫描周期都要重复这样的过程,直到找到同步字为止。当找到两个同步字,将同步字之间的数据转存到控制、信息字db区,并置位需要帧处理标志位(isframetrans)。

  7.4控制字处理

  isframetrans为1时,程序将跳到控制字处理块(contrw_trans),即开始数据帧的控制字处理。首先,取出6个字节,并调用crc校验块对其进行crc8校验,若校验正确,则说明这6个字节即为控制字,从控制字的第三个字节可得到该数据帧的信息字字数,存入变量info_len;根据控制字的第二个字节帧类别置位不同的标志位,以便信息字处理块取出不同的遥测遥信以及遥控返校信息;最后置位信息字处理标志位(isinfotrans)。若不正确,则复位需要帧处理标志位(isframetrans)重新开始寻找同步字。

  7.5信息字的解析

  根据控制字处理块所提供的帧类别和取出的信息字总长度info_len,就可以开始信息字的解析,每次还是取出六个字节,调用crc校验块对其进行crc8校验。若校验错误,则丢掉这一信息字,接着取出下一个信息字进行解析。若校验正确则说明该信息字有效。根据帧类别去处理不同的信息字,信息字中的第一个字节为功能码,通过功能码可以确定这一个信息字的具体意义,这样就可以把信息字中的信息数据取出来转存到plc的某个特定存db区内。不管crc8校验是否正确,都对已处理信息字进行计数,当计数值与信息字总长度info_len相同时即说明该数据帧已经全部解析完,并复位信息字处理标志位(isinfotrans)。接下来应该是下一帧的同步字,根据上面步骤继续处理rtu传来的数据帧。

  7.6遥控和crc8校验的实现

  遥控功能是在上面信息字处理的基础之上实现的,在ob1内设置检测遥控命令的语句,每个扫描周期执行一次。一旦检测到控制中心下发的遥控命令,即调用遥控选择程序,根据遥控开关序号及动作要求按照cdt规约格式生成遥控选择帧,通过cp340发送出去。发出遥控选择命令,同时启动一脉冲定时器sp,在定时时间内,对上面收到的信息字进行检测,若收到正确的遥控返校信息字,则调用遥控执行程序,生成遥控执行帧,通过cp340发送出去,遥控操作即完成。如果在定时时间内没有收到遥控返校信息或返校信息字校验错误,则遥控失败。

  cdt规约中采用的校验码为crc8校验。其控制字和信息字都是(n、k)=(48、8)码组,生成多项式为g(x)=x8+x2+x+1,陪集码为ffh。由于300plc的db数据区很大,因此程序中采用查表法计算crc校验值。对于下面格式的控制字或者信息字的crc8校验方法如表2所示。

  (1)00h与第一个字节data0异或,结果查表,得temp0;

  (2)temp0和data1异或,结果查表,得temp1;

  (3)temp1和data2异或,结果查表,得temp2;

  (4)temp2和data3异或,结果查表,得temp3;

  (5)temp3和data4异或,结果查表,得temp4;

  (6)crc8校验的值即为temp4的反码。

8 结束语

  利用西门子300plc和串口通讯模块cp340可以很好地对cdt规约进行解析,从而实现煤矿井下变电所等特殊场合的集中监控。在枣庄泉兴矿业集团某矿的变电所自动化改造中已经成功运用了这种方法,并得到了很好的应用效果。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!