Vai al contenuto

Stringa troncata a 99 caratteri su funzioni stringa

Home Forum Programmazione IEC 61131 (LogicLab) Stringa troncata a 99 caratteri su funzioni stringa

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #60339
    Alberto Mengozzi
    Partecipante

    Ho notato che diverse funzioni stringa (MID, CONCAT, LEFT, RIGHT) troncano inspiegabilmente le stringhe a 99 caratteri come riportato in questo topic; ci ho smenato su diverse ore in quanto pensavo al mio codice bacato, fino a che non ho trovato questo post che mi ha confermato l’errore di sistema e indirizzato al cambio di funzione;

    Vorrei suggerire “caldamente” o di provvedere alla correzione del bug.

    In aternativa ma solo nella impossibilità di correggere suggerisco di documentare nel manuale il limiti delle funzioni e come bypassarli (e i motivi della scelta,di tale limite apparentemente inspiegabile) in modo da non fare perdere tempo inutilmente a chi utilizza tali funzioni; ho usato Automation Studio ma non ricordo di avere avuto tali limiti.

    #60341
    Sergio Bertana
    Amministratore del forum

    Le funzioni stringa operano sulle stringhe e ritornano l’indirizzo del buffer di memoria che contiene la stringa risultato. Quindi è evidente che DEVONO appoggiare su di un buffer di memoria i dati quindi hanno tutte una dimensione massima. Poi certo su sistemi con molta memoria a disposizione il buffer di appoggio può essere molto grande.

    Nei sistemi SlimLine potendo gestire le operazioni stringa su 3 diverse Tasks concorrenti abbiamo dovuto istanziare 3 diversi buffers di appoggio ed essendo un sistema basato su di un microcontrollore dove la memoria RAM non è molto grande abbiamo posto un limite a queste stringhe.

    Posso essere daccordo con te che il limite di 100 caratteri (99+tappo) è poco ed adesso stiamo vedendo di aumentare il valore, ma non è possibile avere un valore infinito, quindi prima o poi si cozza con la dimensione predefinita.

    Per evitare il limite di dimensione puoi utilizzare funzioni che operano con i puntatori, la CONCAT si può sostituire con la SysVsnprintf, dove passi alla funzione il buffer che contiene il risultato e la sua dimensione.

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Devi essere connesso per rispondere a questo topic.