Startseite > Forum > LogicLab-Entwicklungsumgebungsinformationen > Kompilierungsprobleme
- Dieses Thema hat 5 Antworten, 4 Teilnehmer und wurde zuletzt aktualisiert 3 Jahre, 6 Monate da Sergio Bertana.
-
AutorPost
-
Oktober 30, 2018 bei 10: 27 #45721PaulPartecipante
Wenn ich meine Anwendung mit der FB kompiliere FileMemoryDump mit der Bibliothek Logiclab 4.0+eLLabLogLib_B200 erhalte ich das Ergebnis:
Zusammenstellung: OK.
Kompilierung mit aktiviertem Simulator:FileMemoryDump(286) – Fehler G1546: Akkumulator => Konvertieren einer Zahl in eine Zeichenfolge
FileMemoryDump(286) – Fehler G0057: JMPCN => Boolescher Operand erforderlichMit der Bibliothek Logiclab 4.0+eLLabLogLib_B310 erhalte ich das Ergebnis:
Zusammenstellung: OK.
Kompilierung mit aktiviertem Simulator: Fehler, aber keine Fehlerbeschreibung.Mit der Bibliothek Logiclab 5.0+eLLabLogLib_B200 erhalte ich das Ergebnis:
\Programme (x86)\Elsist\LogicLab\Libraries\eLLabLogLib_B200.plclib(286) – Fehler G1799: $$Accumulator$$ => Konvertieren einer Zeichenfolge in eine Zahl
Mit der Bibliothek Logiclab 5.0+eLLabLogLib_B310:
Ich muss den Code ändern, um Einschränkungen bei der Deklaration von Zeigern zu berücksichtigen.
Kompilierungsergebnis: OK.
Kompilierungsergebnis bei aktiviertem Simulator:\Programme (x86)\Elsist\LogicLab5\Libraries\eLLabLogLib_B310.plclib(88) – Fehler G0129: NULL => Vergleich zwischen Referenz und Nichtreferenz
\Programme (x86)\Elsist\LogicLab5\Libraries\eLLabLogLib_B310.plclib(280) – Fehler G0129: NULL => Vergleich zwischen Referenz und NichtreferenzÄhnliche Probleme treten bei den Versionen eLLabUtyLib_C040 und C060 von modbusMaster auf. Ich frage mich, ob es sich um ein Simulatorproblem handelt.
Oktober 30, 2018 bei 10: 37 #45728Sergio BertanaAdministrator des ForumsIm Zuge der Weiterentwicklung der LogicLab-Versionen wurden auch aufgrund von Änderungen an den IEC61131-Spezifikationen größere Einschränkungen bei der Codesteuerung eingeführt. Und es kann vorkommen, dass der Compiler für das Ziel weniger restriktiv ist als der Compiler für den Simulator oder umgekehrt. Der JMPCN-Fehler könnte beispielsweise aus folgendem Code entstehen:
IF (Var) THEN …. END_IF;
wo Var es ist kein BOOL. Früher wurde das akzeptiert, dann ist es das nicht mehr. Jetzt werde ich nicht alle Einschränkungen auflisten, die im Laufe der Zeit hinzugefügt wurden. Nehmen wir an, als Faustregel gilt: Verwenden Sie immer die neueste Version von LogicLab mit der neuesten Version der Bibliotheken.
Aber da wir uns irren, kann es auch sein, dass es in einigen Funktionen und/oder FBs einer Bibliothek immer noch Bedingungen gibt, die das Auftreten von Warnungen oder, schlimmer noch, Kompilierungsfehlern bestimmen. Sobald sie uns gemeldet werden, werden wir sie beheben.
Beachten Sie, dass die Bibliotheken normalerweise auf dem realen Ziel getestet werden. Es kann sein, dass der Simulator Warnungen und Fehler generiert, die im Ziel nicht angezeigt werden. Darüber hinaus sind auf dem Simulator nur einige Funktionen und FBs nutzbar.
November 21, 2018 bei 1: 08 pm #45899Alessandro CampodonicoPartecipanteGuten Abend, ich hatte ein ähnliches Problem, nachdem ich beim Kompilieren mit dem EMailSend FB auf LogicLab 5 aktualisiert hatte. Dies ist der Fehler, den ich beim Kompilieren bekomme:
GESTIONE_MAIL(35) – errore G1799: $$Accumulator$$ => Conversione di una stringa in un numero
und dies ist die "beleidigende" Befehlszeile:
i:=TO_UINT(SysVarsnprintf(Subject, SIZEOF(Subject), ‘SANIBOX: %s’, STRING_TYPE, ADR(NOME_SANIBOX)));
Wobei die Variable "name_sanibox" eine globale Variable STRING 32 ist, die vom HMI-Panel übergeben wird und die mir tatsächlich den Namen des HMI anzeigt. Die Variable "Betreff" ist eine lokale Zeichenfolgenvariable im PROGRAMM "email_management". Die Variable "i" ist eine INT, die immer lokal ist.
Die Befehlszeile, die ich aus Ihrem Beispiel für die Verwendung des FB-E-Mail-Endes kopiert und an meine Bedürfnisse angepasst habe. Dann verbinde ich die Variable "Betreff" also mit dem Eingang des E-Mail-FB
MAIL.Subject:=ADR(Subject);
Was ich erhalten möchte, ist in den E-Mails, die das System sendet. Der Teil des Objekts ist SANIBOX: "NOME_SANIBOX". Basierend auf dem Namen, den ich auf den verschiedenen Computern festgelegt habe, werden E-Mails nach Namen in den Betreff unterteilt.
Mit LogicLab 4 hat alles funktioniert.
November 21, 2018 bei 1: 18 pm #45905Sergio BertanaAdministrator des ForumsWie ich bereits sagte, wurden weitere Einschränkungen bei der Überprüfung des Codes, in Ihrem Fall des Funktionsprototyps, eingeführt SysVarsnprintf (Sie sehen es, wenn Sie mit der Maus über den Funktionsnamen fahren) ist:
(@USINT, UDINT, STRING, USINT, UDINT)
Der erste Parameter muss also eine Adresse sein. Jetzt wird das Subject-Objekt mit LogicLab4 übergeben, da es sich um eine String-Variable handelte, die standardmäßig als Adresse betrachtet wurde. Jetzt müssen Sie sie angeben. Also musst du schreiben:
i:=TO_UINT(SysVarsnprintf(ADR(Subject), SIZEOF(Subject), ‘SANIBOX: %s’, STRING_TYPE, TO_UDINT(ADR(NOME_SANIBOX))));
Oktober 7, 2020 bei 8: 32 #57827MarcoooPartecipanteIch kompiliere mein Programm und erhalte folgende Fehlermeldung:
HWgHTemp485.File – error A4108: eFILEP => Base object not found
Welche Bedeutung hat es?
Oktober 7, 2020 bei 8: 42 #57830Sergio BertanaAdministrator des ForumsMit der Umstellung auf die XUnified-Version (Siehe Artikel) haben wir die Namen einiger Objekte (Funktionen und FBs) und einiger Typdeklarationen geändert, in Ihrem Fall die Zeigerdatei von FILEP Es hat sich eFILEP.
Sie erstellen wahrscheinlich ein Programm für ein XTarget12-System, verwenden aber die FB HWgHTemp485 aus der Bibliothek entnommen eLLabUtyLib der neuen LogicLab-Distribution, die bereits für den Einsatz auf XUnified-Systemen konvertiert ist.
Für diese Fälle und für alle Fälle, in denen Sie die Beispiele des Online-Handbuchs auf XTarget12-Systemen nutzen möchten, haben wir eine spezielle Bibliothek bereitgestellt, Sie müssen die Bibliothek in Ihr Projekt einfügen eLLabXTargetAdjLib.
-
AutorPost
- Sie müssen angemeldet sein, um auf dieses Thema antworten zu können.