123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453 |
- <?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 FFU
- VAR_INPUT
- END_VAR
- VAR_OUTPUT
- END_VAR
- VAR
- 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_LSPEED ;
- FFU_AO_CTRLWORD [ 3 ] := AO. FFU_HSPEED ;
-
- 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 ;
-
- FFU_AO_EN [ 1 ] := AO. FFU1_1_EN ;
- FFU_AO_EN [ 2 ] := AO. FFU1_2_EN ;
- FFU_AO_EN [ 3 ] := AO. FFU1_3_EN ;
- FFU_AO_EN [ 4 ] := AO. FFU1_4_EN ;
- FFU_AO_EN [ 5 ] := AO. FFU1_5_EN ;
- FFU_AO_EN [ 6 ] := AO. FFU1_6_EN ;
- FFU_AO_EN [ 7 ] := AO. FFU2_1_EN ;
- FFU_AO_EN [ 8 ] := AO. FFU2_2_EN ;
- FFU_AO_EN [ 9 ] := AO. FFU2_3_EN ;
- FFU_AO_EN [ 10 ] := AO. FFU2_4_EN ;
- FFU_AO_EN [ 11 ] := AO. FFU2_5_EN ;
- FFU_AO_EN [ 12 ] := AO. FFU2_6_EN ;
- FFU_AO_EN [ 13 ] := AO. FFU3_1_EN ;
- FFU_AO_EN [ 14 ] := AO. FFU3_2_EN ;
- FFU_AO_EN [ 15 ] := AO. FFU3_3_EN ;
- FFU_AO_EN [ 16 ] := AO. FFU3_4_EN ;
- FFU_AO_EN [ 17 ] := AO. FFU3_5_EN ;
- FFU_AO_EN [ 18 ] := AO. FFU3_6_EN ;
- 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="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="1419" Count="0" />
- <LineId Id="1421" Count="16" />
- <LineId Id="1420" Count="0" />
- <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>
|