Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 931 a 945 (di 4,272 totali)
  • Autore
    Post
  • in risposta a: Utilizzo del timer in un programma #60673
    Sergio Bertana
    Amministratore del forum

    Elsist per l’ambiente di sviluppo LogicLab mette a disposizione svariate librerie con funzioni e blocchi funzione per gli usi più svariati, l’elenco completo diviso per categorie si trova qui.

    Esistono diversi FB per la gestione timer, il piu utilizzato cioè il timer ritardato alla eccitazione si chiama eTON e questa è la sua pagina di manuale. Come vedi dal manuale il FB si trova nella libreria eLLabStdLib, quindi puoi collegare la libreria oppure importare l’oggetto nel tuo progetto (In questo tutorial video spieghiamo la differenza).

    Nel manuale in fondo alla pagina si trovano anche degli esempi di utilizzo del timer in diversi linguaggi, l’esempio in linguaggio ladder và ricreato nel tuo progetto, mentre gli esempi nei linguaggi testuali possono essere direttamente copiati ed incollati nel tuo progetto (Vedi spiegazione).

    Ma se noti in testa ad ogni esempio è indicato il programma dimostrativo che lo contiene (Per il timer è il Ptp115).

    Visto che stai iniziando con LogicLab ti consiglio di guardare i nostri video tutorial.

    in risposta a: Utilizzare FB HttpClient per connessione in HTTPS #60669
    Sergio Bertana
    Amministratore del forum

    Stiamo lavorando sulla crittografia SSL, in pratica stiamo modificando tutti i FBs che gestiscono protocolli per permettere di inserire il FB SysTLSClient tra il FB di gestione connessione e quello di gestione protocollo permettendo così connessioni criptate sui vari protocolli HTTP, SMTP, MQTT, FTP, ecc.

    Sul manuale on-line che tu hai citato c’è già indicata questa possibilità sul protocollo HTTP ma al momento non l’abbiamo ancora rilasciata.

    Nella roadmap rilasceremo il FB SysTLSClient iniziando dal modulo SlimLine basato su Raspberry, speriamo di rilasciarlo prima del periodo di ferie estive.

    Stiamo valutando il porting anche sui moduli basati su processori Cortex ma abbiamo problemi di velocità nella esecuzione dei calcoli, quindi al momento non siamo ancora in grado di indicare se sarà possibile avere il porting e se si, quando sarà disponibile.

    in risposta a: Visualizzare su pagina web stato variabili usando puntatori #60661
    Sergio Bertana
    Amministratore del forum

    Essendo i nostri sistemi basati su architettura a 32 bits un puntatore (Pointer, indicato come @xxxx) occupa 4 bytes di memoria e se allocato in DB100 và allocato sempre ad indirizzi divisibili per 4.

    Come correttamente hai fatto notare il server web agisce solo su variabili allocate in DB100, ma se tu allochi un pointer il server web non ha previsto la visualizzazione del valore della variabile a cui il pointer punta. Quindi se lo visualizzi come DWORD vedresti l’indirizzo della variabile ma non il suo valore.

    Quindi il modo corretto è di appoggiare gli ingressi su variabili BOOL. Ti consiglio di allocare un array di variabili BOOL nella DB100 e poi con un semplice ciclo FOR potrai trasferire dall’array di pointer alle variabili in DB100. E così saranno accessibili da web server agli indirizzi 100.32, 100.33, ecc.

    VAR
    i : UDINT; (* Auxiliary variable *)
    G_DoorStatus : ARRAY[0..31] OF @BOOL; (* Door status BOOL pointer *)
    A_DoorStatus AT %MX100.32 : ARRAY[0..31] OF BOOL; (* Door status BOOL variable *)
    END_VAR
    FOR i:=0 TO (SIZEOF(G_DoorStatus)/SIZEOF(G_DoorStatus[0]))-1 DO
        A_DoorStatus[i]:=@G_DoorStatus[i];
    END_FOR;

    Come in tutti isistemi PLC gli I/O sono gestiti in immagine di processo, e siccome il task real time è lo slow l’immagine di processo è eseguita in task slow. Quando ti riferisci a variabili di I/O in task diverse dall slow LogicLab crea automaticamente una immagine di processo virtuale per garantire che lo stato delle variabili sia costante per tutta l’esecuzione del task.

    Se ti riferisci a variabili di I/O con il loro indirizzo (Esempio %IX0.0) in task diverse, se visualizzi in debug l’indirizzo vedrai che per lo stesso I/O si hanno indirizzi diversi per ogni task sarà LogicLab a trasferirne il valore automaticamente. Ma attenzione il trasferimento del valore nella immagine di processo virtuale delle task diverse dalla slow avviene solo se LogicLab si accorge che la variabile è utilizzata quindi vedi lo scenario.

    VAR
        MyBOOL : BOOL; (* BOOL value *)
        MyBOOLADR : @BOOL; (* BOOL pointer *)
    END_VAR
        MyBOOL:=%IX0.0; //LogicLab si accorge che è usata
        MyBOOLADR:=ADR(%IX0.0); //LogicLab non si accorge che è usata

    Quindi affinchè il tuo programma funzioni ti consiglio di eseguirlo in task slow.

    in risposta a: Protocollo Ethernet/IP su serie cMT #60652
    Sergio Bertana
    Amministratore del forum

    Premesso che non conosco l’Ethernet/IP in quanto tutti i nostri prodotti lavorano con protocollo Modbus/TCP ho tentato di capirne un po di più e ti consiglio di fare queste prove. Intanto imposta un dispositivo con protocollo ODVA General Ethernet/IP (Implicit messaging).

    Come vedi dallo screenshot questa impostazione ti permette di definire i registri con il loro indirizzo. Ora riferendomi al manuale vedo che il peso lordo è riportato nel formato Big endian nei bytes 3, 4, 5, 6 (Indirizzi 1, 2 registri input a 16 bit) quindi quando imposti l’oggetto di vsualizzazione numerica definirai nel campo indirizzo il valore Input, 1 e come formato 32bit unsigned, potrebbe anche essere 32bit signed.

    Ora potrebbe esserci un problema, il formato considerato dal pannello potrebbe essere Little endian e quindi vedresti un numero errato. Allora dovrai scomporre il valore a 32 bits in 2 interi a 16 bits, leggi il registro input 1 e input 2 e con una macro componi il valore a 32 bits moltiplicando il valore del registro input 1 per 65536 sommando poi il valore del registro 2.

    in risposta a: Connessione a webserver remoto tramite blocco HTTP codesys #60646
    Sergio Bertana
    Amministratore del forum

    Purtroppo non ho esperienza cosi approfondita di CODESYS, per i nostri prodotti programmabili con LogicLab abbiamo sviluppato librerie apposite sia per il DNS (Vedi DNSRequest) che per le richieste HTTP (Vedi HTTPClient).

    Da quello che  scrivi vedo un possibile errore nell’URL che passi al blocco DNS_Client, credo che devi indicare solo l’URL senza il resto https:/ /httpbin.org.

    Quando ti colleghi al tuo webserver intendi un web server pubblico e quindi raggiungibile da internet oppure privato aziendale, perchè in tal caso meglio usare l’IP diretto.

    in risposta a: Protocollo Ethernet/IP su serie cMT #60643
    Sergio Bertana
    Amministratore del forum

    ODVA è l’organizzazione che definisce le regole del protocollo Ethernet/IP, quindi il protocollo è corretto. Naturalmente è importante che il sistema di pesatura sia conforme alle specifiche del protocollo Ethernet/IP cosi come definite da ODVA. Ma siccome mi dici che hai fatto prove e funziona direi che non ci sono problemi.

    Ora il tuo sistema di pesatura avrà una tabella con gli indirizzi ed i tipi delle variabili a cui fare riferimento, se usi una connessione di tipo ODVA General Ethernet/IP (Implicit messaging) potrai accedere direttamente alle variabili definendone l’indirizzo.

    in risposta a: Lettura scrittura file su USB o SDCard #60574
    Sergio Bertana
    Amministratore del forum

    Intanto non formattare il disco C: quello interno al sistema perchè contiene i dati di configurazione oltre alle pagine web. Sia che utilizzi l’SDCard che il disco USB (In questo caso garantiamo il funzionamento solo se utilizzi il Lettore/scrittore micro SD-Card) devi inserire il disco a sistema spento.

    Se la formattazione non ti dà errori dovresti collegandoti in FTP vedere il disco e poter trasferire dati da PC a disco e viceversa. Se questo funziona tutto è Ok.

    L’esempio più semplice lo trovi nella funzione SysFfopen, l’esempio ST_SysFfopen apre il file indicato (Puoi usare un file che avrai prima trasferito in FTP) e ne legge i primi 32 caratteri. Nella stessa funzione trovi l’esempio ST_MemoryDump che permette il trasferimento di una zona di memoria su di un file sia in scrittura che in lettura. Altri esempi nella funzione StringToLogFile, o nella SysStrFind.

    Ricorda che la gestione del disco deve essere messa in programmi eseguiti in task Back.Ma se hai errori nel programma collegati al sistema in Telnet e con il comando SysLog verifica che errori hai qui elenco completo errori.

    in risposta a: Trasferimento variabile REAL da S7 a CMT-SVR #60539
    Sergio Bertana
    Amministratore del forum

    Non conoscendo il mondo Siemens ho chiesto lumi ad un ns cliente, ti giro la risposta che mi ha dato.

    Se il dato è su DB occorre usare come tipo dati DBDn. Quindi nr DB+4 cifre per il registro.

    Esempio DB12.DBD54 sarà 120054

    Spero che ti sia di aiuto.

    in risposta a: Trasferimento variabile REAL da S7 a CMT-SVR #60536
    Sergio Bertana
    Amministratore del forum

    Non conosco il mondo Siemens, ma non capiosco perchè non utilizzi direttamente la lettura da cMT di 5 variabili float 32 bit in questo modo hai il tuo valore in REAL direttamente sul cMT.

    Poi potrai definire nel cMT il formato di visualizzazione (Quante cifre prima e  dopo la virgloa).

    in risposta a: Linguaggio SFC, variabile temporale di step e domanda su azioni #60531
    Sergio Bertana
    Amministratore del forum

    Non ho ben chiaro quello che stai realizzando, non sono un esperto di SFC quindi scusa il mio programma banale, ho realizzato il programma SFCExample (Download).

    Step 0: Attiva l’uscita 0 del modulo CPU SlimLine ed attende 2 secondi.
    Step 1: Disattiva l’uscita 0 del modulo CPU SlimLine ed attende 2 secondi.

    Come vedi dallo screenshot ho definito la variabile TDelay di tipo timer eTON, e nello step 0 eseguo l’azione SetDo00 che esegue il timer e sulla transizione ne controllo l’uscita Q. Nello step 1 eseguo l’azione ResetDo00 che esegue il timer e sulla transizione ne controllo l’uscita Q.

    Nota importante, come vedi nelle due azioni l’ingresso IN del timer è gestito con lo stato dell’uscita, questo perchè occorre che il FB veda disattivarsi IN per poi sulla attivazione gestire una nuova temporizzazione.

    in risposta a: Switch automatico tra connessione LTE e Ethernet #60528
    Sergio Bertana
    Amministratore del forum

    Allego un estratto del manuale che riporta le indicazioni per attivare il backup via LTE della rete WAN.

    In questo modo la connessione via rete WAN è prioritaria, se attiva il router si connetterà attraverso questa connessione. In assenza di connnessione verrà attivata automaticamente la connessione LTE.

    in risposta a: Linguaggio SFC, variabile temporale di step e domanda su azioni #60525
    Sergio Bertana
    Amministratore del forum

    Non utilizzo mai i linguaggi grafici, se guardi tutti gli esempi che abbiamo sia nelle knowledge che nel forum sono in ST.

    Il linguaggio testuale ha il grosso vantaggio di poter essere facilmente manipolato, copiato in parti da un programma ed incollato in un altro. Inoltre con semplici passaggi ssi può passare da LogicLab a CODESYS.

    Un esempio di programma in SFC lo puoi trovare in questo topic.

    Per aiutarti ho girato la domanda ad Axel che sono gli sviluppatori dell’ambiente di sviluppo LogicLab ed ecco la loro risposta.

    Ovviamente Spento deve essere dichiarato.

    Dentro le azioni puoi chiamare ciò che ti pare, es. funzione ma è possibile associare solo un azione per N (finché lo step è attivo) oppure P (pulse, quando lo step viene attivato).

    Dopodiché assegni le condizioni di uscita dalle transazioni, possono essere del codice o delle variabili booleane.

    in risposta a: Driver di comunicazione con CODESYS #60523
    Sergio Bertana
    Amministratore del forum

    Ho utilizzato CODESYS V3.5 SP17 + (64 bit) su di un nostro modulo CPU MPS055 basato su Raspberry.

    in risposta a: Driver di comunicazione con CODESYS #60517
    Sergio Bertana
    Amministratore del forum

    Ho fato la prova con un semplice progettino con una inputazione/visualizzazione numerica di variabile UDINT, mi sono collegato ad un nostro sistema SlimLine e non ho avuto alcun problema. Il tutto provato con EasyBuilderPro in simulazione su PC.

    Ecco lo screenshot delle impostazioni che ho effettuato, controlla se sono le stesse del tuo progetto.

    in risposta a: Driver di comunicazione con CODESYS #60514
    Sergio Bertana
    Amministratore del forum

    Per la connessione con sistemi programmati in CODESYS Weintek ha predisposto driver appositi con gestione sia dell’indirizzamento assoluto che simbolico.

    Il driver funziona con tutti i sistemi programmati in CODESYS.

    Quindi se ti viene visualizzato il messaggio PLC no response significa che hai commesso qualche errore di configurazione. Ti consiglio di realizzare un progetto con un solo pulsante toggle utilizzando l’indirizzamento assoluto e vedere se riesci a farlo funzionare.

    Per la configurazione del protocollo puoi verificare il manuale Guida connessioni PLC.

Stai visualizzando 15 post - dal 931 a 945 (di 4,272 totali)