Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumIl 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).
Sergio Bertana
Amministratore del forumDevi 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.
Sergio Bertana
Amministratore del forumSysMAlloc 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.
Sergio Bertana
Amministratore del forumIl 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).
Sergio Bertana
Amministratore del forumIl 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.
Ottobre 8, 2018 alle 12:00 pm in risposta a: Spazio di lavoro personalizzabile in opzione di progetto #45560Sergio Bertana
Amministratore del forumLo 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.
Sergio Bertana
Amministratore del forumSi 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à.
Sergio Bertana
Amministratore del forumIn 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.
Sergio Bertana
Amministratore del forumAggiungo 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.
Sergio Bertana
Amministratore del forumSulla 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.
Sergio Bertana
Amministratore del forumLa nuova versione della libreria eLLabDataExchLib_A510, è scaricabile dal sito, ecco l’estratto del manuale.
Settembre 26, 2018 alle 7:35 am in risposta a: Mancanza comunicazione a seguito di screensaver #45456Sergio Bertana
Amministratore del forumSe usi il Cerca nel forum… troverai topics che parlano di come realizzare macro nel pannello. Comunque il manuale di EasyBuilderPro ha un capitolo dettagliato su come si utilizzano le macro.
Settembre 25, 2018 alle 7:41 am in risposta a: Come gestire accesso a pagina protetto da password #45447Sergio Bertana
Amministratore del forumPuoi disabilitare la password automaticamente dopo un tempo abilitando l’auto logout (Screenshot). Oppure quando entri nella pagina esegui una macro che azzera la variabile di sistema LW-9220 di user password.
La sequenza che desideri mi sembra sia esattamente quella che io ho descritto nel post sopra, il pulsante settaggi è visibile ma protetto da password e viene abilitata la visualizzazione del messaggio di avviso se accesso bloccato (Screenshot), poi modifichi la finestra di avviso 7 Password restriction inserendo l’oggetto imputazione password.
Settembre 24, 2018 alle 3:19 pm in risposta a: Mancanza comunicazione a seguito di screensaver #45441Sergio Bertana
Amministratore del forumLo screensaver non è altro che un cambio pagina forzato dall’inattività del touch quindi non và a modificare nulla del normale funzionamento del pannello. Discorso diverso per il backligh saver che porta il pannello in modalità standby mantenendo comunque attiva la comunicazione.
Probabilmente il tuo problema è che nella pagina di screensaver non fai accesso a nessuna variabile SlimLine. Il sistema operativo dello SlimLine se non vede traffico sulla porta Modbus dopo un tempo di timeout la chiude, ed è questo che ti porta al problema che lamenti.
Soluzione, inserisci la lettura di un bit dallo SlimLine nella finestra screensaver così da mantenere attiva la comunicazione. Buona norma specie se si hanno pagine di pannello che non fanno accesso a variabili Modbus dallo SlimLine è inserire una macro con esecuzione a tempo che esegue la lettura di una variabile (Istruzione GetData).
Sergio Bertana
Amministratore del forumSono in molti ad utilizzare l’accoppiata SlimLine e lettore RFID per realizzare controllo accessi, nel forum trovi molti esempi (Vedi topic). Buona la scelta di utilizzare un display compatibile Arduino anche se ti ricordo che abbiamo anche la soluzione Picoface disponibile in OEM.
1) Display LCD
I disturbi sono sempre in agguato, molto dipende dalla lunghezza del cavo I2C (Meglio tenerlo il più corto possibile) eventualmente utilizzare un cavo schermato. Il display che hai utilizzato è gestito da bus I2C con un protocollo che non ha controlli di sicurezza a differenza del protocollo utilizzato per connettere le nostre schede di espansione (Anche Picoface) che prevede checksum di controllo.Quindi certo è possibile che un disturbo provochi un errore di visualizzazione, e se a causa del disturbo il display interpreta un dato come un comando, potrebbe sconfigurarsi. Quello che succede staccando il cavo e riattaccandolo (Da non farsi) è normale, se tu guardi il driver LCD del progetto ArduinoLCD (Vedi topic), vedrai che su inizializzazione sono inviati al disply una serie di comandi (Function set, set interfaccia a 4 bit, display on/off control, cursor and display shift, ecc) se tu spegni e riaccendi il display devi reinviare tutti questi comandi.
Per reinizializzare il display rimettendolo al passo potresti reinviare questi comandi ogni tot tempo (Se usi il mio driver basta disabilitarlo e riabilitarlo) ed avrai un leggero lampeggio del display che poi si rimetterà in passo.
2) Alimentazione
Nessun particolare problema di alimentazione, i sistemi SlimLine sono progettati per lavorare in ambiente industriale, quindi puoi utilizzare un qualsiasi alimentatore a 12V (Esempio la serie MDR).3) Info generali SlimLine
Lo SlimLine è progettato per essere spento semplicemente togliendo alimentazione. Il comando Telnet PLCCommand permette di arrestare l’esecuzione del programma PLC ma si usa solo in casi molto particolari.La funzione SysGetLastError permette di intercettare gli errori di esecuzione, ma di solito si controllano gli errori solo per cercare di non averne. Il file system è progettato per mantenere l’integrità dei files quindi non dovrebbe mai capitare di avere files rovinati.
3) Info generali lettore RFID
Non è possibile disabilitare il lettore, lo si può spegnere o ignorare i dati Wiegand in uscita. Il BEEP ed i LEDs sono gestiti automaticamente dal lettore non è possibile disabilitarne la gestione. E’ possibile però gestirli anche da SlimLine tramite uscite digitali. -
AutorePost