介绍
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;
}