INÍCIO > Fórum > Informação do ambiente de desenvolvimento LogicLab > Problemas de compilação
- Este tópico tem 5 respostas, 4 participantes e foi atualizado pela última vez 3 anos, 6 meses atrás da Sergio Bertana.
-
autorPublique
-
Outubro 30, 2018 em 10: 27 am #45721Pauloparticipante
Se eu preencher meu requerimento usando o FB FileMemoryDump com a biblioteca Logiclab 4.0 + eLLabLogLib_B200 recebo o resultado:
compilação: OK.
compilação com simulador ativado:FileMemoryDump (286) - erro G1546: Acumulador => Converter um número em uma string
FileMemoryDump (286) - erro G0057: JMPCN => operando booleano necessárioCom a biblioteca Logiclab 4.0 + eLLabLogLib_B310, recebo o resultado:
compilação: OK.
compilação com simulador ativado: erro mas sem descrição do erro.Com a biblioteca Logiclab 5.0 + eLLabLogLib_B200, recebo o resultado:
Arquivos de programas (x86)Elsist\ LogicLab \ Libraries \ eLLabLogLib_B200.plclib (286) - erro G1799: $$ Accumulator $$ => Convertendo uma string em um número
Com a biblioteca Logiclab 5.0 + eLLabLogLib_B310:
Eu tenho que mudar o código para cumprir as restrições na declaração de pontos.
resultado da conclusão: OK.
compilação de resultados com simulador ativado:Arquivos de programas (x86)Elsist\ LogicLab5 \ Libraries \ eLLabLogLib_B310.plclib (88) - erro G0129: NULL => Comparação entre referência e não referência
Arquivos de programas (x86)Elsist\ LogicLab5 \ Libraries \ eLLabLogLib_B310.plclib (280) - erro G0129: NULL => Comparação entre referência e não referênciaProblemas semelhantes ocorrem ao usar as versões eLLabUtyLib_C040 e C060 do modbusMaster. Estou me perguntando se é um problema de simulador?
Outubro 30, 2018 em 10: 37 am #45728Sergio BertanaAdministrador do fórumNa evolução das versões do LogicLab seguindo também as mudanças nas especificações IEC61131, maiores restrições no controle de código foram introduzidas. E pode acontecer que o compilador para o destino seja menos restritivo que o compilador para o simulador ou vice-versa. Por exemplo, o erro JMPCN pode surgir do código:
IF (Var) THEN …. END_IF;
pomba Var não é um BOOL. Isso foi aceito antes, então nunca foi. Agora, não vou listar todas as restrições que foram adicionadas ao longo do tempo. Digamos que, como uma boa regra, é sempre usar a versão mais recente do LogicLab com a versão mais recente das bibliotecas.
Mas porque somos falíveis, mas também pode ser que em algumas funções e / ou FB de uma biblioteca ainda há condições que determinam a aparência dos avisos ou pior do que nos erros de compilação. Assim que formos notificados, nós os resolveremos.
Note, geralmente as bibliotecas são testadas no target real, pode ser que no simulador sejam gerados avisos e erros que não aparecem no target. Além disso, apenas algumas funções e FBs podem ser usados no simulador.
Novembro 21, 2018 em 1: 08 pm #45899Alessandro CampodonicoparticipanteBoa noite, Encontrei-me com um problema semelhante após atualizar para LogicLab 5 em compilação com o EMailSend FB, este é o erro que me dá na compilação:
GESTIONE_MAIL(35) – errore G1799: $$Accumulator$$ => Conversione di una stringa in un numero
e esta é a linha de comando "ofensiva":
i:=TO_UINT(SysVarsnprintf(Subject, SIZEOF(Subject), ‘SANIBOX: %s’, STRING_TYPE, ADR(NOME_SANIBOX)));
Onde a variável "name_sanibox" é uma variável global STRING 32 passada pelo painel da HMI que me mostra o nome da HMI de fato. A variável “Assunto” é uma variável de string local no PROGRAMA “email_management”. A variável "i" é um INT sempre local.
a linha de comando que copiei do seu exemplo de uso do emailend do FB e adaptei às minhas necessidades. Aí eu conecto a variável "assunto" à entrada do e-mail do FB para
MAIL.Subject:=ADR(Subject);
O que gostaria de obter é nos emails que o sistema envia, a parte do objeto é SANIBOX: “NOME_SANIBOX” então com base no nome que configurei nas várias máquinas terei os emails divididos em assunto pelo nome.
Tudo funcionou com o LogicLab 4.
Novembro 21, 2018 em 1: 18 pm #45905Sergio BertanaAdministrador do fórumComo eu disse antes, mais restrições ao controle de código foram introduzidas, no seu caso o protótipo da função SysVarsnprintf (Você vê isso colocando o mouse sobre o nome da função) é:
(@USINT, UDINT, STRING, USINT, UDINT)
Então o primeiro parâmetro deve ser um endereço, agora passando o objeto Subject com LogicLab4 por ser uma variável string que considerava seu endereço por padrão, agora você tem que especificá-lo. Então você tem que escrever:
i:=TO_UINT(SysVarsnprintf(ADR(Subject), SIZEOF(Subject), ‘SANIBOX: %s’, STRING_TYPE, TO_UDINT(ADR(NOME_SANIBOX))));
Outubro 7, 2020 em 8: 32 am #57827MarcoooparticipanteCompilo meu programa e recebo este erro:
HWgHTemp485.File – error A4108: eFILEP => Base object not found
Que significado isso tem?
Outubro 7, 2020 em 8: 42 am #57830Sergio BertanaAdministrador do fórumCom a transição para a versão XUnified (Veja o artigo) mudamos os nomes de alguns objetos (Funções e FBs) e algumas declarações de tipo, no seu caso o ponteiro do arquivo para ser FILEP se tornou eFILEP.
Você provavelmente está fazendo um programa para um sistema XTarget12, mas está usando o FB HWgHTemp485 retirado da biblioteca eLLabUtyLib da nova distribuição do LogicLab que já foi convertido para uso em sistemas XUnified.
Disponibilizamos para estes casos e para todos os casos em que você deseja usar os exemplos do manual online sobre sistemas XTarget12 uma biblioteca especial, você deve inserir a biblioteca em seu projeto eLLabXTargetAdjLib.
-
autorPublique
- Você deve estar logado para responder a este tópico.