TwinCAT3 hibaüzenet - Invalid input mapping

3 views
Skip to first unread message

Zsolt Horváth

unread,
Jul 17, 2024, 7:32:44 AM7/17/24
to plc_...@googlegroups.com

  Sziasztok!

  TwinCAT3-ban dolgozok egy projekten, az alábbi hibaüzenetet kapom:  Invalid input mapping. A hibaüzenet megjelenése előtt még minden jól működött. Sok új változót vettem fel a MAIN program VAR részében, ekkor jelent meg a hiba és egyszerűen nincs ötletem, hogy mi okozza.


  Horváth Zsolt
Error_InvalidInputMapping.png

József Bálint

unread,
Jul 17, 2024, 11:54:01 AM7/17/24
to plc_...@googlegroups.com
Szasza
pasz :-)
én kitörölném a linkelést, és kisebb nagyobb lépésenként újra tenném, vagy lépésenként törölném ki :-)
ezt fordításnál írja ki, vagy amikor elkezd futni a plc?
megnézném nincs e benne szemét, a PLC instance résznél
ha semmi, akkor boot mappa törlése a célhardveren

--
Azért kapta ezt az üzenetet, mert feliratkozott a Google Csoportok „PLC programozók, alkalmazók, hozzáértők és laikusok” csoportjára.
Az erről a csoportról és az ahhoz kapcsolódó e-mailekről való leiratkozáshoz küldjön egy e-amailt a(z) plc_lista+...@googlegroups.com címre.
Ha szeretné megtekinteni ezt a beszélgetést az interneten, látogasson el ide: https://groups.google.com/d/msgid/plc_lista/CAG-YnWD9GjaSZ1U8vd5JZ0j2GPeuzzYuxQehy55vq__gGakBKA%40mail.gmail.com.

Horváth Zsolt

