Vážené TECO.
Lze nějak ovlivnit alokaci dat v zápisníku %X nebo %Y ze vstupních/výstupních modulů pro Foxtrot 2?
Potřeboval bych to z důvodu komunikace dvou PLC přes Epsnet. Za prvé vstupní moduly(IB-1301) mají rezervy pro krátké pulzy a čítače. A za druhé pokud přidám v hardwarové konfiguraci nějaký komunikační modul tak se alokace IO modulů v zápisníku %X posune. A to není žádoucí jelikož pak v druhém automatu nebude komunikace na správném místě.
Předem děkuji za odpověď.
S pozdravem Kortánek Matěj, Microcomp spol. s r.o. Milevsko
Odpovědi 2
U řady Foxtrot přidělována pamět pro vstupní a výstupní moduly automaticky. Je možné vyhradit začátek zóny X a Y volbou překladače v Manažeru projektu > Rezervace absolutních zón. V těchto rezervovaných prostorech může uživatel založit svoje struktury nad kterými má plnou kontrolu. V případě vstupů se pak do těcho struktur stavy vstupů kopírují z dat vracených moduly. V případě výstupů se z těchto struktur kopírují data do dat spracovávaných moduly.
Např.:
VAR_GLOBAL X_B AT %X0.0 : ARRAY [0..99] OF BOOL; //binarni vstupy X_A AT %X100 : ARRAY [0..19] OF REAL; //analogove vstupy Y_B AT %Y0.0 : ARRAY [0..99] OF BOOL; //binarni vystupy Y_A AT %Y100 : ARRAY [0..19] OF REAL; //analogove vystupy END_VAR PROGRAM prgMain VAR END_VAR //prirazeni vstupu X_B[0] := CP2007_IO_IN.DIS.DI0; X_B[1] := CP2007_IO_IN.DIS.DI1; X_B[2] := CP2007_IO_IN.DIS.DI2; X_B[3] := CP2007_IO_IN.DIS.DI3; X_B[4] := CP2007_IO_IN.DIS.DI4; X_B[5] := CP2007_IO_IN.DIS.DI5; X_B[6] := CP2007_IO_IN.DIS.DI6; X_B[7] := CP2007_IO_IN.DIS.DI7; X_B[8] := CP2007_IO_IN.DIS.DI8; X_B[9] := CP2007_IO_IN.DIS.DI9; X_B[10] := _0_IB_1301_IN.DIS.DI0; X_B[11] := _0_IB_1301_IN.DIS.DI1; X_B[12] := _0_IB_1301_IN.DIS.DI2; X_B[13] := _0_IB_1301_IN.DIS.DI3; X_B[14] := _0_IB_1301_IN.DIS.DI4; X_B[15] := _0_IB_1301_IN.DIS.DI5; X_B[16] := _0_IB_1301_IN.DIS.DI6; X_B[17] := _0_IB_1301_IN.DIS.DI7; //-- X_B[20] := _1_IR_1501_IN.DIS.DI0; X_B[21] := _1_IR_1501_IN.DIS.DI1; X_B[22] := _1_IR_1501_IN.DIS.DI2; X_B[23] := _1_IR_1501_IN.DIS.DI3; //analog X_A[0] := CP2007_IO_IN.AI0.ENG; X_A[1] := CP2007_IO_IN.AI1.ENG; X_A[2] := CP2007_IO_IN.AI2.ENG; X_A[3] := CP2007_IO_IN.AI3.ENG; X_A[4] := CP2007_IO_IN.AI4.ENG; X_A[5] := CP2007_IO_IN.AI5.ENG; X_A[6] := CP2007_IO_IN.AI6.ENG; //vykonny program... //...pouziva X_B, X_A, Y_B, Y_A ///... //prirazeni vystupu CP2007_IO_OUT.DOS.DO0 := Y_B[0]; CP2007_IO_OUT.DOS.DO1 := Y_B[1]; CP2007_IO_OUT.DOS.DO2 := Y_B[2]; CP2007_IO_OUT.DOS.DO3 := Y_B[3]; CP2007_IO_OUT.DOS.DO4 := Y_B[4]; CP2007_IO_OUT.DOS.DO5 := Y_B[5]; CP2007_IO_OUT.DOS.DO6 := Y_B[6]; CP2007_IO_OUT.DOS.DO7 := Y_B[7]; CP2007_IO_OUT.DOS.DO8 := Y_B[8]; CP2007_IO_OUT.DOS.DO9 := Y_B[9]; CP2007_IO_OUT.DOS.DO10 := Y_B[10]; CP2007_IO_OUT.DOS.DO11 := Y_B[11]; //--- _1_IR_1501_OUT.DOS.DO0 := Y_B[20]; _1_IR_1501_OUT.DOS.DO1 := Y_B[21]; _1_IR_1501_OUT.DOS.DO2 := Y_B[22]; _1_IR_1501_OUT.DOS.DO3 := Y_B[23]; _1_IR_1501_OUT.DOS.DO4 := Y_B[24]; _1_IR_1501_OUT.DOS.DO5 := Y_B[25]; _1_IR_1501_OUT.DOS.DO6 := Y_B[26]; _1_IR_1501_OUT.DOS.DO7 := Y_B[27]; //analogy CP2007_IO_OUT.AO0.ENG := Y_A[0]; CP2007_IO_OUT.AO1.ENG := Y_A[1]; CP2007_IO_OUT.AO2.ENG := Y_A[2]; CP2007_IO_OUT.AO3.ENG := Y_A[3]; END_PROGRAM
Uživatelské zóny nemusí být jako pole, ale je možné použít i struktury modulů a pak s výhodou přiřazovat celé struktury najednou.
Např.:
VAR_GLOBAL CP2007_BIN AT %X0 : TBIN_15DI; IB1301_BIN AT %X3 : TBIN_12DI; IR1501_BIN AT %X5 : TBIN_4DI; CP2007_AIN AT %X10 : ARRAY [0..13] OF TAI; CP2007_BOUT AT %Y0 : TBIN_13DO; IR1501_BOUT AT %Y2 : TBIN_8DOW; CP2007_AOUT AT %X10 : ARRAY [0..3] OF TAO; END_VAR PROGRAM prgMain2 //prirazeni vstupu CP2007_BIN := CP2007_IO_IN.DIS; IB1301_BIN := _0_IB_1301_IN.DIS; IR1501_BIN := _1_IR_1501_IN.DIS; CP2007_AIN[0] := CP2007_IO_IN.AI0; CP2007_AIN[1] := CP2007_IO_IN.AI1; CP2007_AIN[2] := CP2007_IO_IN.AI2; CP2007_AIN[3] := CP2007_IO_IN.AI3; CP2007_AIN[4] := CP2007_IO_IN.AI4; CP2007_AIN[5] := CP2007_IO_IN.AI5; CP2007_AIN[6] := CP2007_IO_IN.AI6; CP2007_AIN[7] := CP2007_IO_IN.AI7; CP2007_AIN[8] := CP2007_IO_IN.AI8; CP2007_AIN[9] := CP2007_IO_IN.AI9; CP2007_AIN[10] := CP2007_IO_IN.AI10; CP2007_AIN[11] := CP2007_IO_IN.AI11; CP2007_AIN[12] := CP2007_IO_IN.AI12; CP2007_AIN[13] := CP2007_IO_IN.AI13; //vykonny program... //...pouziva CP2007_BIN, IB1301_BIN, IR1501_BIN,... ///... //prirazeni vystupu CP2007_IO_OUT.DOS := CP2007_BOUT; _1_IR_1501_OUT.DOS := IR1501_BOUT; CP2007_AOUT[0] := CP2007_IO_OUT.AO0; CP2007_AOUT[1] := CP2007_IO_OUT.AO1; CP2007_AOUT[2] := CP2007_IO_OUT.AO2; CP2007_AOUT[3] := CP2007_IO_OUT.AO3; END_PROGRAM
Upozornění, verze firmware 5.6 a 5.7 pro Foxtrot 2 a TC800 obsahují chybu, kdy je do prostoru %X0 a až %X128 mapována diagnostika IO i v případě, že je uživatelsky přesunuta rezervací absolutní zóny.
Tento dotaz je vyřešený.