[r74]: / Monitor1 / CODESYS_Control_Win_V3 / Plc Logic / Application / Сontrol / Freq_Control / svnobj  Maximize  Restore  History

Download this file

152 lines (141 with data), 29.3 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
VisuElems.g_ClientManager.BeginIteration();
	IF pClient^.GlobalData.ClientType = VisuElems.Visu_ClientType.WebVisualization THEN
		_VisuFbClientTagDataHelper(pClientData := pClient);
		i := STRING_TO_UINT(_VisuFbClientTagDataHelper.stName);
		IF i > 0 AND i <= FR_NUM THEN
			u := i;
			VisuElems.CURRENTVISU := DEF_VIZU;
		END_IF
	END_IF
END_WHILE
	FOR i := 1 TO Freq_Control.FR_NUM DO // check connection to server
			cTCP_RTU[i].xEnable := FALSE;  // reconnect need in next cycle
			bMBFault[i] := TRUE;
tonClientTCP(IN := TON_recon, PT := T_CL_RST);
FOR i := 1 TO Freq_Control.FR_NUM DO
	cTCP_RTU[i]();
				cTCP_RTU[i].xEnable := FALSE;  // reconnect need in next cycle
				bMBFault[i] := TRUE;
				wErrCount[i] := wErrCount[i] + 1;
				(*IF wErrCount[i] < MB_CRASH THEN
					wErrCount[i] := wErrCount[i] + 1;
				ELSIF wErrCount[i] >= MB_CRASH THEN
					bMBFault[i] := TRUE;
				END_IF*)
			END_IF
		ELSE
			//wErrCount[i] := 0;
			bMBFault[i] := FALSE;
	ELSE // not execute
		IF eReqState[i] = FIRST_REQ THEN
			eReqState[i] := INPUTS_REQ;
			pI^.ReadInputs();
			CONTINUE;
		ELSIF eReqState[i] = INPUTS_REQ THEN
			bTemp[i] := pI^.IsRemote();
			IF bTemp[i] <> bRemote[i] THEN
				eReqState[i] := REMOTE_SET;
				pI^.SetRemote(bTemp[i]);
				CONTINUE;
			ELSE
				eReqState[i] := STATUS_REQ;
		ELSIF eReqState[i] = REMOTE_SET THEN
				eReqState[i] := REMOTE_SETF;
				pI^.SetRemoteF(bTemp[i]);
		ELSIF eReqState[i] = REMOTE_SETF THEN
			eReqState[i] := STATUS_REQ;
			bRemote[i] := bTemp[i];
		ELSIF eReqState[i] = STATUS_REQ THEN
			eReqState[i] := ERROR_REQ;
			pI^.ReadStatus();
		ELSIF eReqState[i] = ERROR_REQ THEN
			pI^.CheckStart();
			IF pI^.GetError() <> NO_ERROR THEN
				bFreqFault[i] := TRUE;
				eReqState[i] := RESET_REQ;
				pI^.ResetDriver();
				bFreqFault[i] := FALSE;
				eReqState[i] := FREQ_GET_REQ;
				pI^.ReadFreqRef();
		ELSIF eReqState[i] = RESET_REQ THEN
			eReqState[i] := FIRST_REQ;
		ELSIF eReqState[i] = FREQ_GET_REQ THEN
			eReqState[i] := FREQ_SET_REQ;
			pI^.ReadFreqAct();
		ELSIF eReqState[i] = FREQ_SET_REQ THEN
			wFreqAct[i] :=  pI^.GetFreqAct();
			wFreqRef[i] :=  pI^.GetFreqRef();
			eReqState[i] := CONTROL_REQ;
		ELSIF eReqState[i] = CONTROL_REQ THEN
			IF i = u THEN // active PUMP group
				IF bRst[i] THEN
					wErrCount[i] := 0;
				END_IF
				IF pI^.StopRotation(NOT bStartKey[i]) OR
						pI^.StartRotation(bStartKey[i]) OR
						pI^.SetFreq(wFreqNew[i]) THEN
					wUserID := DWORD_TO_WORD(VisuElems.CurrentUserGroupId);
					eReqState[i] := STATUS_REQ;
					CONTINUE;
				ELSE
					eReqState[i] := FIRST_REQ;
	IF bEnable[i] AND Ifdrv[i].IsConnected() THEN
{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}
VAR
	
 
 ClientName=<
