使用PIS-10如何从IEC 61850版本1更新到版本2

介绍

 

PIS-10 IEC 61850 V2软件库包括第2版功能以及对API函数调用和PIS-10软件库生成的回调的一些细微更改。 本文档将指导您完成API中的每个更改,以及如何将现有V1代码更新为V2并实现V2的新功能。 Main API函数调用尚未更改,大多数更改都基于IEC61850控件功能。

 

有关其他API函数和数据结构的更多信息,请参阅我们的可导航在线API用户文档http://api.systemcorp.com.au。

IEC61850_Create(…)

 

针对V1和V2版本,IEC61850_Create函数在调用上没有任何变化,但是带入的IEC61850_Parameters结构体需要进行修改,具体变化请参考后续的说明

 

对IEC61850_Create的函数调用没有从V1更改为V2,但是已经修改了传递给create函数的IEC61850_Parameters结构。 下面记录了这些变化

 

IEC61850_Ed1_Ed2_Flag:

 

最重要的变化是新的变量枚举IEC61850_Ed1_Ed2_Flag Ed1_Ed2_Flag;

结构中的此变量允许您将堆栈的行为设置为IEC61850_Edition1或IEC61850_Edition2。

例:

tServerParam.Ed1_Ed2_Flag = IEC61850_Edition2; //将PIS-10设置为Edition2

uiClientMaxAssociations:

对于客户端应用程序,已删除变量uiClientMaxConnections,并且已将其功能合并到uiMaxAssociations中。 这意味着在设置PIS-10允许的最大关联时,客户端和服务器功能现在是一致的。

例:

tClientParam.uiClientMaxConnections = MaxAssocVal; //客户端上的V1代码

上面的代码应替换为:

tClientParam.uiMaxAssociations = MaxAssocVal; // V2代码在客户端上设置最大关联

 

uiMMSTimeout:

 

对于客户端应用程序,它定义了PIS-10在MMS消息超时之前等待的时间。

例如:

tClientParam. uiMMSTimeout = 1500; //V2编码设置MMS超时时间为1.5 秒

 

ptReadMultipleCallback:

 

如果设置了此回调,IEC61850_ReadMultipleCallback是服务器的新可选回调

将使用IEC61850_ReadMultipleCallback代替IEC61850_ReadCallback。 此新回调的功能将在本文档的后面部分进行说明。

 

例:

tServerParam.ptReadMultipleCallback = ReadMultipleCallbackHandler; //分配多个读回调

 

ptQuestionableCallback:

ptQuestionableCallback是服务器或客户端的新可选回调。 回调用于在数据点有问题时通知应用程序,因为在先前接收到的GOOSE数据包中的TTL之前没有接收到GOOSE数据包。

例:

tServerParam.ptQuestionableCallback = QuestionableCallbackHandler; //分配可疑的回调

 

ptOprTestCallback:

 

ptOprTestCallback是服务器的新强制回调。 在IEC61850_ControlOperateCallback回调之前调用此回调,它允许用户应用程序检查硬件状态是否处于可控状态。

例:

tServerParam.ptOprTestCallback = OperativeTestCallbackHandler; //分配操作测试回调

ptCmdTermCallback:

ptCmdTermCallback是客户端的新可选回调。 收到命令终止消息时,将调用此回调。

例:

tClientParam.ptCmdTermCallback = CommandTerminationCallback; //分配CMD终止回调

 

ptErrorCallback:

 

ptErrorCallback是客户端的新可选回调。 收到“LastApplError”消息时,将调用此回调。

例:

tClientParam.ptErrorCallback = ErrorCallbackHandler; //分配错误回调函数

 

ptConnectionStatusCallback:

ptConnectionStatusCallback是客户端的新可选回调。 在远程调用时调用此回调

服务器连接状态更改

例:

tClientParam.ptConnectionStatusCallback = ConnectionStatusCallback; //分配连接状态

回调函数

ptTimestampCallback:

 

ptTimestampCallback是服务器和客户端的新可选回调。 当IEC61850堆栈需要时间戳时,将调用此回调

 

例:

tClientParam.ptTimestampCallback = TimestampCallbackHandler; //分配时间戳回调函数

 

IEC61850_ControlSelectCallback(…)

IEC61850_ControlSelectCallback略有修改,而不是具有iSyncroCheck和iInterlockCheck的单独值,它们已被打包在一个名为ptSelectParameters的新结构中,类型为struct IEC61850_CommandParameters。 此ptSelectParameters结构将包含iSyncroCheck和iInterlockCheck以及bTestMode,因此您可以知道控件何时处于测试模式。

例:

enum eCommandAddCause SelectCallbackHandler(struct IEC61850_DataAttributeID * ptControlID,struct IEC61850_DataAttributeData * ptSelectValue,struct IEC61850_CommandParameters * ptSelectParameters){

enum eCommandAddCause eErrorCode = IEC61850_COMMAND_ERROR_NONE; / *请在此处选择代码* /

return eErrorCode;

}

IEC61850_ControlOperateCallback(…)

IEC61850_ControlOperateCallback略有修改,而不是具有iSyncroCheck和iInterlockCheck的单独值,它们已被打包在一个名为ptOperateParameters的新结构中,类型为struct IEC61850_CommandParameters。 此ptOperateParameters结构将包含iSyncroCheck和iInterlockCheck以及bTestMode,因此您可以知道控件何时处于测试模式。

例:

enum eCommandAddCause OperateCallbackHandler(struct IEC61850_DataAttributeID * ptControlID,struct IEC61850_DataAttributeData * ptOperateValue,struct IEC61850_CommandParameters * ptOperateParameters){

enum eCommandAddCause eErrorCode = IEC61850_COMMAND_ERROR_NONE; / *在这里操作代码* /

return eErrorCode;

}

IEC61850_ControlCancelCallback(…)

IEC61850_ControlCancelCallback稍作修改,包含一个名为ptCancelParameters的新结构,类型为struct IEC61850_CommandParameters。 此ptCancelParameters结构将包含iSyncroCheck,iInterlockCheck和bTestMode。

例:

enum eCommandAddCause CancelCallbackHandler(struct IEC61850_DataAttributeID * ptControlID,struct

IEC61850_CommandParameters * ptCancelParameters)

{

enum eCommandAddCause eErrorCode = IEC61850_COMMAND_ERROR_NONE; / *在这里取消代码* /

return eErrorCode;

}

发表评论