GOOSE卡发送的技术实现

GOOSE卡发送的技术实现,第1张

GOOSE发送是IEC61850中的一种快速报文传输机制,主要依赖于各智能设备的通信处理能力以及GOOSE网络的组网方案。一般来说GOOSE报文的发送间隔会比较长,需要固定时间间隔来进行。同时GOOSE网络的组网方式共分3个阶段逐渐改进;a.GOOSE独立组网;b.GOOSE与站控层共用网络方式;c.数字化变电站内共用网络方式。

一. GOOSE发送

允许发送的GOOSE报文个数为N(定义为宏,方便扩展),数据流程如图1所示:

GOOSE卡发送的技术实现,GOOSE卡发送的技术实现,第2张

图1 GOOSE发送数据流

① 根据IED标志将GOOSE发送的系统参数写入节点中;

② GOOSE实时参数有些部分需要写入节点中;

③ 根据GOOSE实时参数中allData总长度找到TxFrameBuf合适位 置(从尾部开始留出空间),再将实时参数中allData数据集转换成MMS格式并存储;

④ 将节点中数据按从Node_10到Node_0的逆顺序填充到TxFrameBuf中,将记录sqNum位置和帧头指针;

⑤ 将组织好的GOOSE报文发送到EMAC口,组织好超时时间和回调函数并加入到系统超时链中。

二. GOOSE接收

允许接收的GOOSE报文个数为N(定义为宏,方便扩展),数据流程如图2所示:

GOOSE卡发送的技术实现,GOOSE卡发送的技术实现,第3张

图2 GOOSE接收数据流

从EMAC接收的数据存储在RxFrameBuf中,根据stNum和sqNum的值判断本报文是否为重传,如果是重传将直接丢弃,否则执行如下解析:

① 首先根据判别ID知道IED的序号,再将GOOSE报文中的Head部分解析并存储到节点中;

② 将GOOSE报文allData的MMS格式转换成接口格式,转发给cRIO,如果allData数据量很大,那将会分片成多帧发送给cRIO;

③ 将GOOSE接收实时帧转发给cRIO。

三. GOOSE报文重传

要确保GOOSE报文重传需要如图3所示信息:p_Head指向重传GOOSE报文的头部,p_sqNum指向GOOSE报文中的域sqNum,TotLen等于GOOSE报文总长度,TOCnt保存下次重传时间(单位为毫秒)。

TOCnt的计算规则如下:

每次接收到GOOSE实时数据帧时赋初值为FirsTInterval,以后每次执行如下语句 *** 作:If (TOCnt 《 MaxInterval) TOCnt *= Mul;

GOOSE卡发送的技术实现,GOOSE卡发送的技术实现,第4张

图3 GOOSE重传数据结构

最后一步 *** 作是将需要重传的相关信息加入到系统超时链中:TOCnt是超时时间(单位为毫秒),CallBack根据p_sqNum对sqNum进行加一 *** 作,再将 GOOSE报文发送到EMAC,Arg是图3所示数据结构的指针。

GOOSE卡发送的技术实现,GOOSE卡发送的技术实现,第5张

图4 系统超时链

定时器的IRQ中,对图4的系统超时链每个TOCnt不为0的元素进行减1 *** 作,如果等于零,则传递指针Arg给CallBack并执行该回调函数。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2706514.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-16
下一篇 2022-08-16

发表评论

登录后才能评论

评论列表(0条)

保存