Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 3,706 a 3,720 (di 4,360 totali)
  • Autore
    Post
  • in risposta a: Web server su modulo CPU SlimLine #37135
    Sergio Bertana
    Amministratore del forum

    Aggiungo al post la pagina della nuova versione del Manuale programmazione IEC61131-3 su sistema SlimLine che riporta un esempio di utilizzo di queste variabili (Download).

    Ho realizzato un semplice programma che permette di definire due valori su di una variabile di set e di visualizzare i due valori su due variabili in visualizzazione (Vedi screenshot), Download programma.

    in risposta a: Web server su modulo CPU SlimLine #37134
    Sergio Bertana
    Amministratore del forum

    La versione con interfaccia Ethernet del modulo CPU SlimLine, ha un Web server integrato che rende disponibili le pagine web per la configurazione del prodotto (Vedi screenshot).

    La pagina Home, Visualizza informazioni sul prodotto e sul programma in esecuzione.

    La pagina General Setup, permette di impostare l’indirizzo IP, i parametri di comunicazione seriale ed i parametri di comunicazione Modbus.

    La pagina Time Setup, permette di impostare la data e l’ora.

    La pagina User, permette di visualizzare ed impostare variabili utilizzabili da programma utente.

    Nella versione attuale del firmware del prodotto non è prevista la possibilità di caricare pagine costruite dal cliente, ma tramite la pagina User, è possibile visualizzare 4 variabili SysUlnfo(x), disponibili nel programma utente utente sulle variabili elencate sotto. Trasferendo in queste variabili una stringa questa sarà visualizzata nella pagina Web.

    SysUSetC STRING[16] Valore impostato da utente in variabile Set(C).
    SysUSetA STRING[16] Valore impostato da utente in variabile Set(A).
    SysUSetB STRING[16] Valore impostato da utente in variabile Set(B).
    SysUSetD STRING[16] Valore impostato da utente in variabile Set(D).

    Da pagina Web è possibile impostare il valore di 4 variabili SysUSet(x). Il valore impostato sarà visibile da programma utente nelle variabili:

    SysUInfoA STRING[16] Valore ritornato ad utente in variabile Info(A).
    SysUInfoB STRING[16] Valore ritornato ad utente in variabile Info(B).
    SysUInfoC STRING[16] Valore ritornato ad utente in variabile Info(C).
    SysUInfoD STRING[16] Valore ritornato ad utente in variabile Info(D).

    in risposta a: Configurazione convertitore Wi-Fi seriale ATC-2000WF #37132
    Sergio Bertana
    Amministratore del forum

    Mi sembra un problema di autenticazione, sembra che il modulo non riesca ad autenticarsi con l’access point, potrebbe essere un problema di password. Ricordo che se nella definizione di SSID e passphrase per sicurezza WPA e/o WPA2 ci sono degli spazi, essi vanno sostituiti con il carattere $. Esempio “my pass word” deve essere definita come “my$pass$word“.

    Per fare chiarezza, consiglio di disabilitare momentaneamente l’autenticazione e la crittografia sull’access point in modo da evitare problemi di autenticazione. Poi verificare che ilo modulo si connetta alla rete WiFi e che funzioni la conversione da TCP/IP a Seriale.

    In questa mia prova ho connesso un ATC 2000WF alla seriale del  PC utilizzando un cavo utilizzando il cavo Null-Modem fornito con il prodotto. Tramite il programma Toolly, ho aperto due sessioni di terminale (Vedi screenshot), nella finestra superiore è visualizzata la connessione in seriale (9600, n, 8) con il convertitore. Inviando $$$ il convertitore risponde CWD. a questo punto ho definito l’SSID “set wlan ssid Prova” ed ho salvato la configurazione “save“.

    Spegnendo ed accendendo il convertitore si vede l’avvenuta connessione al mio access point ed il DHCP server ha assegnato l’indirizzo IP 192.168.0.63. Mentre la porta 2000 è la porta su cui è accettata la connessione TCP/IP.

    A questo punto sulla finestra inferiore ho aperto la connessione TCP/IP verso il convertitore. Dalla seriale si è ricevuta la stringa “OPEN” mentre dalla connessione TCP/IP si è ricevuta la stringa “HELLO“.

    Poi si vede come inviando da un terminale una stringa dati questa venga ricevuta dall’altro terminale e viceversa. Ecco queste sono le operazioni minimali per testare il funzionamento, ora è possibile addentrarsi nelle altre configurazioni essendo certi della funzionalità del convertitore.

    in risposta a: Distanza comunicazione moduli Ubiquiti #37131
    Sergio Bertana
    Amministratore del forum

    La distanza di 25 Km è possibile coprirla con diversi prodotti Ubiquiti. Naturalmente la condizione essenziale è che le due antenne siano a vista ottica (Nessun ostacolo tra di loro), e che la Fresnel zone sia completamente libera (Vedi FAQ).

    Ubiquiti permette di verificare la possibilità di connessione tra i due punti con l’utility Airlink, definendo le coordinate GPS dei due punti da collegare ed il tipo di apparato che si desidera utilizzare, l’utility tramite Google Earth determina la fattibilità del collegamento. Tramite l’utility è possibile calcolare anche l’altezza dell’antenna dal terreno (Vedi screenshot).

    Per coprire distanze così elevate consiglio il prodotto Rocket con antenna parabolica Rocket Dish. Ma attenzione all’allineamento delle due antenne, deve essere molto accurato ed i pali di sostegno delle stesse devono essere abbastanza robusti da evitare che il vento muova le antenne facendo perdere il loro allineamento.

    in risposta a: Descrizioni delle funzioni matematiche #37129
    Sergio Bertana
    Amministratore del forum

    LogicLab supporta tutte le funzioni matematiche richieste dalla norma CEI EN 61131-3 nella Parte 3: Linguaggi di programmazione. Essendo funzioni matematiche ben conosciute non vi è un vero è proprio manuale, ma unicamente un elenco delle funzioni presenti. Per venire incontro alla tua richiesta allego un elenco delle funzioni supportate ed un esempio di utilizzo.

    ABS: Calcola il valore assoluto, Result:=ABS(-10.5); (* Result: 10.5 *).
    SQRT: Calcola la radice quadrata, Result:=SQRT(9.0); (* Result: 3.0 *)
    LN: Calcola logaritmo naturale (Base “e” 2,71828), Result:=LN(10.0); (* Result: 2.30259 *) 
    LOG: Calcola logaritmo (Base “10”), Result:=LOG(10.0); (* Result: 1.0 *)
    EXP: Calcola numero elevato “e” 2,71828, Result:=EXP(1.0); (* Result: 2.71828 *)
    SIN: Calcola seno angolo in radianti, Result:=SIN(1.57); (* Angolo 90°, Result: 1.0 *)
    COS: Calcola coseno angolo in radianti, Result:=COS(3.1416); (* Angolo 180°, Result: -1.0 *)
    TAN: Calcola tangente angolo in radianti, Result:=TAN(0.7854); (* Angolo 45°, Result: 1.0 *)
    ASIN: Calcola arcoseno, Result:=ASIN(1.0); (* Result: 1.5708 *)
    ACOS: Calcola arcocoseno, Result:=ACOS(-1.0); (* Result: 3.14159 *)
    ATAN: Calcola arcotangente, Result:=ATAN(1.0); (* Result: 3.14159 *)
    ADD: Esegue somma, Result:=ADD(1.0, 2.0); (* Result: 3.0 *)
    MUL: Esegue moltiplicazione, Result:=MUL(1.0, 2.0); (* Result: 3.0 *)
    SUB: Esegue sottrazzione, Result:=SUB(2.0, 1.0); (* Result: 1.0 *)
    DIV: Esegue divisione, Result:=DIV(2.0, 1.0); (* Result: 2.0 *)

    Considerazione a parte và fatta per l’operatore modulo MOD. L’aritmetica modulare si applica ai soli numeri interi, nel quale i numeri “si avvolgono su se stessi” ogni volta che raggiungono i multipli di un determinato numero n, detto modulo.

    L’operazione Result:=x MOD 10, darà come risultato valori compresi tra 0 e 10 per qualsiasi valore assuma x. L’operazione Result:=x MOD 1000, darà come risultato valori compresi tra 0 e 1000 per qualsiasi valore assuma x. Allego per download un programma di esempio.

    in risposta a: Collegare più terminali ad un unico PLC #37127
    Sergio Bertana
    Amministratore del forum

    Aggiungo che utilizzando pannelli con interfaccia Ethernet, sarà possibile visualizzare il pannello in un browser web (Esempio internet Explorer) e/o su smartphone utilizzando un client Vnc.

    L’operatività tramite smartphone è molto apprezzata in ambito domotico, perchè rende la casa raggiungibile anche in mobilità (Vedi post).

    in risposta a: Collegare più terminali ad un unico PLC #37126
    Sergio Bertana
    Amministratore del forum

    Mi domando perchè hai utilizzato un convertitore RS485, visto che sia il terminale MT6050i che il modulo DFTS hanno entrambi l’interfaccia RS485 nativa. Ma a parte questa curiosità veniamo alla tua domanda, per collegare più terminali ad uno stesso modulo PLC visto che nelle reti Modbus vi può essere un solo modulo master (Uno dei terminali), devi collegare i terminali tra di loro.
     
    Uno dei terminali farà da modbus master verso il modulo DFTS connesso in RS485, mentre gli altri pannelli saranno slave rispetto a questo pannello. La connessione tra i diversi pannelli deve essere realizzata in Ethernet e per questo devi utilizzare tutti pannelli MT8050i. Tra l’altro questo ti facilita molto la programmazione dei pannelli, basta connettere in rete il PC e definendo l’indirizzo IP di ogni pannello, lo potrai programmare senza doverti fisicamente connettere.
     
    Per quanto riguarda la configurazione, dovrai configurare come device su tutti i pannelli un PLC con connessione Modbus RTU, il pannello master (Quello connesso fisicamente al DFTS), avrà definito nelle proprietà di connessione i parametri di connessione al DFTS (Baud rate, parità, ecc). I pannelli slaves avranno definito anche loro lo stesso tipo di PLC definito nel pannello master e la seriale con la quale il pannello master dialoga con il PLC. Ma il PLC sarà di tipo remoto e quindi raggiungibile tramite l’IP del pannello master (Vedi documento).
     
    Il programma dei pannelli master e slave può essere identico, in pratica i vari pannelli (sia master che slave) hanno nei vari oggetti indicato l’indirizzo della variabile da leggere/scriver sul PLC. Il pannello master eseguirà la connessione diretta con il PLC mentre i pannelli slave eseguiranno la connessione tramite il pannello master.

    in risposta a: Risultato delle operazioni di conversione tipo dati #37128
    Sergio Bertana
    Amministratore del forum

    La conversione dei dati è una pratica necessaria nella programmazione, naturalmente se il tipo dati di destinazione ha un range inferiore del tipo dati di origine viene effettuato un troncamento del valore. Iniziamo con il dire che in nessun caso errori di range nelle conversioni dato provocano l’arresto della esecuzione. Vediamo caso per caso le varie conversioni:

    Tipo BOOL: Le conversioni da qualsiasi tipo verso un BOOL, tornano FALSE se il valore del dato da convertire è 0. Tornano TRUE se il valore del dato da convertire è diverso da 0 (anche < 0).

    Tipo SINT/USINT: Le conversioni da qualsiasi tipo verso un USINT, tornano il valore del byte meno significativo del valore da convertire espresso in esadecimale. Esempio il valore 4660 (16#1234) tornerà 52 (16#34), lo stesso vale per i REAL esempio 300.0 (16#012C) tornerà 44 (16#2C). Per il tipo SINT se il valore esadecimale supera 127 il numero sarà negativo.
     
    Tipo INT/UINT: Le conversioni da qualsiasi tipo verso un UINT, tornano il valore dei due bytes meno significativi del valore da convertire espresso in esadecimale. Esempio il valore 305419896 (16#12345678) tornerà 22136 (16#5678), lo stesso vale per i REAL esempio 90000.0 (16#15F90) tornerà 24464 (16#5F90). Per il tipo INT se il valore esadecimale supera 32767 il numero sarà negativo.

    Allego la stampa di un programma di test ed il programma sorgente.

    in risposta a: Collegamento convertitore ATC200WF con PowerOne #37124
    Sergio Bertana
    Amministratore del forum

    Stai facendo confusione tra il convertitore Ethernet/Seriale ATC-2000 ed il convertitore WiFi/Seriale ATC-2000WF. Mentre il primo ha un server web per la configurazione, l’ATC-2000WF si configura tutto da porta seriale (Vedi post).

    Da quanto mi dici però sembra che tu abbia già configurato buona parte del convertitore quindi credo che manchi solo qualche piccolo dettaglio.

    in risposta a: Gestione comandi su modem MC35i Terminal #37123
    Sergio Bertana
    Amministratore del forum

    Ma da quello che dici sembra semplicemente che il modem abbia l’echo disabilitato, comando ATEx (Estratto manuale). In pratica con il comando ATE0 si disabilita l’echo dei comandi mentre con ATE1 si abilita.

    La configurazione è salvata nel profilo del modem, quindi anche spegnendolo e riaccendendolo l’echo rimane disabilitato.

    Probabilmente l’utente non ha eseguito il restore dei pararametri di default (Comando AT&F0) perchè questo comando riportanto tutti i parametri del modem al loro stato di default avrebbe anche attivato l’echo come si vede dall’estratto del manuale.

    in risposta a: Registrazione di dati storici da variabili PLC #37121
    Sergio Bertana
    Amministratore del forum

    Aggiungo una nota, se l’esigenza è di visualizzare un trend grafico con dati acquisiti in un ben preciso istante è possibile tramite l’oggetto Data Block Display creare nel PLC una tabella di valori e poi trasferirli tutti contemporaneamente nel terminale e visualizzarli in forma di trend grafico (Vedi post).

    in risposta a: Registrazione di dati storici da variabili PLC #37120
    Sergio Bertana
    Amministratore del forum

    L’oggetto registrazione dati (Data Sampling) permette di effettuare la registrazione si su base tempi che su evento trigger, in questo caso è possibile comandare da PLC la lettura dei dati da salvare nella registrazione. Occorre definire una variabile BOOL nell’area PLC a cui il terminale si connette per effettuare il trigger, si possono definire tre tipi di trigger.

    [OFF->ON] This will trigger data sampling when the status of assigned address changes from OFF to ON.
    [ON->OFF] This will trigger data sampling when the status of assigned address changes from ON to OFF.
    [ON<->OFF] Trigger data sampling when the status of assigned address is changed.

    Non c’è un tempo minimo definito per la gestione del trigger, occorre lasciare al terminale il tempo per acquisire il cambiamento di stato della variabile. Normalmente il terminale esegue la lettura delle variabili molto velocemente e quindi tempi di variazione superiori al secondo sono sicuramente sufficenti. Non vi è un feedback verso il PLC per confermare l’avvenuta acquisizione del trigger da parte del terminale.

    in risposta a: Storicizzazione dati su chiave USB #37118
    Sergio Bertana
    Amministratore del forum

    Per cercare di dare una risposta alla tua domanda ricordo come il pannello operatore opera durante il salvataggio dei dati.

    I dati storici non sono immediatamente salvati nel file storico, sono memorizzati in memoria e solo quando la dimensione dei dati raggiunge una certa dimensione (Non sò esattamente quanto, ma oltre ad 1 Kb), ne viene eseguita la scrittura sul file.

    La scrittura dei dati è invece eseguita immediatamente se si stà visualizzando una pagina del pannello dove è riportato il trend. In alternativa è possibile forzare la scrittura immediata dei dati nel file agendo sulla variabile LB-9034 Save event/data sampling to HMI, USB disk, SD card (set ON).

    in risposta a: Utilizzo orologio su terminali MT6050i/MT8050i #37115
    Sergio Bertana
    Amministratore del forum

    C’è un bug nell’aggiornamento del real time clock su SlimLine da terminale. Il problema è stato risolto con la versione del sistema operativo “SFW167D110”. Puoi eseguire il download dal nostro sito della nuova versione.

    in risposta a: Storicizzazione dati su chiave USB #37113
    Sergio Bertana
    Amministratore del forum

    Certo che è possibile inserire in un un unico file per ogni singola registrazione più variabili, nell’oggetto di registrazione dati Data sampling, nella zona record dati aprire la cartella formato dati agendo sul tasto Data Format, ed inserire tutte le variabili che si desiderano salvare nel record (Vedi screenshot). Ecco il report in formato Excel del file storico salvato dal terminale (Report storico).

    Da questa finestra è possibile aggiungere le variabili desiderate. Naturalmente l’allocazione delle variabili partirà dall’indirizzo definito nel campo Read Address (Nel mio esempio la LW 10) e le variabili saranno quelle allocate agli indirizzi successivi da quello definito. Per ogni variabile è possibile definirne il tipo che può essere diverso variabile per variabile.

    Attenzione! Se il tipo di variabile è di dimensioni maggiori del tipo definito nel Read Address il loro indirizzo di allocazione crescerà di un multiplo del tipo. Esempio il Real address è un unsigned int (16 bit) e alcune variabili sono Float (32 bit) la loro allocazione utilizzerà lo spazio di 2 variabili unsigned int.

Stai visualizzando 15 post - dal 3,706 a 3,720 (di 4,360 totali)