Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 406 a 420 (di 4,421 totali)
  • Autore
    Post
  • in risposta a: Conversione da decimale ad ascii #76936
    Sergio Bertana
    Amministratore del forum

    Non so se ho capito bene quello che volevi ottenere ecco lo screenshot di quello che ho fatto io con questa macro.

    macro_command main()
    short Value=0 //Value to convert
    char Result[8]={0} //Result string
    
    GetData(Value, "Local HMI", LW, 10, 1) //Get data from LW
    DEC2ASCII(Value, Result[0], 4) //Convert 4 digit to ascii
    
    GetData(Value, "Local HMI", LW, 12, 1) //Get data from LW
    DEC2ASCII(Value, Result[4], 4) //Convert 4 digit to ascii
    
    SetData(Result[0], "Local HMI", LW, 20, 8) //Copy the ascii result to 8 bytes (4 LW)
    end macro_command
    in risposta a: File “project.rms” con lunghezza 0 byte #76909
    Sergio Bertana
    Amministratore del forum

    Purtroppo tutte le informazioni sono nel file project.rms quindi se non c’è il file non è possibile estrapolare il programma.

    in risposta a: Sensori Milesight, invio valori su variazione #76894
    Sergio Bertana
    Amministratore del forum

    Per il controllo delle condizioni ambientali consiglio il modello EM300-TH, la batteria interna da 4000 mAh garantisce 5 anni con trasmissioni ogni 10 minuti. Questo sensore può inviare temperatura su soglia di allarme ma non su variazione. L’invio su soglia di variazione è possibile con il modello TS30x che però non può rilevare l’umidità.

    Ma se analizziamo il consumo energetico, dovremmo valutare se consuma meno un sensore come EM300 che esegue un campionamento ed un invio ogni tempo impostato e poi si pone in quiescenza in attesa del prossimo invio, rispetto ad un sensore che deve continuamente controllare la temperatura per poi inviarla in caso di superamento della soglia.

    Inoltre non è un caso che l’EM300 non abbia questa funzione perchè la temperatura ambiente è un fenomeno lento e quindi poco si presta ad un controllo di tipo soglia. Completamente diverso è il caso del sensore TS30x che avendo la sonda esterna può essere utilizzato per il controllo di temperatura in svariate applicazioni in cui può essere utile avere una segnalazione immediata nel caso di una repentina variazione.

    in risposta a: Alternative al programma PDMS #76845
    Sergio Bertana
    Amministratore del forum

    Il fornitore consiglia di controllare i servizi Windows ed il firewall, loro non hanno ancora ricevuto lamentele riguardo agli ultimi aggiornamenti di Windows sulla funzionalità del programma PDMS. Probabilmente c’è un qualche blocco di sicurezza nell’accesso al DB Firebird.

    In effetti dal 9/24 cesserà il supporto sul programma, SensDesk è la normale migrazione del programma sul cloud.

    Capisco che ci sia una diffidenza all’invio dati sul cloud ma occorre considerare che miglioni di telefoni cellulari con dati altamente privati (foto, e-mail, pagamenti, conti, ecc.) sono sul cloud, perché allora non i dati sicuramente meno privati come le temperature, umidità, …

    In alternativa, siccome tutti idispositivi HW-group supportano il protocollo SNMP è possibile utilizzare uno dei molti programmi che trasferiscono dati da SNMP su DB.

    in risposta a: File “project.rms” con lunghezza 0 byte #76790
    Sergio Bertana
    Amministratore del forum

    Il  file project.rms è un file zip dell’intero progetto LogicLab, è possibile scegliere se eseguire oppure no la scrittura del file sui sistemi, vedi capitolo Download programma sorgente in questo articolo.

    • Nelle versioni datate di sistema operativo quando si decideva di non eseguire la scrittura del file sorgente, nella cartella Project veniva scritto il file project.rms con lunghezza 0.
    • Nelle ultime versioni di sistema operativo il file project.rms viene scritto solo se è impostata la scrittura del file sorgente. In caso contrario il file viene cancellato. Quindi se il file è presente si è certi che contiene sicuramente i sorgenti del programma in esecuzione.
    in risposta a: Accesso a HMI con port forwarding su router #76761
    Sergio Bertana
    Amministratore del forum

    Nei pannelli a 2 porte la connessione da realizzare è:

    • LAN1 utilizzata per accesso al pannello via Internet, da collegare ad una rete con accesso ad Internet, esempio un router LTE.
    • LAN2 utilizzata per la connessione del pannello ai PLC.

    Da quanto mi dici il router è già connesso alla rete dei PLC 192.0.200.x, quindi anche il cMT sarà connesso alla stessa rete con la LAN2 visto che deve dialogare con i PLC. Quindi basterà eseguire sul router il forward delle porte necessarie (Vedi FAQ) per poter accedere al cMT con tutte le applicazioni che desideri lasciando la LAN1 scollegata.

    in risposta a: Multilingua e massimo numero stati stringhe #76684
    Sergio Bertana
    Amministratore del forum

    Weintek in una prenews ha annunciato che molto probabilmente in una prossima versione di EasyBuilder aumenterà questo limite, ma parliamo di fine anno almeno…

    In alternativa perchè non usare le StringTable che non hanno questo limite… Tra l’altro io le trovo molto più intuitive e semplici da utlizzare (Screenshot).

    in risposta a: Connessione dispositivo TCP/IP generico #76672
    Sergio Bertana
    Amministratore del forum

    Ho modificato la tua macro in questo modo.

    macro_command main()
    short Lenght=0
    char Command[16]={0}, Response[16]={0}
    bool State=false
    
    FILL(Command[0], 0x20, 16)
    SetData(Command[0], "Local HMI", LW, 100, 16) //Copy command to LW 1000
    
    FILL(Response[0], 0x20, 16)
    SetData(Response[0], "Local HMI", LW, 200, 16) //Copy response to LW 1000
    
    GetData(State, "Local HMI", LB, 0, 1) 
    if State then
        StringCopy("LASER ON", Command[0])
    else
        StringCopy("LASER OFF", Command[0])
    end if
    
    Lenght=StringLength(Command[0])
    SetData(Command[0], "Local HMI", LW, 100, Lenght) //Copy command to LW 1000
    OUTPORT(Command[0], "Free Protocol", Lenght)
    INPORT2(Response[0], "Free Protocol", Lenght, 1000)
    
    if (Lenght <> 0) then
        SetData(Response[0], "Local HMI", LW, 200, Lenght) //Copy response to LW 1000
    end if
    end macro_command

    E l’ho testata con la nostra utility Toolly in modo Terminal->TCP Server (Vedi articolo) e funziona regolarmente. Ma visto che dici che non hai nessun riscontro neanche nelle word di visualizzazione comando mi viene il dubbio che tu non abbia settato l’esecuzione periodica della macro. Ecco due brevi spiegazioni sul funzionamento.

    • Ho impostato il Free protocol con connessione ethernet verso l’IP del PC dove è eseguito Toolly.
    • Ho settato l’esecuzione periodica ad 1 secondo della macro, quindi ogni secondo si entra in macro e si invia il messaggio sulla connessione ethernet.
    • La funzione INPORT2 attende i dati in risposta e li bufferizza, se non si ricevono più dati dopo 1 secondo esce con i dati in Response.
    in risposta a: Informazioni sul formato TIME #76612
    Sergio Bertana
    Amministratore del forum

    TIME è una costante di tempo conforme a IEC 61131-3 a 32 bit con risoluzione in millisecondi. LogicLab supporta anche LTIME una costante di tempo a 64 bit che estende la risoluzione in nanosecondi. Se fai riferimento alla pagina di definizione tipo variabili vedrai

    TIME_TYPE 70 TIME 32 Time expressed in milliseconds, range da -24d_20h_31m_23s_648ms a 24d_20h_31m_23s_647ms

    In pratica il tipo TIME permette di definire il tempo in giorni, ore, minuti, secondi, millisecondi. LogicLab ne esegue la visualizzazione mantenendone la suddivisione. Qindi per impostare il tempo nel timer dovrai indicare il valore TIME#–d–h–m–s–ms oppure il modo short più comodo T#–d–h–m–s–ms. Ecco alcuni esempi:

    TIME := T#14ms;
    TIME := T#10s12ms;
    TIME := T#12h34m15s
    TIME := T#1d1h34m5s;

    Nota: I valori vanno sempre indicati nell’ordine giorno, ora, minuti, secondi, millisecondi, è possibile omettere i campi non utili alla definizione.

    Concludendo i nuovi timers possono gestire temporizzazioni fino a oltre 24 giorni con risuluzione al ms.

    in risposta a: Acquisizione codice a barre #76553
    Sergio Bertana
    Amministratore del forum

    Non mi torna il tipo di uscita indicato…

    Se è un Profibus DP non abbiamo nessun prodotto per questo tipo di interfaccia.

    Se invece si tratta di una seriale RS232 possiamo proporre qualche soluzione. Se indichi il modello del lettore magari con un datasheet possiamo capire meglio di cosa si tratta.

    in risposta a: Protocollo unitelway Telemecanique #76544
    Sergio Bertana
    Amministratore del forum

    A questo punto l’unico modo per capire il problema è collegarsi da remoto con Teamviewer per verificare le impostazioni  sia del PLC che dell’HMI.

    Contatta via mail il ns supporto tecnico inviando i tuoi dati per un contatto.

    Eventualmente nella mail metti anche le foto dei due connettori (Lato PLC e lato HMI) per una verifica… i tecnici sono come San Tommaso ci vogliono mettere il naso…

    in risposta a: Protocollo unitelway Telemecanique #76515
    Sergio Bertana
    Amministratore del forum

    Hai verificato il cavo con quanto riportato dalla guida connessioni PLC nel documento Schneider_UniTelway.pdf.

    Se il cavo è corretto e la messa a terra connessa, puoi realizzare un progetto vuoto con una una sola tag a WORD e verificare che il collegamento funzioni. Non vorrei che hai un progetto complesso e qualche TAG nel progetto non punta correttamente l’area del PLC.

    in risposta a: Visualizzazione alterna di due pagine ed accesso da cMTViewer #76508
    Sergio Bertana
    Amministratore del forum

    Vediamo come realizzare nel modo corretto le sequenze.

    La visualizzazione delle pagine sia sul monitor che da cMTViewer inizia sempre dalla startup window (Default la nr 10), quindi la sequenza parte sempre da questa pagina.

    Ora immaginiamo che le due pagine da visualizzare in alternanza siano la 10 e la 11, come detto nella pagina 10 l’oggetto Action Trigger ti porterà nella 11 e nella 11 un’altro oggetto Action Trigger ti porterà alla 10.

    Anche chi si collegherà con cMTViewer avrà lo stesso comportamento ma se nelle due pagine (10 e 11) metti un pulsante che ti porti ad esempio alla pagina 20 chi si connette con cMTViewer lo potrà spostarsi sulla pagina 20 e da qui navigare su tutte le pagine, mentre sul monitor continueranno ad alternarsi le pagine 10 e 11.

    in risposta a: Lettura valore negativo da macro con GetData #76479
    Sergio Bertana
    Amministratore del forum

    Vedo che hai dichiarato la variabile di tipo int, non so che tipo di variabile hai definito nella impostazione di X sul pannello. Le variabili LW sul pannello sono variabili a 16 bit quindi:

    • Se dichiari la variabile come 16-bit Signed nella macro la funzione GetData dovrà appoggiare il valore su una variabile di tipo short.
    • Se dichiari la variabile come 32-bit Signed (Utilizza 2 LW consecutive) nella macro la funzione GetData dovrà appoggiare il valore su una variabile di tipo int.
    • Se dichiari la variabile come 32-bit Float (Utilizza 2 LW consecutive) nella macro la funzione GetData dovrà appoggiare il valore su una variabile di tipo float.

    Ecco la macro da me testata.

    macro_command main()
    short V16Bit=0
    int V32Bit=0
    float VFloat=0
    
    GetData(V16Bit, "Local HMI", LW, 0, 1)
    GetData(V32Bit, "Local HMI", LW, 10, 1)
    GetData(VFloat, "Local HMI", LW, 20, 1)
    
    TRACE("Value 16-bit: %d", V16Bit)
    TRACE("Value 32-bit: %d", V32Bit)
    TRACE("Value Float: %f", VFloat)
    end macro_command
    in risposta a: Visualizzazione alterna di due pagine ed accesso da cMTViewer #76435
    Sergio Bertana
    Amministratore del forum

    Per il cambio automatico della pagina in visualizzazione sul monitor hai due possibilità.

    • Programmi un PLC Control, di tipo Change window che definendo una variabile PLC ti permette di comandare la pagina in visualizzazione sul monitor. Se vuoi gestire la pagine direttamente dal terminale allora definirai nell’oggetto una variabile LW interna al pannello e con una macro eseguita a tempo esegui lo scambio.
    • Nelle due (O più) pagine che routano a monitor, inserisci un oggetto Action Trigger (Per-Page), con impostato ad apertura pagina un delay xx secondi che comanda il cambio pagina.

    Il cMTViewer si apre sempre puntando la Startup window (Che di default è la pagina 10) ma la puoi impostare nei System Parameters.

Stai visualizzando 15 post - dal 406 a 420 (di 4,421 totali)