Home > Forum > LogicLab development environment information > Compilation problems
- This topic has 5 replies, 4 participants and was last updated 3 years, 6 months ago da Sergio Bertana.
-
AuthorPost
-
October 30, 2018 at 10: 27 am #45721PaulParticipant
If I fill out my application using the FB FileMemoryDump with Logiclab 4.0 + library eLLabLogLib_B200 I get the result:
compilation: OK.
compilation with activated simulator:FileMemoryDump (286) - error G1546: Accumulator => Converting a number into a string
FileMemoryDump (286) - error G0057: JMPCN => Boolean operand requiredWith Logiclab 4.0 + eLLabLogLib_B310 library I get the result:
compilation: OK.
compilation with simulator activated: error but without description of the error.With Logiclab 5.0 + eLLabLogLib_B200 library I get the result:
Program Files (x86)Elsist\ LogicLab \ Libraries \ eLLabLogLib_B200.plclib (286) - error G1799: $$ Accumulator $$ => Converting a string into a number
With Logiclab 5.0 + eLLabLogLib_B310 library:
I HAVE TO CHANGE THE CODE TO COMPLY WITH RESTRICTIONS IN THE POINTS DECLARATION.
completion result: OK.
outcome compilation with activated simulator:Program Files (x86)Elsist\ LogicLab5 \ Libraries \ eLLabLogLib_B310.plclib (88) - error G0129: NULL => Comparison between reference and non-reference
Program Files (x86)Elsist\ LogicLab5 \ Libraries \ eLLabLogLib_B310.plclib (280) - error G0129: NULL => Comparison between reference and non-referenceSimilar problems occur when using the eLLabUtyLib_C040 and C060 versions of modbusMaster. I'm wondering is it a simulator problem?
October 30, 2018 at 10: 37 am #45728Sergio BertanaAdministrator ForumIn the evolution of the versions of LogicLab following also variations on the IEC61131 specifications, greater restrictions on code control have been introduced. And it can happen that the compiler for the target is less restrictive than the compiler for the simulator or vice versa. For example the JMPCN error could arise from the code:
IF (Var) THEN …. END_IF;
Where Var it is not a BOOL. This was accepted before, then it has never been. Now I'm not going to list all the restrictions that have been added over time. Let's say that as a good rule it is always to use the latest version of LogicLab with the latest version of the libraries.
But since we are fallacious, it may also be that in some functions and / or FB of a library there are still conditions that determine the appearance of warnings or worse of errors in compilation. As soon as we are notified, we will resolve them.
Note, usually the libraries are tested on the real target, it can be that in the simulator are generated warnings and errors that do not appear in the target. Furthermore, only some functions and FBs can be used on the simulator.
November 21, 2018 at 1: 08 pm #45899Alessandro CampodonicoParticipantGood evening, I found myself with a similar problem after updating to LogicLab 5 in compilation with the EMailSend FB, this is the error that it gives me in compilation:
GESTIONE_MAIL(35) – errore G1799: $$Accumulator$$ => Conversione di una stringa in un numero
and this is the "offending" command line:
i:=TO_UINT(SysVarsnprintf(Subject, SIZEOF(Subject), ‘SANIBOX: %s’, STRING_TYPE, ADR(NOME_SANIBOX)));
Where the variable "name_sanibox" is a global variable STRING 32 passed by the HMI panel that shows me the name of the HMI in fact. The “Subject” variable is a Local string variable in the “email_management” PROGRAM. The variable "i" is an INT always local.
the command line I copied from your example of using the FB emailsend and adapted to my needs. Then I connect the variable "subject" to the input of the emailsend FB so
MAIL.Subject:=ADR(Subject);
What I would like to obtain is in the emails that the system sends, the part of the object is SANIBOX: “NOME_SANIBOX” so based on the name that I set on the various machines I will have emails divided into the subject by name.
Everything worked with LogicLab 4.
November 21, 2018 at 1: 18 pm #45905Sergio BertanaAdministrator ForumAs I said before, more restrictions on code control have been introduced, in your case the prototype of the function SysVarsnprintf (You see it by placing the mouse on the function name) is:
(@USINT, UDINT, STRING, USINT, UDINT)
So the first parameter must be an address, now passing the Subject object with LogicLab4 since it was a string variable it considered its address by default, now you have to specify it. So you have to write:
i:=TO_UINT(SysVarsnprintf(ADR(Subject), SIZEOF(Subject), ‘SANIBOX: %s’, STRING_TYPE, TO_UDINT(ADR(NOME_SANIBOX))));
October 7, 2020 at 8: 32 am #57827MarcoooParticipantI compile my program and I get this error:
HWgHTemp485.File – error A4108: eFILEP => Base object not found
What significance does it have?
October 7, 2020 at 8: 42 am #57830Sergio BertanaAdministrator ForumWith the transition to the XUnified version (See article) we changed the names of some objects (Functions and FBs) and some type declarations, in your case the file pointer to be FILEP has become eFILEP.
You are probably making a program for an XTarget12 system but you are using the FB HWgHTemp485 taken from the library eLLabUtyLib of the new distribution of LogicLab which is already converted for use on XUnified systems.
We have provided for these cases and for all cases in which you want to use the examples of the online manual on XTarget12 systems a special library, you must insert the library in your project eLLabXTargetAdjLib.
-
AuthorPost
- You must be logged in to reply to this topic.