Accueil > Forum > Informations sur l'environnement de développement LogicLab > Problèmes de compilation
- Ce sujet a 5 réponses, 4 participants et a été mis à jour pour la dernière fois 3 années, 6 mois da Sergio Bertana.
-
auteurPost
-
Octobre 30, 2018 à 10: 27 am #45721PaulPartecipante
Si je remplis ma demande en utilisant le FB FileMemoryDump avec la bibliothèque Logiclab 4.0 + eLLabLogLib_B200, j'obtiens le résultat suivant:
compilation: OK.
compilation avec simulateur activé:FileMemoryDump (286) - erreur G1546: Accumulator => Conversion d'un nombre en chaîne
FileMemoryDump (286) - erreur G0057: JMPCN => Opérande booléen requisAvec la bibliothèque Logiclab 4.0 + eLLabLogLibLib_B310, le résultat est obtenu:
compilation: OK.
compilation avec simulateur activé: erreur mais sans description de l'erreur.Avec la bibliothèque Logiclab 5.0 + eLLabLogLibLib_B200, le résultat est obtenu:
Fichiers de programme (x86)Elsist\ LogicLab \ Libraries \ eLLabLogLib_B200.plclib (286) - erreur G1799: $$ Accumulator $$ => Conversion d'une chaîne en nombre
Avec la bibliothèque Logiclab 5.0 + eLLabLogLibLib_B310:
JE DOIS CHANGER LE CODE POUR SE CONFORMER AUX RESTRICTIONS DE LA DÉCLARATION DE POINTS.
résultat d'achèvement: OK.
compilation des résultats avec simulateur activé:Fichiers de programme (x86)Elsist\ LogicLab5 \ Libraries \ eLLabLogLib_B310.plclib (88) - erreur G0129: NULL => Comparaison entre référence et non-référence
Fichiers de programme (x86)Elsist\ LogicLab5 \ Libraries \ eLLabLogLib_B310.plclib (280) - erreur G0129: NULL => Comparaison entre référence et non-référenceDes problèmes similaires se produisent lors de l'utilisation des versions eLLabUtyLib_C040 et C060 de modbusMaster. Je me demande si c'est un problème de simulateur?
Octobre 30, 2018 à 10: 37 am #45728Sergio BertanaAdministrateur du forumDans l'évolution des versions de LogicLab suivant également les variations des spécifications IEC61131, de plus grandes restrictions sur le contrôle de code ont été introduites. Et il peut arriver que le compilateur de la cible soit moins restrictif que le compilateur du simulateur ou vice versa. Par exemple, l'erreur JMPCN peut provenir du code:
IF (Var) THEN …. END_IF;
Où Var ce n'est pas un BOOL. Cela a été accepté avant, puis il ne l'était plus. Maintenant, je ne vais pas énumérer toutes les restrictions qui ont été ajoutées au fil du temps. Disons qu'en règle générale, il faut toujours utiliser la dernière version de LogicLab avec la dernière version des bibliothèques.
Mais comme nous sommes fallacieux, il se peut également que dans certaines fonctions et / ou FB d’une bibliothèque, certaines conditions déterminent toujours l’apparition d’avertissements ou, au pire, d’erreurs de compilation. Dès que nous en serons informés, nous les résoudreons.
Notez que généralement les bibliothèques sont testées sur la cible réelle. Il se peut que dans le simulateur soient générés des avertissements et des erreurs qui n'apparaissent pas dans la cible. De plus, seules certaines fonctions et certains FB peuvent être utilisés sur le simulateur.
Novembre 21, 2018 à 1: pm 08 #45899Alessandro CampodonicoPartecipanteBonsoir, je me suis retrouvé avec un problème similaire après la mise à jour vers LogicLab 5 en compilation avec le FB EMailSend, c'est l'erreur que ça me donne en compilation:
GESTIONE_MAIL(35) – errore G1799: $$Accumulator$$ => Conversione di una stringa in un numero
et voici la ligne de commande "offensante":
i:=TO_UINT(SysVarsnprintf(Subject, SIZEOF(Subject), ‘SANIBOX: %s’, STRING_TYPE, ADR(NOME_SANIBOX)));
Où la variable "nom_sanibox" est une variable globale STRING 32 passée par le panneau IHM qui me montre le nom de l'IHM en fait. La variable «Subject» est une variable de chaîne locale dans le PROGRAMME «email_management». La variable "i" est un INT toujours local.
la ligne de commande que j'ai copiée à partir de votre exemple d'utilisation du courrier électronique FB et adaptée à mes besoins. Ensuite, je connecte la variable "sujet" à l'entrée du FB emailend donc
MAIL.Subject:=ADR(Subject);
Ce que je voudrais obtenir, c'est dans les e-mails que le système envoie, la partie de l'objet est SANIBOX: «NOME_SANIBOX» donc en fonction du nom que j'ai défini sur les différentes machines, j'aurai des e-mails divisés en sujet par nom.
Tout a fonctionné avec LogicLab 4.
Novembre 21, 2018 à 1: pm 18 #45905Sergio BertanaAdministrateur du forumComme je l'ai dit précédemment, davantage de restrictions sur le contrôle de code ont été introduites, dans votre cas, le prototype de la fonction SysVarsnprintf (Vous le voyez en plaçant la souris sur le nom de la fonction) est:
(@USINT, UDINT, STRING, USINT, UDINT)
Le premier paramètre doit donc être une adresse, passant maintenant l'objet Subject avec LogicLab4 car il s'agissait d'une variable de chaîne qu'il considérait comme son adresse par défaut, vous devez maintenant le spécifier. Il faut donc écrire:
i:=TO_UINT(SysVarsnprintf(ADR(Subject), SIZEOF(Subject), ‘SANIBOX: %s’, STRING_TYPE, TO_UDINT(ADR(NOME_SANIBOX))));
Octobre 7, 2020 à 8: 32 am #57827MarcoooPartecipanteJe compile mon programme et j'obtiens cette erreur:
HWgHTemp485.File – error A4108: eFILEP => Base object not found
Quelle est sa signification?
Octobre 7, 2020 à 8: 42 am #57830Sergio BertanaAdministrateur du forumAvec le passage à la version XUnified (Voir l'article) nous avons changé les noms de certains objets (Fonctions et FB) et de certaines déclarations de type, dans votre cas le pointeur de fichier doit être FILEP est devenu eFILEP.
Vous créez probablement un programme pour un système XTarget12 mais vous utilisez le FB HWgHTemp485 extrait de la bibliothèque eLLabUtyLib de la nouvelle distribution de LogicLab qui est déjà convertie pour une utilisation sur les systèmes XUnified.
Nous avons prévu pour ces cas et pour tous les cas où vous souhaitez utiliser les exemples du manuel en ligne sur les systèmes XTarget12 une bibliothèque spéciale, vous devez insérer la bibliothèque dans votre projet eLLabXTargetAdjLib.
-
auteurPost
- Vous devez être connecté pour répondre à ce sujet.