unread,
Jul 18, 2024, 2:56:15 AM7/18/24
to plc_...@googlegroups.com

  Na, én is pont ezt csináltam! :) Tehát volt a projekt fájl, ami még jól működött. Az utóbbi 1-2 napban annyit változtattam rajta, hogy kijelöltem a szerkesztőben, hogy a mért adatok közül melyeket lehessen az IO memóriából (vagy mit tudom én, hogy honnan) kiolvasni. Rengeteg változó került be így az IO területre... amikor végeztem a felvételükkel, akkor próbáltam ki az IPC-n és onnantól jelentkezett a probléma.
  Szerencsére naponta többször is készítek mentéseket, így vissza tudtam keresni a legutolsó, még jól működő projektet. Ott még csak kevés változó volt az IO területre irányítva. Elkezdtem újra felvenni a változókat az IO területre és kis lépésekben haladva, mindig megpróbáltam letölteni, hogy mikor jelentkezik a hiba. 
  A mellékelt képen látható, hogy amikor kijelölöm a következő változócsoportot (a 'PDO assignment' ablakban), a csoport változóinak megfelelően a 'Sync manager' ablakban nő az 'Inputs' értéke... a próbálgatások alapján én arra tudok gondolni, hogy túllépek egy bizonyos memória mennyiséget a kijelöléssel és már nem férnek el az IO memóriában az adatok...  (Kijelölöm bármelyik csoportot... az Inputs felmegy  mondjuk 243 fölé, bejön a hiba... kiveszek egy-két csoportot, az Inputs lemegy 240 byte alá, a hiba eltűnik.)

  A másik dolog, ami miatt erre gondolok - bár lehet, hogy az én logikámban van a hiba - hogy ha lenne elegendő IO memória az összes mért jellemző kiolvasásához, akkor nem kellene kijelölgetni, hogy melyik csoportokat szeretném az IO területen látni. (Persze az is lehet, hogy simán ez csak egy lehetőség lenne arra, hogy ne legyen feleslegesen használva túl sok memória és az összes csoport kijelölésével is elegendő lenne az IO memória terület, ezt nem tudom.)

  Nos, ha esetleg igazam van, tehát egyszerűen nem fér el minden jellemző az IO memóriában, akkor sejtésem szerint EtherCAT kiolvasásokkal akkor is elérhetőek a mért adatok, csak akkor FB_EcCoeSdoRead-et kell használni. Jól sejtem?

  A hiba mindig a letöltés után jelentkezik, a fordításkor még minden rendben van. 

  Na, ahogy ma újult erővel belevágtam, egy másik hibajelzést kaptam... :( Lásd mellékelt második képen...

  (Gyorsan kivettem még egy jelölést, így az Inputs értéke 222-re csökkent és ez a második hiba eltűnt...  pfff...)



   Horváth Zsolt


-------- Eredeti levél --------

Feladó: József Bálint <torkoly...@gmail.com>
Dátum: 2024 július 17 17:54:06
Tárgy: Re: TwinCAT3 hibaüzenet - Invalid input mapping
Ha szeretné megtekinteni ezt a beszélgetést az interneten, látogasson el ide: https://groups.google.com/d/msgid/plc_lista/CAAWMjYGCDbDvSuzS1SskUv-gMBi8hXC5wgp36hb_2g9oWrp4zw%40mail.gmail.com.

PDOAssignment.png
Error_AdsWriteCon.png

Horváth Zsolt

unread,
Jul 18, 2024, 4:51:39 AM7/18/24
to plc_...@googlegroups.com

  Közben a magyar Beckhoff megadta a megoldást... jól sejtettem: van egy memória limit, azt léptem túl. A manual a 162-ik oldalon hivatkozik rá. Mondjuk a TwinCAT ezt azért ellenőrizhetné és adhatna hiba- vagy figyelmeztető jelzést... vagy eleve megtilthatná, hogy rosszul legyen beállítva ez az érték... :-/


   Horváth Zsolt


-------- Eredeti levél --------

Feladó: József Bálint <torkoly...@gmail.com>
Dátum: 2024 július 17 17:54:06
Tárgy: Re: TwinCAT3 hibaüzenet - Invalid input mapping

Ha szeretné megtekinteni ezt a beszélgetést az interneten, látogasson el ide: https://groups.google.com/d/msgid/plc_lista/CAAWMjYGCDbDvSuzS1SskUv-gMBi8hXC5wgp36hb_2g9oWrp4zw%40mail.gmail.com.

PDOLimitManualPage162.png

József Bálint

unread,
Jul 19, 2024, 2:24:40 AM7/19/24
to plc_...@googlegroups.com
Szasza

ez ilyen ez :-) általában ilyen jellegű hibaüzenetek jönnek :-)
5 éve használom, de mindent egybevéve nekem nagyon bevált.
és még ebbe a hibába nem ütköztem :-)

ü
J

Ha szeretné megtekinteni ezt a beszélgetést az interneten, látogasson el ide: https://groups.google.com/d/msgid/plc_lista/A2toQ.phcwwYICexgX.QOnuyw1VjrbyFBErlBHe%40freemail.hu.

Horváth Zsolt

unread,
Jul 19, 2024, 4:44:50 AM7/19/24
to plc_...@googlegroups.com

  Szia!

 Amúgy nem rossz rendszer ez, csak szokni kell...

 Abban tudsz esetleg még segíteni, hogy hogyan lehet egyszerre több adatot kiolvasni FB_EcCoESdoRead használatával?
  Így használom most:

ECatReadValues(
sNetId:='10.42.84.62.2.1' ,
nSlaveAddr:=1001 ,
// nSubIndex:=16#11 ,
// nIndex:=16#601A ,
nSubIndex:=nTestSubIndex ,
nIndex:=nTestIndex ,  
pDstBuf:=ADR(rRdData) ,
cbBufLen:= SIZEOF(rRdData),
bExecute:= ECatRdTmr.q,
tTimeout:= T#2S,
bBusy=> bBusy,
bError=> bError,
nErrId=> nErrId,
cbRead=> cbRead);

  szépen be is olvassa a megcímzett változót, viszont elvileg ott van egymás mellett több ugyanilyen típusú elem is. Be lehet ezeket valahogyan egyszerre is olvasni? ) Próbáltam egy tömbbe szervezni az olvasást, de akkor is csak egy elemet kaptam vissza.
  Lásd a mellékelt képet pl. 0x6008 : 11, 12 és 13. adatokat. (A program minta nem erre a címre van írva, de ezzel is próbálkoztam, tehát nem azért nem működik, mert nem jó a cím...)


   Horváth Zsolt



