Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumLa FB ModemHTTPGet opera solo su di un modem, si appoggia alla FB ModemCore_v2 per gestire i comandi AT verso il modem ed utilizzare lo stack TCP/IP presente nel modem. SlimLine attualmente può solo agire come server TCP/IP non è gestita la connessione come client oltre a non gestire il DNS. Se vuoi connettere un web service ad uno SlimLine via ethernet hai due soluzioni.
Connessione TCP, lo SlimLine agisce come server TCP ed accetta la connessione da un client, puoi utilizzare il protocollo Modbus che è nativo oppure sviluppare un tuo protocollo (Vedi post, post).
Connessione UDP, lo SlimLine può gestire connessioni in ingresso (Server) e/o in uscita Client, ma non potendo gestire il DNS devi sempre utilizzare indirizzi IP (Vedi post).
Sergio Bertana
Amministratore del forumIn effetti le librerie attualmente vengono inserite nella distribuzione del pacchetto LogicLab, non abbiamo sul sito una sezione per il download delle versioni aggiornate. Normalmente il cliente richiede la versione aggiornata e viene spedita per email. Nel tuo caso avendo postato la richiesta sul forum provvedo ad allegare la libreria eModemLib per il download.
Settembre 27, 2013 alle 12:12 pm in risposta a: Riconoscere da programma utente i moduli di espansione #37800Sergio Bertana
Amministratore del forumSi certo, la variabile di sistema SysModulesReady di tipo UINT indica quali moduli di estensione sono connessi al sistema. Ogni bit indica la presenza del rispettivo modulo, quindi bit 0: Modulo con indirizzo 0, bit 1: Modulo con indirizzo 1 e così via fino a bit 15 Modulo con indirizzo 15.
Esiste poi la funzione SysPhrInfos che ritorna il codice del modulo e l’eventuale versione del software installato sul modulo, sono due stringhe da 10 caratteri. Quindi un programma del tipo
FOR i:=0 TO 15 DO
IF (VBitTest(SysModulesReady, i)) THEN
ABf:=SysPhrInfos(i, 0, MInfos[i].Code); (* Codice modulo *)
ABf:=SysPhrInfos(i, 1, MInfos[i].SVersion); (* Software version *)
END_IF;
END_FOR;Permette di valorizzare un array di strutture dati con i codici prodotto e le versioni software. Allego programma di esempio (Stampa e Download sorgente).
Settembre 26, 2013 alle 2:06 pm in risposta a: Trasferire valori tra variabili in linguaggio IL #37799Sergio Bertana
Amministratore del forumHo realizzato un semplice programma che esegue quello di cui tu hai bisogno (Stampa, Download sorgente). Come vedi l’ingresso DI00 del modulo CPU (%IX255.0) gestisce il conteggio dei colpi macchina con il counter SCounter.
Ogni 60 secondi il timer TBase termina la temporizzazione e viene eseguito il trasferimento del valore del contapezzi nella variabile velocità macchina MSpeed. Nello stesso istante viene eseguito il reset del counter di conteggio colpi macchina.
Settembre 26, 2013 alle 12:23 pm in risposta a: Gestire un display alfanumerico con un modulo SlimLine #37798Sergio Bertana
Amministratore del forumTra i vari posts del forum c’è sicuramente qualche esempio di utilizzo della funzione SysVarsnprintf, in ogni caso ecco di seguito come visualizzare due variabili REAL sul display. La variabile LCDMessage di tipo STRING viene poi visualizzata sul display.
(* Real 1:xxx.xxx *)
(* Real 2:xx.x *)i:=SysVarsnprintf(ADR(LCDMessage), 16+1, ‘Real 1:%7.3f ‘, REAL_TYPE, ADR(RVar[0]));
i:=SysVarsnprintf(ADR(LCDMessage)+16, 16+1, ‘Real 2:%4.1f ‘, REAL_TYPE, ADR(RVar[1]));Come vedi la prima chiamata alla funzione scrive il testo seguito dal valore della variabile RVar[0] su 3 cifre intere e 3 cifre decimali. La seconda chiamata alla funzione scrive il testo seguito dal valore della variabile RVar[1] su 2 cifre intere e 1 cifra decimale. Sfrutto comunque la domanda per postare un programma (Stampa, Download sorgente), che visualizza ciclicamente (Ogni 2 secondi) 3 diversi messaggi:
Un messaggio di solo testo.
Un messaggio con le 2 variabili REAL.
Un messaggio con il valore di data ed ora.Settembre 25, 2013 alle 4:10 pm in risposta a: Come gestire motori passo/passo con i vostri prodotti #37796Sergio Bertana
Amministratore del forumIn questo post una soluzione con driver gestito dall’uscita PWM di un modulo CPU.
Settembre 25, 2013 alle 3:56 pm in risposta a: Gestire motori passo passo con un sistema SlimLine #37795Sergio Bertana
Amministratore del forumI moduli SlimLine CPU ARM7 IEC61131-3, dispongono di una uscita PWM hardware (Out 0), che può generare segnali ad onda quadra con un limite di 1 Khz. Tramite il blocco funzione SysSetPWMOut, set PWM output (Estratto manuale), è possibile impostare sia la frequenza di uscita che il duty cycle.
In realtà in generatore PWM può essere programmata per generare frequenze molto maggiori, ma l’OptoMOS di uscita taglia la frequenza. Il valore di 1 Khz è garantito, ma regolando il valore di Duty-Cycle in modo da compensare la differenza tra il tempo di ON ed il tempo di Off dell’OptoMOS si può raggiungere anche valori supuriori ai 2 Khz.
Se si collega l’uscita Out0 con l’ingresso Inp0 utilizzando il blocco funzione SysGetCounter get counter, è possibile utilizzare il counter hardware per conteggiare gli impulsi in uscita ed in questo modo poter gestire anche il loop di posizionamento dello stepping motor.
In questo post un’altra soluzione possibile.
Settembre 25, 2013 alle 1:08 pm in risposta a: Gestire un display alfanumerico con un modulo SlimLine #37794Sergio Bertana
Amministratore del forumSono contento che il display funzioni, per la visualizzazione delle variabili puoi utilizzare la funzione SysVarsnprintf, variable print to string, ti componi una stringa con il testo ed il valore delle variabili e poi la trasferisci sul display. In merito all’indirizzamento del display sul bus I2C, ho fatto riferimento al datasheet dove è riportato.
Four 7-bit slave addresses (0111100, 0111101, 0111110 and 0111111) are reserved for the Controller. The least significant bit of the slave address is set by connecting the input SA0 (DB0) and SA1 (DB1) to either logic 0 (VSS) or logic 1 (VDD).
Nel mio circuito entrambi i segnali SA0 e SA1 sono connessi a VSS, quindi l’indirizzo è 16#3C.
Settembre 23, 2013 alle 2:56 pm in risposta a: Utilizzo tipi dati definiti da utente nelle funzioni e FB #37789Sergio Bertana
Amministratore del forumHai ragione ho fatto un semplice programma che evidenzia il problema (Stampa, Download), ho segnalato alla Axel il problema ed in attesa di una sua soluzione, ti propongo come Workaround di utilizzare una FB al posto della Function.
Se proprio vuoi utilizzare la Function puoi passare l’indirizzo della struttura dati come parametro alla funzione anziché definire la variabile al suo interno, così come ho fatto in questo programma (Stampa, Download).
Settembre 20, 2013 alle 3:55 pm in risposta a: Comando in frequenza di inverter Power-One per eolico #37787Sergio Bertana
Amministratore del forumI moduli SlimLine CPU ARM7 IEC61131-3, dispongono di una uscita PWM hardware (Out 0), che può generare segnali ad onda quadra con un limite di 1 Khz. Tramite il blocco funzione SysSetPWMOut, set PWM output (Estratto manuale), è possibile impostare sia la frequenza di uscita che il duty cycle.
Aggiungendo al modulo CPU un modulo di acquisizione analogica è possibile acquisire il valore analogico di comando ed un semplice programma in ST può agevolmente gestire la tua applicazione. In merito all’interfacciamento con l’inverter, l’uscita è realizzata con un Opto-MOS quindi se utilizzi una sola uscita delle due presenti (Si ha un unico comune per entrambe le uscite) puoi direttamente collegarla all’inverter senza nessuna interfaccia aggiuntiva.
Sergio Bertana
Amministratore del forumIl MAC address è una informazione di sistema, viene gestita esclusivamente dal sistema operativo, non esiste nessun modo per conoscerlo da programma utente.
Settembre 19, 2013 alle 1:54 pm in risposta a: Utilizzo tipi dati definiti da utente nelle funzioni e FB #37784Sergio Bertana
Amministratore del forumNo non vi è alcuna limitazione ad utilizzare tipi di dati definiti da utente nelle funzioni, ecco lo screenshot di un programma che ne fa uso.
L’errore che tu hai citato A04110 Invalid data type, The data type used in the variable definition doesn’t exist. sembra un problema di errata definizione del tipo dati. Sei sicuro di scrivere correttamente il tipo dati ed hai la spunta sulla flag Case sensivity nelle opzioni di progetto (Screenshot) ?
Siccome i tipi dati sono scritti in lettere maiuscole senza la flag di Case Sensivity potrebbero essere confuse con le stesse definizioni scritte in lettere minuscole.
Sergio Bertana
Amministratore del forumAggiungo che in alternativa alla variabile PCode puoi utilizzare la variabile SysCustomerCode Codice customer, questo codice può essere impostato dall’utente che ha accesso come amministratore al sistema. In questo modo accedendo al sistema da Telnet con il comando SysConfig -cc xxxxxxxx potrai impostare il valore della variabile SysCustomerCode, ecco lo screenshot di Toolly.
Sergio Bertana
Amministratore del forumPer proteggere le nostre librerie esistono due metodi il Manufacturer ID (MID) ed il Device ID (DID) vedi FAQ. Questi metodi sono gestibili solo dalla Elsist, non è possibili estenderne l’utilizzo ai clienti.
Però facendo seguito alla tua domanda vengo con una soluzione realizzabile direttamente dal cliente, la variabile di sistema SysUniqueID identifica in maniera univoca ogni sistema (Estratto manuale). Nelle tue Functions o FBs di libreria puoi controllare se il valore di una variabile (Impostabile con modbus) coincide con il valore di SysUniqueID, e se diversi ne blocchi il funzionamento.
Naturalmente il controllo non sarà una semplice eguaglianza ma potrebbe essere frutto di un algoritmo, ti do ad esempio una semplice XOR utilizzando la variabile PCode allocata in DB 100.2048 per averla come variabile tampone.
IF ((PCode XOR 16#FFFFFFFF) <> SysUniqueID) THEN RETURN; END_IF;
Ma potrai sbizzarrirti con algoritmi più complessi. La variabile PCode potrà essere impostata da Modbus, in debug, o creando una pagina web apposita (Stampa e Download programma).
Settembre 18, 2013 alle 3:54 pm in risposta a: Sistema di monitoraggio e controllo dell’abitazione #37780Sergio Bertana
Amministratore del forumIl protocollo di comunicazione degli inverter Aurora è un protocollo Master/Slave e prevede un solo Master, quindi o colleghi l’Aurora Communicator o colleghi lo SlimLine.
Alcuni clienti utilizzano lo SlimLine per acquisire i dati dall’inveter e poi gli stessi sono visualizzati su di un pannello operatore oppure su pagina web (Direttamente dallo SlimLine, vedi post) o acquisiti dallo SlimLine con un PC ma utilizzando il protocollo Modbus. -
AutorePost