Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 1,846 a 1,860 (di 4,367 totali)
  • Autore
    Post
  • in risposta a: Orologio programmatore festività con lettura da file CSV #39986
    Sergio Bertana
    Amministratore del forum

    Con i nostri  moduli CPUSlimLine è possibile facilmente realizzare quello che desideri. Il FB SysETimeToDate ti ritorna il valore del giorno, mese, anno, ora, minuti, secondi attuali, puoi in modo semplice da neofita della programmazione utilizzare le comparazioni per comparare il valore con le date da te definite. Naturalmente ci sarà una comparazione per ogni data, ecco un esempio in ST.

    DateTime(); (* Date/Time value *)
    Festivity:=FALSE; (* Festivity flag *)
    IF ((DateTime.Day = 1) AND (DateTime.Month = 1)) THEN Festivity:=TRUE; END_IF;
    IF ((DateTime.Day = 6) AND (DateTime.Month = 1)) THEN Festivity:=TRUE; END_IF;
    IF ((DateTime.Day = 15) AND (DateTime.Month = 8)) THEN Festivity:=TRUE; END_IF;

    In questo modo quando desideri cambiare le date devi modificare il programma. Puoi anche usare al posto dei valori predefiniti da programma delle variabili tampone e modificare le variabili da debug oppure da pannello operatore, ma dovresti già a priori assumere un numero di confronti. Molto più versatile è invece gestire le date tramite un file CSV, ogni volta che vuoi modificare le date ti basterà trasferire via FTP il nuovo file nel sistema.

    Sono partito dal FB riportato in questo topic per realizzare un nuovo FB che gestisce la lettura di un file CSV e attiva il comando se la data odierna è definita nel file, ecco il listato del FB. Il FB è volutamente ridotto al minimo, viene eseguita solo la ricerca di giorno/mese, deve servire da stimolo ai clienti per realizzare il proprio FB con gestione dell’anno, aggiungendo anche gli orari ecc.

    Fornisco l’intero progetto LogicLab con un programma in FBD (Screenshot), che istanzia il blocco funzione in modo da poterne testare il funzionamento. Per completezza nel progetto (Ramo 0001) ho inserito anche l’aggiornamento automatico del real time clock con un server NTP su Internet in modo da avere sempre la data corretta. Nel ramo 0002 attivando Di00CPU viene eseguito il FB che attiverà Do00CPU se è un giorno festivo, nella tua richiesta se vuoi disattivare l’uscita inserirai un NOT (Download progetto con file CSV di esempio).

    in risposta a: Programma di virtualizzazione COM seriali gratuito #39985
    Sergio Bertana
    Amministratore del forum

    Rimando a questo articolo nella nostra knowledge base per ulteriori informazioni.

    in risposta a: Effettuare la scalatura di un valore #39984
    Sergio Bertana
    Amministratore del forum

    La funzione Linearize esegue il calcolo del valore in uscita in base al valore in ingresso basandosi su due arrays VInReference e VOutReference, alla esecuzione della funzione i due arrays devono essere valorizzati. Quindi per leggere i valori da un file CSV devi leggere il file e trasferire i valori nei due arrays. Credo che basandosi sui due topics che hai citato puoi già avere una idea di come fare.

    Ma se la necessità è di modificare dinamicamente i valori negli arrays, basta molto più semplicemente dichiarare gli arrays come RETAIN e con LogicLab da debug modificarne i valori.

    Se definisci gli arrays RETAIN ogni volta che carichi il programma il loro valore viene reinizializzato al valore di init. Se desideri che rimangano i valori impostati da debug basterà allocare gli arrays nell’area di memoria tampone (Da DB100.2048 in avanti). In questo topic informazioni sull’uso della memoria ritentiva.

    in risposta a: Informazioni sui terminali MT8071iE #39981
    Sergio Bertana
    Amministratore del forum

    Il modello HWP8071iE1 rimpiazza il modello HWP8070iE1, ha le stesse caratteristiche con in più la certificazione ATEX. Per la programmazione si utilizza sempre EasyBuilderPro.

    in risposta a: Nuovo blocco funzione per Gateway Modbus TCP/RTU #39979
    Sergio Bertana
    Amministratore del forum

    E’ passato un pò di tempo dal primo post nel frattempo è uscito un nuovo target XTarget_12.0 ed alcune cose sono state migliorate, ora sono disponibili il FB SysTCPServer per gestire la connessione TCP in modo server ed il FB SysSerialPort per gestire la porta seriale, ho quindi ripreso il vecchio progetto modificandolo ed ho pensato di realizzarlo in FBD anzichè in ladder ecco il risultato. Qui poi scaricare il programma sorgente.

    Ma veniamo alla tua domanda, intanto il programma è un gateway di comunicazione, cioè permette il passaggio dei dati da una connessione TCP verso una connessione seriale e nel passaggio il FB ModbusTCPGateway esegue la conversione dal protocollo Modbus TCP al protocollo Modbus RTU e viceversa.

    Se vedi la porta in ascolto sul server TCP è la 1000 (La porta 502 è quella gestita di default dallo SlimLine con il Modbus TCP), quindi devi nel TIA portal impostare la porta 1000 altrimenti dialoghi con il protocollo Modbus dello SlimLine ed intereoghi i suoi registri interni e non quelli del termoregolatore.

    Per quanto riguarda l’indirizzo delle variabili 40001 e 40002 sono indirizzi di variabili dello SlimLine ma tu devi riferirti agli indirizzi delle variabili del termoregolatore.

    in risposta a: Stampare una pagina direttamente da HMI #39977
    Sergio Bertana
    Amministratore del forum

    I files ppd delle stampanti supportate sono nella cartella EBpro/ppd (ci sono circa 890 diverse stampanti). Per le stampanti commerciali i files ppd sono normalmente contenuti nel CD della stampante.

    I modelli 8090XE e CMT-3090 sono entrambi pannelli da 9 pollici, ma le  stampanti ppd sono supportate solo dai pannelli della serie CMT. Tutte le altre serie di pannelli supportano solo le stampanti PCL 5.

    in risposta a: Stampare una pagina direttamente da HMI #39976
    Sergio Bertana
    Amministratore del forum

    Leggendo un pò di specifiche sulla serie CMT, ho notato (come giustamente lei ha detto) che esiste la possibilità di istallare driver sul tastierino inserendo dei cosiddetti file “PPD” forniti dal costruttore della stampante, tuttavia sto facendo fatica a reperirli in rete. Mi conferma che è questa la modalità di installazione dei driver su serie CMT?

    Quale sarebbe la differenza tra un 8090XE ed un CMT-3090 ?

    in risposta a: Stampare una pagina direttamente da HMI #39975
    Sergio Bertana
    Amministratore del forum

    Per quanto riguarda stampanti in rete le uniche che si possono usare sono quelle tipo scontrino che supportano comandi ASCII quindi con il protocollo FreeProtocol si possono inviare attraverso macro le stringhe da stampare. In questo topic c’è un esempio che utilizza la poprta seriale ma puoi facilmente convertirlo in Ethernet.

    In alternativa bisogna passare ai pannelli CMT-3090 che sono su base CMT e che supportano molte più stampanti inoltre è possibile aggiungere anche il driver se supportato.

    in risposta a: Controllo accessi con lettore RFID con protocollo Wiegand #39974
    Sergio Bertana
    Amministratore del forum

    Abbiamo sviluppato un FB specifico per la decodifica del codice Wiegand, Topic.

    in risposta a: Dimensioni codice SlimLine #39982
    Sergio Bertana
    Amministratore del forum

    Non sò con che linguaggio dei 5 possibili è scritto il tuo programma, i linguaggi IL ed ST sono sicuramente quelli che permettono di avere il codice più compatto. Poi all’interno di una programmazione le regole di riduzione codice sono le classiche regole di buona programmazione.

    Se possibile utilizza costanti anzichè variabili.
    Utilizza dove possibile dei cicli FOR o WHILE anzichè usare le singole assegnazioni.
    Se hai operazioni ripetitive puoi scrivere una funzione od un FB e richiamarlo più volte.

    Ricordo che sulle CPU Compact è possibile acquistare l’opzione estensione codice programma che permette di raddoppiare l’area di codice portandola a 96KBytes. Le nuove CPU CortexM7 hanno un’area di codice più grande rispetto alle precenti, 131KBytes che nella versione estesa arrivano a 262KBytes. Inoltre grazie alla architettura del processore hanno un codice compilato molto più compatto (A parità di programma sorgente si ha un 30% di risparmio sul codice compilato).

    in risposta a: Utilizzo uscite analogiche modulo esp. 20I/O mixed signals #39973
    Sergio Bertana
    Amministratore del forum

    Gli ingressi analogici sono protetti contro le sovratensioni, quindi anche applicando una tensione di 24Vdc all’ingresso non si danneggia, la stessa cosa però purtroppo non si ha sulle uscite. L’uscita dell’operazionale che genera la tensione è direttamente connesso al pin del connettore e quindi applicando una tensione in ingresso dove si dovrebbe collegare un carico porta quasi sicuramente alla rottura del circuito.

    in risposta a: Conflitto su indirizzo IP #39968
    Sergio Bertana
    Amministratore del forum

    Intanto ricordo che la configurazione della rete tramite Toolly è possibile solo entro i 10 minuti dalla accensione del sistema, ma il tuo problema è che cerchi di impostare come indirizzo il 198.168.0.122 che è l’indirizzo di default assegnato alla rete Ethernet dove questa è prevista, quindi non viene accettato.

    Come soluzione visto che la rete RNDIS è una rete privata tra il PC e lo SlimLine sei libero di assegnare qualsiasi indirizzo a questa rete (Basta modificarne i parametri sia sullo SlimLine che sul PC). Quindi ti consiglio di impostare una rete diversa (Esempio 198.168.10.xxx, oppure 10.xxx.xxx.xxx).

    Rimando a topic, topic per altre informazioni sull’argomento.

    in risposta a: Valore QNAN su acquisizione 4-20mA #39966
    Sergio Bertana
    Amministratore del forum

    Il valore QNAN passato al FB Average non blocca lo SlimLine ma perturba il valore di media calcolato dal FB. Pertanto se una acquisizione ritorna un valore QNAN e questo valore lo passi al FB il valore in uscita sarebe falsato.

    Mi parli di abilitazione del FB Average, quindi immagino programmi in LD o FBD, disabilitare il FB significa non eseguirlo, ma siccome l’uscita di Fault dura un solo loop di programma mentre il valore in uscita rimane stabile fino alla prossima acquisizione l’FB verrebbe eseguito comunque con in ingresso un valore QNAN.

    Ho preso spunto dalla tua segnalazione per modificare l’FB Average in modo da controllare il valore in entrata e se QNAN oppure infinito, blocco il calcolo del valore di media propagando in uscita il valore in ingresso. Ecco lo screenshot del programma, modificando in debug il valore in ingresso è poossibile vedere il comportamento del FB. Allego programma con codice sorgente anche del FB Average.

    in risposta a: Connettersi ad un server Telnet remoto #39964
    Sergio Bertana
    Amministratore del forum

    Utilizzando l’FB SysTCPClient puoi aprire una connessione TCP con il server Telnet, l’FB ti ritornerà in File uno stream di comunicazione, utilizzando la funzioni di gestione I/O su stream (Sysfgetc, SysfputcSysfread e Sysfwrite) potrai gestire la comunicazione con il server.

    Ma se il tuo server Telnet gestisce una interfaccia a linea di comandi CLI, magari con autenticazione tramite username e password potrai utilizzare molto più semplicemente l’FB CLIManager (Estratto manuale) che semplifica notevolmente la gestione di una interfaccia a linea di comando. Ecco anche il programma Ptp114a660 che contiene tutti gli esempi per libreria eLLabUtyLib_C050 compreso l’esempio di utilizzo del FB CLIManager.

    in risposta a: PLC with fast analog acquisition #39963
    Sergio Bertana
    Amministratore del forum

    Our SlimLine LogicLab IEC61131-3 Cortex M7 CPU has a 12 bits ADC converter that can convert a signal in less than 5 uS. So you can write a program to be executed in the Task Fast that acquire the signal and make all the calcules you need. The Fast task is ran every 1 mS but with the SysSetTaskLpTime (set task loop time) function, you can modify the execution time (Minimum value 100 uS).

    The ADC converter can acquire only positive voltage values from 0 to 10 volts. So if you need to acquire positives and negatives values you have to design an analog circuit capable to offset to 1 volt the analog value and multiply it by 5.

    When the sensor value is in the positive range (From 0 to 1 Volt) the ADC reads values from 0 to 5 volts. When the sensor value is in the negative range (From 0 to -1 Volt) the ADC reads values from 5 to 0 volts.

Stai visualizzando 15 post - dal 1,846 a 1,860 (di 4,367 totali)