发表于:2006-11-21 12:17:00
楼主
IFIX切换回主节点代码
IFIX冗余时,当主节点停机,客户端将自动切换到备份节点。一旦主节点重新启用,可以运用一下代码将IFIX切换回主节点。
此段代码可以加到 调度、定时器、按钮等。
添加步骤:
1. 打开VBA,在Project_User中插入一个新的模块。
2. 将代码加到模块中。
3. 在合适的地方添加调用的代码
――――――――――――――――模块中代码――――――――――――――――――
Public Function GetLocalNode() As String
On Error Resume Next
Dim strMyName As String * 9
Dim iErr As Integer
Dim lngLength As Long
iErr = eda_get_my_physical_name(strMyName)
lngLength = InStr(1, strMyName, Chr(0)) – 1
If lngLength > 0 Then
strMyName = Left(strMyName, lngLength)
GetLocalNode = Trim(strMyName)
End If
End Function
Public Sub FailOverToPrimary(ScadaID As String)
'ScadaID表示网络节点名
Dim strMyName As String '表示当前节点
Dim strActiveNode As String
Dim vActNode As Variant '表示活动节点 (0 = 主节点, > 1 = 备节点)
Dim vPrimStat
Dim strPrimStatus As String '表示主节点状态 (例如: "OK")
On Error Resume Next
strMyName = GetLocalNode '获得节点名
strActiveNode = "Fix32." & strMyName & ".nsd.f_curactivenode_" & ScadaID
vActNode = ReadValue(strActiveNode)
If vActNode <> 0 Then '当活动节点是备节点时,切换
strPrimStatus = "Fix32." & strMyName & ".nsd.a_primarystatus_" & ScadaID
vPrimStat = ReadValue(strPrimStatus)
If vPrimStat = "OK" Then writevalue "0", strActiveNode
End If
End Sub
―――――――――――以下是调用代码,以定时器为例―――――――――――――
Private Sub FixTimer3_OnTimeOut(ByVal lTimerId As Long)
FailOverToPrimary "0"
End Sub
――――――――――――――――――――――――――――――――――――――――
[color=#FF0000]以上代码由杭州集益科技有限公司提供,转载请复制此段内容!
杭州集益科技网址 www.jiyitech.com 下载中心有丰富的IFIX资料!
IFIX交流群:21259526 这里有专业的IFIX技术支持,欢迎加入!
在此群中有杭州集益科技不定期的网络培训!![/color]