| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435 | <?xml version="1.0" encoding="utf-8"?><TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">  <POU Name="FFU" Id="{cfe90371-682c-484c-8fca-5dcd9ed042b1}" SpecialFunc="None">    <Declaration><![CDATA[FUNCTION_BLOCK FFUVAR_INPUTEND_VARVAR_OUTPUTEND_VARVAR    MBMaster			:ModbusRtuMaster_KL6x22B;  // ModbusRTU Master功能块	STAGE				:INT;	STAGE_BF			:INT;		FFU_ALARM_EN		:UINT;	//报警输出使能	FFU_HSPEED			:UINT;	//转速上限	FFU_LSPEED			:UINT;	//转速下限		DATA_READ			:ARRAY[1..18] OF UINT;	DATA_WRITE			:ARRAY[1..18] OF UINT;		FFU_AI_STATUS		:ARRAY[1..18] OF UINT;	FFU_AI_SPEED_PV		:ARRAY[1..18] OF UINT;		FFU_AO_CTRLWORD		:ARRAY[1..3] OF UINT;	FFU_AO_POWER_ON		:ARRAY[1..18] OF UINT;	FFU_AO_SPEED_SV		:ARRAY[1..18] OF WORD;	FFU_AO_EN			:ARRAY[1..18] OF UINT;		FFU_CTRLWORD_BUFFER	:ARRAY[1..3] OF UINT;	FFU_POWER_ON_BUFFER	:ARRAY[1..18] OF UINT;	FFU_SPEED_SV_BUFFER	:ARRAY[1..18] OF UINT;	FFU_EN_BUFFER			:ARRAY[1..18] OF UINT;		WRITE_EN1			:DINT;	WRITE_EN2			:DINT;	WRITE_EN3			:DINT;	WRITE_EN4			:DINT;	WRITE_EN5			:DINT;	WRITE_EN6			:DINT;	WRITE_EN7			:DINT;		FORCE_WRITE_TIMES	:INT;	FORCE_WRITE			:BOOL;	ERRID				:INT;	TEST1:BOOL;	TEST2:BOOL;	TEST3:BOOL;	TEST4:BOOL;	TEST5:BOOL;	TEST6:BOOL;	TEST7:BOOL;END_VAR]]></Declaration>    <Implementation>      <ST><![CDATA[//AI数据	AI.	FFU1_1_STATUS	:=	FFU_AI_STATUS	[	1	]	;	AI.	FFU1_2_STATUS	:=	FFU_AI_STATUS	[	2	]	;	AI.	FFU1_3_STATUS	:=	FFU_AI_STATUS	[	3	]	;	AI.	FFU1_4_STATUS	:=	FFU_AI_STATUS	[	4	]	;	AI.	FFU1_5_STATUS	:=	FFU_AI_STATUS	[	5	]	;	AI.	FFU1_6_STATUS	:=	FFU_AI_STATUS	[	6	]	;	AI.	FFU2_1_STATUS	:=	FFU_AI_STATUS	[	7	]	;	AI.	FFU2_2_STATUS	:=	FFU_AI_STATUS	[	8	]	;	AI.	FFU2_3_STATUS	:=	FFU_AI_STATUS	[	9	]	;	AI.	FFU2_4_STATUS	:=	FFU_AI_STATUS	[	10	]	;	AI.	FFU2_5_STATUS	:=	FFU_AI_STATUS	[	11	]	;	AI.	FFU2_6_STATUS	:=	FFU_AI_STATUS	[	12	]	;	AI.	FFU3_1_STATUS	:=	FFU_AI_STATUS	[	13	]	;	AI.	FFU3_2_STATUS	:=	FFU_AI_STATUS	[	14	]	;	AI.	FFU3_3_STATUS	:=	FFU_AI_STATUS	[	15	]	;	AI.	FFU3_4_STATUS	:=	FFU_AI_STATUS	[	16	]	;	AI.	FFU3_5_STATUS	:=	FFU_AI_STATUS	[	17	]	;	AI.	FFU3_6_STATUS	:=	FFU_AI_STATUS	[	18	]	;									AI.	FFU1_1_SPEED_PV	:=	FFU_AI_SPEED_PV	[	1	]	;	AI.	FFU1_2_SPEED_PV	:=	FFU_AI_SPEED_PV	[	2	]	;	AI.	FFU1_3_SPEED_PV	:=	FFU_AI_SPEED_PV	[	3	]	;	AI.	FFU1_4_SPEED_PV	:=	FFU_AI_SPEED_PV	[	4	]	;	AI.	FFU1_5_SPEED_PV	:=	FFU_AI_SPEED_PV	[	5	]	;	AI.	FFU1_6_SPEED_PV	:=	FFU_AI_SPEED_PV	[	6	]	;	AI.	FFU2_1_SPEED_PV	:=	FFU_AI_SPEED_PV	[	7	]	;	AI.	FFU2_2_SPEED_PV	:=	FFU_AI_SPEED_PV	[	8	]	;	AI.	FFU2_3_SPEED_PV	:=	FFU_AI_SPEED_PV	[	9	]	;	AI.	FFU2_4_SPEED_PV	:=	FFU_AI_SPEED_PV	[	10	]	;	AI.	FFU2_5_SPEED_PV	:=	FFU_AI_SPEED_PV	[	11	]	;	AI.	FFU2_6_SPEED_PV	:=	FFU_AI_SPEED_PV	[	12	]	;	AI.	FFU3_1_SPEED_PV	:=	FFU_AI_SPEED_PV	[	13	]	;	AI.	FFU3_2_SPEED_PV	:=	FFU_AI_SPEED_PV	[	14	]	;	AI.	FFU3_3_SPEED_PV	:=	FFU_AI_SPEED_PV	[	15	]	;	AI.	FFU3_4_SPEED_PV	:=	FFU_AI_SPEED_PV	[	16	]	;	AI.	FFU3_5_SPEED_PV	:=	FFU_AI_SPEED_PV	[	17	]	;	AI.	FFU3_6_SPEED_PV	:=	FFU_AI_SPEED_PV	[	18	]	;//AO数据比较	FFU_AO_CTRLWORD	[	1	]	:=	AO.	FFU_ALARM_EN	;	FFU_AO_CTRLWORD	[	2	]	:=	AO.	FFU_HSPEED		;	FFU_AO_CTRLWORD	[	3	]	:=	AO.	FFU_LSPEED		;									FFU_AO_POWER_ON	[	1	]	:=	AO.	FFU1_1_POWER_ON	;	FFU_AO_POWER_ON	[	2	]	:=	AO.	FFU1_2_POWER_ON	;	FFU_AO_POWER_ON	[	3	]	:=	AO.	FFU1_3_POWER_ON	;	FFU_AO_POWER_ON	[	4	]	:=	AO.	FFU1_4_POWER_ON	;	FFU_AO_POWER_ON	[	5	]	:=	AO.	FFU1_5_POWER_ON	;	FFU_AO_POWER_ON	[	6	]	:=	AO.	FFU1_6_POWER_ON	;	FFU_AO_POWER_ON	[	7	]	:=	AO.	FFU2_1_POWER_ON	;	FFU_AO_POWER_ON	[	8	]	:=	AO.	FFU2_2_POWER_ON	;	FFU_AO_POWER_ON	[	9	]	:=	AO.	FFU2_3_POWER_ON	;	FFU_AO_POWER_ON	[	10	]	:=	AO.	FFU2_4_POWER_ON	;	FFU_AO_POWER_ON	[	11	]	:=	AO.	FFU2_5_POWER_ON	;	FFU_AO_POWER_ON	[	12	]	:=	AO.	FFU2_6_POWER_ON	;	FFU_AO_POWER_ON	[	13	]	:=	AO.	FFU3_1_POWER_ON	;	FFU_AO_POWER_ON	[	14	]	:=	AO.	FFU3_2_POWER_ON	;	FFU_AO_POWER_ON	[	15	]	:=	AO.	FFU3_3_POWER_ON	;	FFU_AO_POWER_ON	[	16	]	:=	AO.	FFU3_4_POWER_ON	;	FFU_AO_POWER_ON	[	17	]	:=	AO.	FFU3_5_POWER_ON	;	FFU_AO_POWER_ON	[	18	]	:=	AO.	FFU3_6_POWER_ON	;									FFU_AO_SPEED_SV	[	1	]	:=	AO.	FFU1_1_SPEED_SV	;	FFU_AO_SPEED_SV	[	2	]	:=	AO.	FFU1_2_SPEED_SV	;	FFU_AO_SPEED_SV	[	3	]	:=	AO.	FFU1_3_SPEED_SV	;	FFU_AO_SPEED_SV	[	4	]	:=	AO.	FFU1_4_SPEED_SV	;	FFU_AO_SPEED_SV	[	5	]	:=	AO.	FFU1_5_SPEED_SV	;	FFU_AO_SPEED_SV	[	6	]	:=	AO.	FFU1_6_SPEED_SV	;	FFU_AO_SPEED_SV	[	7	]	:=	AO.	FFU2_1_SPEED_SV	;	FFU_AO_SPEED_SV	[	8	]	:=	AO.	FFU2_2_SPEED_SV	;	FFU_AO_SPEED_SV	[	9	]	:=	AO.	FFU2_3_SPEED_SV	;	FFU_AO_SPEED_SV	[	10	]	:=	AO.	FFU2_4_SPEED_SV	;		FFU_AO_SPEED_SV	[	11	]	:=	AO.	FFU2_5_SPEED_SV	;	FFU_AO_SPEED_SV	[	12	]	:=	AO.	FFU2_6_SPEED_SV	;	FFU_AO_SPEED_SV	[	13	]	:=	AO.	FFU3_1_SPEED_SV	;	FFU_AO_SPEED_SV	[	14	]	:=	AO.	FFU3_2_SPEED_SV	;	FFU_AO_SPEED_SV	[	15	]	:=	AO.	FFU3_3_SPEED_SV	;	FFU_AO_SPEED_SV	[	16	]	:=	AO.	FFU3_4_SPEED_SV	;	FFU_AO_SPEED_SV	[	17	]	:=	AO.	FFU3_5_SPEED_SV	;	FFU_AO_SPEED_SV	[	18	]	:=	AO.	FFU3_6_SPEED_SV	;	WRITE_EN1:=MEMCMP(pBuf1:=ADR(FFU_AO_CTRLWORD) , pBuf2:= ADR(FFU_CTRLWORD_BUFFER), n:=SIZEOF(FFU_CTRLWORD_BUFFER) );		WRITE_EN2:=MEMCMP(pBuf1:=ADR(FFU_AO_POWER_ON) , pBuf2:= ADR(FFU_POWER_ON_BUFFER), n:=SIZEOF(FFU_POWER_ON_BUFFER) );		WRITE_EN3:=MEMCMP(pBuf1:=ADR(FFU_AO_SPEED_SV) , pBuf2:= ADR(FFU_SPEED_SV_BUFFER), n:=SIZEOF(FFU_SPEED_SV_BUFFER) );		WRITE_EN4:=MEMCMP(pBuf1:=ADR(FFU_AO_EN) , pBuf2:= ADR(FFU_EN_BUFFER), n:=SIZEOF(FFU_EN_BUFFER) );			IF FORCE_WRITE_TIMES>=1000 	THEN 	FORCE_WRITE:=TRUE;	END_IF(*	MBMaster.WriteRegs(	UnitID:= 1, 	Quantity:= 18, 	MBAddr:= 16#401, 	cbLength:= SIZEOF(FFU_AO_SPEED_SV), 	pMemoryAddr:= ADR(FFU_AO_SPEED_SV), 	Execute:= TEST6,//TRUE, 	Timeout:= T#2000MS,	);	TEST6:=FALSE;	MBMaster.BUSY;	MBMaster.Error;	MBMaster.ErrorId;*)(*	MBMaster.ReadRegs(	UnitID:= 1, 	Quantity:= 18, 	MBAddr:= 257, 	cbLength:= SIZEOF(FFU_AI_STATUS), 	pMemoryAddr:= ADR(FFU_AI_STATUS), 	Execute:= TEST1,//TRUE, 	Timeout:= T#200MS, 	 );	ERRID:= MBMaster.ErrorId;	IF NOT MBMaster.BUSY THEN		TEST1:=FALSE; 		//MBMaster.ReadRegs(Execute:=FALSE,);		//FORCE_WRITE_TIMES:=FORCE_WRITE_TIMES+1;		STAGE:=2;	END_IF*)CASE STAGE OF 	0://首次通讯	//STAGE:=1;		1://读状态	MBMaster.ReadRegs(	UnitID:= 1, 	Quantity:= 18, 	MBAddr:= 257, 	cbLength:= SIZEOF(FFU_AI_STATUS), 	pMemoryAddr:= ADR(FFU_AI_STATUS), 	Execute:= TRUE, 	Timeout:= T#200MS, 	 );	IF NOT MBMaster.BUSY THEN		//TEST1:=FALSE; 		MBMaster.ReadRegs(Execute:=FALSE,);		FORCE_WRITE_TIMES:=FORCE_WRITE_TIMES+1;		STAGE:=2;	END_IF		2://读转速	MBMaster.ReadRegs(	UnitID:= 1, 	Quantity:= 18, 	MBAddr:= 513, 	cbLength:= SIZEOF(FFU_AI_SPEED_PV), 	pMemoryAddr:= ADR(FFU_AI_SPEED_PV), 	Execute:= TRUE, 	Timeout:= T#200MS, 	 );	IF NOT MBMaster.BUSY THEN		//TEST2:=FALSE; 		MBMaster.ReadRegs(Execute:=FALSE,);		FORCE_WRITE_TIMES:=FORCE_WRITE_TIMES+1;		STAGE:=3;	END_IF		3://数值变更判断	IF WRITE_EN1<>0 OR FORCE_WRITE		THEN		STAGE:=4;		ELSIF WRITE_EN2<>0			THEN			STAGE:=5;			ELSIF WRITE_EN3<>0				THEN				STAGE:=6;				ELSIF WRITE_EN4<>0					THEN					STAGE:=7;					ELSIF WRITE_EN5<>0						THEN						STAGE:=8;					ELSE		STAGE:=1;	END_IF		4://写控制字	MBMaster.WriteRegs(	UnitID:= 1, 	Quantity:= 3, 	MBAddr:= 2, 	cbLength:= SIZEOF(FFU_AO_CTRLWORD), 	pMemoryAddr:= ADR(FFU_AO_CTRLWORD), 	Execute:= TRUE, 	Timeout:= T#200MS,	);	IF NOT MBMaster.BUSY THEN 		//TEST4:=FALSE;		MBMaster.WriteRegs(Execute:=FALSE,);		MEMCPY(destAddr:= ADR(FFU_CTRLWORD_BUFFER), srcAddr:= ADR(FFU_AO_CTRLWORD), n:= SIZEOF(FFU_AO_CTRLWORD));		IF NOT FORCE_WRITE		THEN		STAGE:=1;		ELSE		STAGE:=5;		END_IF			END_IF		5://写启停	MBMaster.WriteRegs(	UnitID:= 1, 	Quantity:= 18, 	MBAddr:= 769, 	cbLength:= SIZEOF(FFU_AO_POWER_ON), 	pMemoryAddr:= ADR(FFU_AO_POWER_ON), 	Execute:= TRUE, 	Timeout:= T#200MS,	);	IF NOT MBMaster.BUSY THEN 		//TEST5:=FALSE;		MBMaster.WriteRegs(Execute:=FALSE,);		MEMCPY(destAddr:= ADR(FFU_POWER_ON_BUFFER), srcAddr:= ADR(FFU_AO_POWER_ON), n:= SIZEOF(FFU_AO_POWER_ON));		IF NOT FORCE_WRITE		THEN		STAGE:=1;		ELSE		STAGE:=6;		END_IF			END_IF		6://写转速	MBMaster.WriteRegs(	UnitID:= 1, 	Quantity:= 18, 	MBAddr:= 1025, 	cbLength:= SIZEOF(FFU_AO_SPEED_SV), 	pMemoryAddr:= ADR(FFU_AO_SPEED_SV), 	Execute:= TRUE, 	Timeout:= T#200MS,	);	IF NOT MBMaster.BUSY THEN 		//TEST6:=FALSE;		MBMaster.WriteRegs(Execute:=FALSE,);		MEMCPY(destAddr:= ADR(FFU_SPEED_SV_BUFFER), srcAddr:= ADR(FFU_AO_SPEED_SV), n:= SIZEOF(FFU_AO_SPEED_SV));		IF NOT FORCE_WRITE		THEN		STAGE:=1;		ELSE		STAGE:=7;		END_IF			END_IF		7://写使能	MBMaster.WriteRegs(	UnitID:= 1, 	Quantity:= 18, 	MBAddr:= 1281, 	cbLength:= SIZEOF(FFU_AO_EN), 	pMemoryAddr:= ADR(FFU_AO_EN), 	Execute:= TRUE, 	Timeout:= T#200MS,	);	IF NOT MBMaster.BUSY THEN 		//TEST7:=FALSE;		MBMaster.WriteRegs(Execute:=FALSE,);		MEMCPY(destAddr:= ADR(FFU_EN_BUFFER), srcAddr:= ADR(FFU_AO_EN), n:= SIZEOF(FFU_AO_EN));		STAGE:=1;		IF FORCE_WRITE		THEN		FORCE_WRITE_TIMES:=0;		FORCE_WRITE:=FALSE;		END_IF			END_IF	END_CASE]]></ST>    </Implementation>    <LineIds Name="FFU">      <LineId Id="607" Count="0" />      <LineId Id="963" Count="36" />      <LineId Id="962" Count="0" />      <LineId Id="645" Count="0" />      <LineId Id="608" Count="0" />      <LineId Id="229" Count="0" />      <LineId Id="646" Count="3" />      <LineId Id="1000" Count="28" />      <LineId Id="1333" Count="0" />      <LineId Id="1030" Count="6" />      <LineId Id="705" Count="0" />      <LineId Id="332" Count="0" />      <LineId Id="223" Count="1" />      <LineId Id="341" Count="3" />      <LineId Id="347" Count="0" />      <LineId Id="354" Count="1" />      <LineId Id="1196" Count="0" />      <LineId Id="356" Count="0" />      <LineId Id="225" Count="0" />      <LineId Id="1199" Count="1" />      <LineId Id="1198" Count="0" />      <LineId Id="1275" Count="0" />      <LineId Id="1334" Count="1" />      <LineId Id="1281" Count="7" />      <LineId Id="1277" Count="0" />      <LineId Id="1366" Count="3" />      <LineId Id="1278" Count="0" />      <LineId Id="1348" Count="0" />      <LineId Id="1350" Count="14" />      <LineId Id="1349" Count="0" />      <LineId Id="1279" Count="0" />      <LineId Id="1201" Count="0" />      <LineId Id="158" Count="0" />      <LineId Id="217" Count="2" />      <LineId Id="170" Count="0" />      <LineId Id="385" Count="7" />      <LineId Id="382" Count="1" />      <LineId Id="1342" Count="0" />      <LineId Id="396" Count="0" />      <LineId Id="1193" Count="0" />      <LineId Id="399" Count="0" />      <LineId Id="397" Count="0" />      <LineId Id="400" Count="0" />      <LineId Id="402" Count="10" />      <LineId Id="1338" Count="0" />      <LineId Id="413" Count="0" />      <LineId Id="1194" Count="0" />      <LineId Id="415" Count="0" />      <LineId Id="401" Count="0" />      <LineId Id="384" Count="0" />      <LineId Id="418" Count="0" />      <LineId Id="1037" Count="14" />      <LineId Id="1058" Count="1" />      <LineId Id="220" Count="0" />      <LineId Id="432" Count="0" />      <LineId Id="434" Count="0" />      <LineId Id="1060" Count="9" />      <LineId Id="1343" Count="0" />      <LineId Id="1070" Count="1" />      <LineId Id="1202" Count="4" />      <LineId Id="1077" Count="0" />      <LineId Id="433" Count="0" />      <LineId Id="818" Count="1" />      <LineId Id="1078" Count="9" />      <LineId Id="1344" Count="0" />      <LineId Id="1088" Count="1" />      <LineId Id="1207" Count="4" />      <LineId Id="1095" Count="0" />      <LineId Id="448" Count="0" />      <LineId Id="475" Count="1" />      <LineId Id="1096" Count="9" />      <LineId Id="1345" Count="0" />      <LineId Id="1106" Count="1" />      <LineId Id="1212" Count="4" />      <LineId Id="1113" Count="0" />      <LineId Id="478" Count="0" />      <LineId Id="495" Count="0" />      <LineId Id="513" Count="0" />      <LineId Id="1114" Count="9" />      <LineId Id="1347" Count="0" />      <LineId Id="1124" Count="1" />      <LineId Id="1226" Count="0" />      <LineId Id="1217" Count="0" />      <LineId Id="1220" Count="0" />      <LineId Id="1227" Count="0" />      <LineId Id="1221" Count="0" />      <LineId Id="1131" Count="1" />      <LineId Id="605" Count="0" />      <LineId Id="1229" Count="0" />      <LineId Id="1223" Count="0" />      <LineId Id="1222" Count="0" />    </LineIds>  </POU></TcPlcObject>
 |