>.*)
	bRst: 			ARRAY [1...Freq_Control.FR_NUM] OF BOOL;
	tonClientTCP: 	TON;
	i:				UINT;
	wUserID:		WORD := 0;
	Ifdrv: 			ARRAY [1...Freq_Control.FR_NUM] OF IFreqDriver :=[
	sHostAddr: 		ARRAY [1...Freq_Control.FR_NUM] OF STRING := [
		'192.168.10.204', '192.168.10.206', '192.168.10.203', '192.168.10.209', '192.168.10.205',
		'192.168.10.202', '192.168.10.201', '192.168.10.207', '192.168.10.208', '192.168.10.200'];
	eReqState:		ARRAY [1...Freq_Control.FR_NUM] OF REQUEST_STATE := [Freq_Control.FR_NUM(FIRST_REQ)];
	wErrCount:		ARRAY [1...Freq_Control.FR_NUM] OF WORD := [Freq_Control.FR_NUM(0)];
	wFreqNew: 		ARRAY [1...Freq_Control.FR_NUM] OF WORD := [Freq_Control.FR_NUM(0)];
	wFreqAct: 		ARRAY [1...Freq_Control.FR_NUM] OF WORD := [Freq_Control.FR_NUM(0)];
	wFreqRef: 		ARRAY [1...Freq_Control.FR_NUM] OF WORD := [Freq_Control.FR_NUM(0)];
	bStartKey: 		ARRAY [1...Freq_Control.FR_NUM] OF BOOL;
	bMBFault:		ARRAY [1...Freq_Control.FR_NUM] OF BOOL := [Freq_Control.FR_NUM(FALSE)];
	bFreqFault:		ARRAY [1...Freq_Control.FR_NUM] OF BOOL := [Freq_Control.FR_NUM(FALSE)];
	pI:				POINTER TO IFreqDriver;
		TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE];
VAR CONSTANT
	MB_CRASH:		UINT := 12;
	T_CL_RST:		TIME := T#10S; // check connection time
	NO_ERROR:		WORD := 0;
(*
 Modbus TCP Slave Device: 192.168.10.50(60) (
 502)
 04H: READ INPUT REGISTERS
 
 
 
 7...10 (
 06d...09d, 16d...19d)
| 
/
	| 
| 
	| 	
					|				|				| RS485/Ethernet|
|-----------------------------------------------------------------------------------------------|
| 1		| 1		| 1		|ONI M680-33E15-18TIP20	| 192.168.10.74	| 192.168.10.94	| 192.168.10.204|
| 2		| 2		| 2		|ONI M680-33E15-18TIP20	| 192.168.10.76	| 192.168.10.96	| 192.168.10.206|
| 3		| 3		| 3		|ELHART EMD-MINI-110 T	| 192.168.10.73	| 192.168.10.93	| 192.168.10.203|
| 4		| 4		| 4		|
-63-400 
| 192.168.10.79	|	-			|	-			|
| 5		| 5		| 5\1	|ELHART EMD-PUMP-0370 T	| 192.168.10.75	| 192.168.10.95	| 192.168.10.205|
| 6		| 7		| 7		|ELHART EMD-PUMP-110 T	| 192.168.10.72	| 192.168.10.92	| 192.168.10.202|
| 7		| 8		| 8		|ONI M680-33E15-18TIP20	|
192.168.10.71	| 192.168.10.91	| 192.168.10.201|
| 8		| 10	| 5\2	|ELHART EMD-PUMP-0370 T	| 192.168.10.77	|	-			|	-			|
| 9		| 21	| 21\1	|ONI M680-33E15-18TIP20	| 192.168.10.78	|	-			|	-			|
00d: 
 
 
 
 1 (
 
 
 0,01 
)
02d: --||-- 
 3
04d: --||-- 
 5