Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 1,831 a 1,845 (di 4,505 totali)
  • Autore
    Post
  • in risposta a: Opzione “Enable memory dump” #45629
    Sergio Bertana
    Amministratore del forum

    Non ne ho idea….
    Ho girato la richiesta ad Axel che sviluppa LogicLab e stò attendendo la risposta…

    in risposta a: Utilizzo della scheda SDCard #45626
    Sergio Bertana
    Amministratore del forum

    Il file system dello SlimLine considera la SDCard non operabile al volo, questo perchè deve gestire la sicurezza sui dati in FAT (Spegnimenti random con file aperti). La gestione prevede una transazione dei dati sulla memoria FRAM interna. Alla accensione viene eseguita una scansione della intera FAT e se vi era una transazione non correttamente chiusa i dati in FRAM sono copiati nella SDCard.

    Inoltre se usi la formattazione eFAT hai la possibilità di definire i nomi dei files con 14 caratteri (Compreso il punto) con caratteri maiuscoli e minuscoli. Se usi la formattazione FAT standard puoi solo usare nomi 8+3 tutti in maiuscolo.

    Per il trasferimento dei dati verso l’esterno del sistema puoi utilizzare l’accesso in FTP (Il sistema gestisce sia il server che il client FTP).

    in risposta a: Comunicazione con protocollo Modbus master #45621
    Sergio Bertana
    Amministratore del forum

    In effetti l’algoritmo utilizzato nello sviluppo di questo driver di comunicazione ha alcune particolarità che lo complicano. Intanto posto l’intero progetto LogicLab con tutti i FB utilizzati pronto per essere utilizzato come dimostrativo (Download programma).

    La variabile FMIDx (* Force Modbus index *), è utilizzata per forzare il comando di scrittura Modbus, siccome per velocizzare lo scambio dati i comandi di scrittura sono eseguiti solo sulla variazione del valore da scrivere ho previsto di comunque scrivere il valore ciclicamente così se per caso ci fosse una disincronizzazione tra quello che lo SlimLine pensa di avere scritto e quello scritto nel sistema ci si risincronizza.

    Il programma è eseguito ciclicamente dall’alto verso il basso, quando ho il Done a TRUE significa che il comando Modbus è terminato e posso inviare un’altro comando. Quindi dovendo inviare un comando di scrittura devo caricare il valore da scrivere poi dare il comando Enable:=TRUE.

    Se noti il FB ModbusMaster MMdb(); (* Modbus master communication *)  è eseguito dopo avere posto Enable:=FALSE, quindi entrando in FB con Enable disabilitato inizializzo gestione e resetto Done pronto per il prossimo giro di esecuzione ad essere attivato.

    in risposta a: Posizione Label nei due stati di una lampada #45586
    Sergio Bertana
    Amministratore del forum

    Cosa dice lo slogan del nostro sito di supporto…
    Benvenuto sul sito di supporto Elsist, Siamo qui per aiutarti.

    in risposta a: Gestione valore letto da counter di sistema #45584
    Sergio Bertana
    Amministratore del forum

    Il counter hardware del modulo CPU non ha la possibilità di gestire gli ingressi hardware di reset e di reverse. Questa cosa è possibile sui counter presenti su alcuni moduli di estensione I/O dove settando opportunamente l’ingresso Mode del SysGetCounter è possibile definire quale ingresso hardware del modulo deve essere connesso al comando di reset e quale al comando di reverse.

    Come vedi dalla documentazione per ogni comando possibile (Clock, Reset, Reverse) ci sono 3 bits di mode e 5 bits di selezione ingresso. Con 5 bits puoi indirizzare ognuno dei possibili 32 ingressi massimi di un modulo di estensione.

    Però non capisco la tua perplessità sulla opzione software è estremamente semplice e flessibile, non solo puoi resettare ma puoi anche presettare il valore che desideri. Il comando da ingresso hardware si utilizza solo quando si deve eseguire il reset su un evento esterno molto veloce (Esempio ipotizzando di dover contare i denti di una ruota  dentata che ruota velocemente azzerando il conteggio ad ogni giro su un proximity di zero la cui durata dell’impulso è inferiore al mS tempo in cui si potrebbe anche gestire da software campionando l’ingresso nella task Fast).

    in risposta a: Posizione Label nei due stati di una lampada #45581
    Sergio Bertana
    Amministratore del forum

    Devi visualizzare la lampada nei due stati e spostare la posizione della etichetta per farle sovrapporre, o posizionarle dove tu desideri stiano in ogni stato. Cerco di spiegartelo con un screenshot.

    Con la selezione di copia degli attributi della label in tutti gli stati tu copi solo il tipo e la dimensione del carattere ma non la posizione di visualizzazione.

    in risposta a: Some questions about memory allocation #45577
    Sergio Bertana
    Amministratore del forum

    SysMAlloc has 4096 bytes of reserved memory, every time the function is called the specified amount of memory is subtracted from the total memory available. The function returns the pointer to the allocated memory (Type @USINT), if there’s no space available NULL is returned.

    SysMAlloc can be called all time you need a memory buffer, but remind that the allocated memory cannot be released. So every time the function is called the specified amount of memory is subtracted from the total memory available. All the SysMAlloc memory is released when user program starts.

    SysRMAlloc has 20 KBytes of reserved memory, every time the function is called the specified amount of memory is subtracted from the total memory available. A UDINT buffer is needed by the function to store the pointer to the allocated memory. If there’s no space available the UDINT buffer is set to NULL and FALSE is returned. Instead of the SysMAlloc, the allocated memory can be released by calling the SysRMFree function.

    Note that SysRMAlloc uses a completely different allocation mechanism than SysMAlloc, the allocated memory is moved run time by the operating system to optimize the memory space. This obviously causes that the pointer to the allocated memory can be modified (For this reason a buffer to store it is necessary).

    So every time a buffer allocated by SysRMAlloc is used it’s mandatory to refer to the address stored in the UDINT buffer passed to it and it’s not possible to use copies of it.

    Pointers returned by SysMAlloc e SysMAlloc are aligned so no alignment is needed, obviously when a misaligned buffer is allocated, with the next call, up to 3 bytes of memory can be lost.

    in risposta a: Gestione valore letto da counter di sistema #45571
    Sergio Bertana
    Amministratore del forum

    Il counter hardware della scheda CPU come quelli presenti nelle schede di I/O hanno la possibilità di essere resettati in hardware da un ingresso digitale. Non è prevista però la possibilità di reset e/o preset da software, perchè il problema è facilmente aggirabile con un semplice calcolo matematico sul valore di conteggio.

    La tecnica di manipolazione del valore in uscita da un contatore è ampiamente trattata in alcuni topics relativi alla quota encoder dove si deve gestire un problema del tutto simile al tuo (Topic, topic).

    in risposta a: Conversione Modbus TCP in modbus RTU #45563
    Sergio Bertana
    Amministratore del forum

    Il convertitore ATC-1200 come tutti i convertitori Ethernet/Seriale veicolano i dati tra la connessione Ethernet e la seriale. Se come immagino il tuo generatore  di vapore è un server Modbus TCP a livello di connessione puoi usare un ATC-1200 settato come client per connettersi al generatore. Ma poi per comunicare dovrai sulla porta seriale utilizzare dei pacchetti Modbus TCP e non Modbus RTU e non sò se il tuo PLC ha questa possibilità.

    Pe eseguire la conversione tra i due protocolli ti serve un Gateway come l’ATC-3002 o come il TRP-C37M, questi prodotti eseguono la conversione di protocollo.

    Visto che usi PLC se vuoi a costi paragonabili puoi utilizzare un nostro modulo CPU SlimLine che permette di connettersi direttamente via Modbus TCP, oppure di veicolare il modbus TCP anche sulla seriale o con il FB ModbusTCPGateway (Vedi topic) può comportarsi come un gateway Modbus.

    in risposta a: Spazio di lavoro personalizzabile in opzione di progetto #45560
    Sergio Bertana
    Amministratore del forum

    Lo spazio di lavoro personalizzabile permette di suddividere il progetto in più cartelle virtuali all’interno di LogicLab. Questo rende più “leggibile” il progetto permettendo di raggruppare per cartelle le varie sezioni in cui si compone.

    Un’altra particolarità ancopra più interessante è quella di poter definire dei gruppi di variabili tramite il menù Nuovo gruppo variabili. Questo permette di raggruppare le variabili per funzione, ad esempio è possibile definire il gruppo Inputs per raggruppare tutti gli ingressi, Outputs per raggruppare tutte le uscite, ecc…

    Quindi lo spazio di lavoro personalizzabile è un modo per avere un progetto più ordinato, ma non ha alcun effetto sul codice generato.

    in risposta a: Libreria gestione stringhe json #45521
    Sergio Bertana
    Amministratore del forum

    Si con la JSONEncode puoi creare stringhe JSON da inviare come publisher verso il broker, in pratica ad ogni chiamata del FB accodi alla stringa risultato una coppia nome/valore.

    Con la JSONDecode invece puoi estrarre da una stringa JSON ricevuta dal broker come subscriber il valore della variabile di cui definisci il nome. Se la variabile con quel nome non esiste nella stringa JSON oppure è di tipo diverso (Tu cerchi una stringa mentre la variabile è numerica) viene ritornato errore.

    Ma se per condividere dati verso altri sistemi l’MQTT è la soluzione migliore, per lo scambio dati tra sistemi SlimLine sia per velocità che per facilità di uso consiglio la libreria eLLabRESTSvcLib. Anche se comprendo che essendo usuale l’utilizzo di una tecnica a volte si è restii a cambiare, ma nel cambiamento a volte si scoprono nuove opportunità.

    in risposta a: Libreria gestione stringhe json #45518
    Sergio Bertana
    Amministratore del forum

    In MQTT non ci sono formati particolari, solitamente si usano stringhe di testo oppure come vuoi fare tu stringhe in formato JSON.

    Nella libreria eLLabRESTSvcLib (Scaricabile da qui) trovi oltre al blocco funzione per la gestione del servizio REST anche i FB per la codifica e decodifica JSON (Estratto manuale).

    Per lo scambio dati tra sistemi sia in rete locale che su Internet dai una occhiata alla libreria eLLabDataExchLib (Vedi topic), che può essere una alternativa all’MQTT, sopratutto non necessita di un broker ed il trasferimento dei dati è pressoché in tempo reale.

    in risposta a: File system su SlimLine LogicLab Cortex M7 #45466
    Sergio Bertana
    Amministratore del forum

    Aggiungo che per mantenere compatibilità con i programmi scritti quando si apre su disco un file esempio Storage/NomeFile viene automaticamente puntata la cartella C:/Storage. Quando si apre un file esempio SDCard/NomeFile viene automaticamente puntata la cartella D:.

    Quindi le definizioni Storage/File.txt e C:/Storage/File.txt sono equivalenti come sono equivalenti le definizioni SDCard/File.txt e D:/File.txt.

    Se non si definisce in formattazione la dimensione del cluster viene scelta automaticamente la dimensione ottimale. Ricordo che più grande è la dimensione più veloce è l’accesso al disco ma si spreca più spazio.

    in risposta a: File system su SlimLine LogicLab Cortex M7 #45465
    Sergio Bertana
    Amministratore del forum

    Sulla versione del sistema operativo dei moduli CPU SlimLine LogicLab Cortex M7 a partire da SFW198C000 è stata completamente riscritta la gestione del file system. Ora il disco viene formattato con FAT32 pur mantenendo la sicurezza di non perdita dati sullo spegnimento del sistema. Questo permette di avere nel disco più files di dimensioni diverse, ma non gestendo i nomi lunghi è possibile solo nominare i files con i classici 8+3 caratteri solo in maiuscolo. Il disco su memoria FLASH interna al sistema è il disco “C:” la memoria SDCard è il disco “D:”

    Oltre alla formattazione standard abbiamo previsto di formattare in un formato FAT32 proprietario che permette di utilizzare 14 caratteri maiuscoli/minuscoli per il nome del file (Si può utilizzare un solo “.” di separazione sul nome). Con il comando Format da telnet è possibile formattare il disco, vediamo alcuni esempi, “C:” formatta disco su FLASH, “D:” formatta la SD Card.

    Format C: Formatta disco utilizzando il formato proprietario.
    Format D: FAT_32_ELS Formatta disco utilizzando il formato proprietario.
    Format C: FAT_32 Formatta disco utilizzando il formato FAT32 standard.

    E’ anche possibile definire la dimensione del cluster definendola dopo il comando di formattazione.

    Format D: FAT_32_ELS 1024 Setta il cluster a 1024 bytes.

    in risposta a: Scambio dati tra due (o più) PLC SlimLine #45459
    Sergio Bertana
    Amministratore del forum

    La nuova versione della libreria eLLabDataExchLib_A510, è scaricabile dal sito, ecco l’estratto del manuale.

Stai visualizzando 15 post - dal 1,831 a 1,845 (di 4,505 totali)