-------- Eredeti levél --------

Feladó: József Bálint <torkoly...@gmail.com>
Dátum: 2024 július 19 08:24:44
Ha szeretné megtekinteni ezt a beszélgetést az interneten, látogasson el ide: https://groups.google.com/d/msgid/plc_lista/CAAWMjYFqqoxbhGqziqto_xjZZ38LHbGKUss0asAd4dPvXXYzdw%40mail.gmail.com.

József Bálint

unread,
Jul 19, 2024, 8:38:31 AM7/19/24
to plc_...@googlegroups.com
Szasza

sztem a méretmegadásnál nem mindegy hogy adod meg, tömbnél hirtelen nem tudom hogy kell, de gondolom így, egy fájlírásnál egy kellett:
 record : ARRAY[0..65538] OF BYTE;
pBuffer := ADR( record ), cbBuffer := SIZEOF( record )

Életemben egyszer használtam ilyet, így nézett ki a két sor írása a kijelzős modulra (EL6090):
CASE i OF
10:
FB_EcCoESdoWrite(
sNetId:=AmsNetId ,
nSlaveAddr:=Port ,
nSubIndex:=16#11 ,
nIndex:=16#8008 ,
pSrcBuf:=ADR(strLine_1) ,
cbBufLen:=LEN(strLine_1) ,
bExecute:=TRUE ,
tTimeout:= ,
bBusy=> ,
bError=>bError ,
nErrId=>nErrId
);
IF NOT FB_EcCoESdoWrite.bBusy THEN
IF FB_EcCoESdoWrite.bError THEN
i:=1000;
ELSE
i:=20;
END_IF
FB_EcCoESdoWrite(bExecute:=FALSE);
END_IF
20:
FB_EcCoESdoWrite(
sNetId:=AmsNetId ,
nSlaveAddr:=Port ,
nSubIndex:=16#12 ,
nIndex:=16#8008 ,
pSrcBuf:=ADR(strLine_2) ,
cbBufLen:=LEN(strLine_2) ,
bExecute:=TRUE ,
tTimeout:= ,
bBusy=> ,
bError=>bError ,
nErrId=>nErrId );
IF NOT FB_EcCoESdoWrite.bBusy THEN
IF FB_EcCoESdoWrite.bError THEN
i:=1000;
ELSE
i:=30;
END_IF
FB_EcCoESdoWrite(bExecute:=FALSE);
END_IF
30:
FB_EcCoESdoReadEx(
sNetId:=AmsNetId ,
nSlaveAddr:=Port ,
nSubIndex:=16#11 ,
nIndex:=16#F600,
pDstBuf:=ADR(nOpertingTime) ,
cbBufLen:=4 ,
bExecute:=TRUE ,
tTimeout:= ,
bCompleteAccess:= ,
bBusy=> ,
bError=> ,
nErrId=>
);
IF NOT FB_EcCoESdoReadEx.bBusy THEN
IF FB_EcCoESdoReadEx.bError THEN
i:=1000;
ELSE
i:=300;
END_IF
FB_EcCoESdoReadEx(bExecute:=FALSE);
END_IF
300:
IF bAutoUpdate THEN
i:=10;
ELSE
i:=0;
END_IF
END_CASE

Ha szeretné megtekinteni ezt a beszélgetést az interneten, látogasson el ide: https://groups.google.com/d/msgid/plc_lista/A2uJzg.NkhdH5KlHV2G.YHqjPxMVqOGzXzkc4vb%40freemail.hu.
Reply all
Reply to author
Forward
0 new messages