Acasă > forum > LogicLab informații despre mediul de dezvoltare > Probleme de compilare
- Acest subiect are 5 răspunsuri, 4 participanți și a fost actualizat ultima dată 3 ani, acum 6 luni da Sergio Bertana.
-
AutorPost
-
Octombrie 30, 2018 la 10: 27 am #45721Paulparticipant
Dacă îmi compilez aplicația care utilizează FB FileMemoryDump cu Biblioteca Logiclab 4.0 + eLLabLogLib_B200 Obținerea rezultatului:
compilare: OK.
compilare cu simulator activat:FileMemoryDump (286) - eroare G1546: Accumulator => Conversia unui număr într-un șir
FileMemoryDump (286) - eroare G0057: JMPCN => Este necesar un operand booleanCu biblioteca Logiclab 4.0 + eLLabLogLib_B310 primesc rezultatul:
compilare: OK.
compilare cu simulator activat: eroare dar fără descrierea erorii.Cu biblioteca Logiclab 5.0 + eLLabLogLib_B200 primesc rezultatul:
Fișiere program (x86)Elsist\ LogicLab \ Libraries \ eLLabLogLib_B200.plclib (286) - eroare G1799: $$ acumulator $$ => Conversia unui șir într-un număr
Cu biblioteca Logiclab 5.0 + eLLabLogLib_B310:
Trebuie să modific codul pentru a respecta restricțiile din declarația de înregistrare.
rezultatul compilației: OK.
rezultatul finalizat cu activarea simulatorului:Fișiere program (x86)Elsist\ LogicLab5 \ Libraries \ eLLabLogLib_B310.plclib (88) - eroare G0129: NULL => Comparație între referință și non-referință
Fișiere program (x86)Elsist\ LogicLab5 \ Libraries \ eLLabLogLib_B310.plclib (280) - eroare G0129: NULL => Comparație între referință și non-referințăProbleme similare apar atunci când se utilizează versiunile eLLabUtyLib_C040 și C060 ale modbusMaster. Mă întreb dacă este o problemă la simulator?
Octombrie 30, 2018 la 10: 37 am #45728Sergio BertanaAdministrator al forumuluiÎn evoluția versiunilor LogicLab ca urmare a variațiilor specificațiilor IEC61131, au fost introduse restricții mai mari privind controlul codului. Și se poate întâmpla ca compilatorul pentru țintă să fie mai puțin restrictiv decât compilatorul pentru simulator sau invers. De exemplu, eroarea JMPCN ar putea apărea din cod:
IF (Var) THEN …. END_IF;
Unde Var nu este un BOOL. Acest lucru a fost acceptat înainte, apoi nu mai era. Acum nu voi lista toate restricțiile care au fost adăugate de-a lungul timpului. Să spunem că, ca regulă bună, este întotdeauna să folosiți cea mai recentă versiune a LogicLab cu cea mai recentă versiune a bibliotecilor.
Dar din moment ce suntem falși, ar putea fi, de asemenea, că în unele funcții și / sau FB-uri ale unei biblioteci există încă condiții care determină apariția avertismentelor sau rău de erori de compilare. De îndată ce suntem informați, le vom rezolva.
Notă, bibliotecile sunt de obicei testate pe ținta reală, este posibil ca avertismentele și erorile să fie generate în simulator care nu apar în țintă. În plus, pe simulator pot fi utilizate doar câteva funcții și FB-uri.
Noiembrie 21, 2018 la 1: 08 pm #45899Alessandro CampodonicoparticipantBună seara, m-am trezit cu o problemă similară după actualizarea la LogicLab 5 în compilare cu EMailSend FB, aceasta este eroarea pe care mi-o dă în compilare:
GESTIONE_MAIL(35) – errore G1799: $$Accumulator$$ => Conversione di una stringa in un numero
și aceasta este linia de comandă „jignitoare”:
i:=TO_UINT(SysVarsnprintf(Subject, SIZEOF(Subject), ‘SANIBOX: %s’, STRING_TYPE, ADR(NOME_SANIBOX)));
În cazul în care variabila "name_sanibox" este o variabilă globală STRING 32 trecută de panoul HMI care îmi arată numele HMI de fapt. Variabila „Subiect” este o variabilă de șir local din PROGRAMUL „e-mail_management”. Variabila „i” este un INT întotdeauna local.
linia de comandă pe care am copiat-o din exemplul dvs. de utilizare a e-mailului FB și adaptat nevoilor mele. Apoi conectez variabila „subiect” la intrarea e-mailului FB trimit astfel
MAIL.Subject:=ADR(Subject);
Ceea ce aș dori să obțin este în e-mailurile pe care sistemul le trimite, partea obiectului este SANIBOX: „NOME_SANIBOX” deci, pe baza numelui pe care l-am setat pe diferitele mașini, voi avea e-mailuri împărțite în subiect după nume.
Cu LogicLab 4 totul a funcționat.
Noiembrie 21, 2018 la 1: 18 pm #45905Sergio BertanaAdministrator al forumuluiDupă cum am spus mai devreme, au fost introduse mai multe restricții privind controlul codului, în cazul dumneavoastră prototipul funcției SysVarsnprintf (Vedeți-o prin poziționarea mouse-ului pe numele funcției) este:
(@USINT, UDINT, STRING, USINT, UDINT)
Deci, primul parametru trebuie să fie o adresă, trecând acum obiectul Subiect cu LogicLab4, întrucât era o variabilă șir pe care o considera în mod implicit adresa, acum trebuie să o specificați. Deci, trebuie să scrieți:
i:=TO_UINT(SysVarsnprintf(ADR(Subject), SIZEOF(Subject), ‘SANIBOX: %s’, STRING_TYPE, TO_UDINT(ADR(NOME_SANIBOX))));
Octombrie 7, 2020 la 8: 32 am #57827MarcoooparticipantÎmi compilez programul și primesc această eroare:
HWgHTemp485.File – error A4108: eFILEP => Base object not found
Ce semnificație are?
Octombrie 7, 2020 la 8: 42 am #57830Sergio BertanaAdministrator al forumuluiOdată cu trecerea la versiunea XUnified (Vezi articolul) am schimbat numele unor obiecte (Funcții și FB-uri) și unele declarații de tip, în cazul dvs. indicatorul de fișier să fie FILEP a devenit eFILEP.
Probabil că creați un program pentru un sistem XTarget12, dar utilizați FB HWgHTemp485 luată din bibliotecă eLLabUtyLib a noii distribuții a LogicLab care este deja convertită pentru utilizare pe sistemele XUnified.
Pentru aceste cazuri și pentru toate cazurile în care doriți să utilizați exemplele manualului online de pe sistemele XTarget12 am furnizat o bibliotecă specială, trebuie să introduceți biblioteca în proiectul dvs. eLLabXTargetAdjLib.
-
AutorPost
- Trebuie să fiți autentificat pentru a răspunde la acest subiect.