Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 2,236 a 2,250 (di 4,367 totali)
  • Autore
    Post
  • in risposta a: Blocco funzione per connessione a server FTP #39424
    Sergio Bertana
    Amministratore del forum

    Non occorre disabilitare nulla basta definire l’IP anzichè l’URL, esempio:

    http://FTP.FTPServer:=ADR(‘192.168.0.10’); (* Server FTP *)

    Il blocco funzione riconosce che il server è indicato come indirizzo IP (Dotted) e si connette direttamente all’indizizzo indicato.

    in risposta a: Supervisione con moduli I/O digitali e analogici #39422
    Sergio Bertana
    Amministratore del forum

    Non capisco però quando dici supervisione da PC, se usi un pannello operatore hai lo schermo del pannello ed eventualmente lo puoi vedere da remoto via VNC, se utilizzi un cMT-SVR lo puoi vedere da PC con il viewer oppure da smartphone e tablet.

    Pr quanto riguarda gli I/O remoti abbiamo I/O da ethernet ma considerando che hai un mix di I/O digitali ed analogici ti posso consigliare (anche perchè spendi meno) un modulo NetlogIII che dispone di 12 ingressi digitali 8 uscite digitali, 4 ingressi analogici 2 uscite analogiche. Ed inoltre essendo programmabile puoi un fare eventualmente anche delle operazioni sui segnali, esempio conteggi, temporizzazioni, linearizzazioni analogiche, ecc.

    Il NetlogIII inoltre ha un server web integrato e se vuoi solo visualizzare i valori puoi realizzare una pagina web con lo stato degli I/O sia logici che analogici ed usare un browser per la visualizzazione senza utilizare il pannello.

    in risposta a: Problema con funzione SysVarsnprintf #39421
    Sergio Bertana
    Amministratore del forum

    Ho creato il programma Printf, con l’essenza del tuo ed ho potuto verificare che il problema è nella CONCAT la quale inspiegabilmente taglia la stringa a 100 caratteri. Per evidenziare anche agli altri utenti del forum il problema ecco la stampa del programma, come vedi ho utilizzato la nuova funzione SysLWVarsnprintf che ha il vantaggio di accodare automaticamente la stampa al contenuto del buffer.

    Nota nella SysLWVarsnprintf definisci la lunghezza della stringa risultato in questo modo la funzione provvede automaticamente a limitare la lunghezza dell’output per non sforare.

    Ho sostituito la CONCAT con un’altra chiamata alla funzione SysLWVarsnprintf per inserire il di fine stringa, inoltre siccome nel debug delle stringhe LogicLab non visualizza stringhe lunghe, ho inviato la stringas in uscita sulla porta COM0 in questo modo la posso catturare con Toolly (Screenshot) per verificare che funzioni (Download programma).

    in risposta a: EasyAccess spostare terminale da un dominio ad un’altro #39418
    Sergio Bertana
    Amministratore del forum

    Si certo il codice della Activation card è utilizzabile per un massimo di 3 volte. Per recuperare il codice si và nell’account dove è registrato il pannello, si seleziona il pannello dal quale vuoi recuperare l’uso della card e con Edit HMI si visualizzano le informazioni di connessione. Con il tasto Deactivate HMI è possibile recuperare il codice della Activation card (Screenshot).

    Attenzione il terminale và disattivato e non cancellato dal dominio come visto nel post precedente. Ricordo che EasyAccess si può attivare in prova gratuitamente per un mese sul terminale, consiglio di utilizzare il periodo di prova per i tests anzichè Attivare/Disattivare il terminale.

    in risposta a: Collegamento wireless da abitazione a router in ufficio #39416
    Sergio Bertana
    Amministratore del forum

    Il post era di qualche anno fà, e con la velocità con la quale vengono obsolettati prodotti è un caso ancora trovarne traccia. Comunque tutta al famiglia NanoStation è cresciuta diventando NanoStation M, quindi puoi utilizzare due NanoStatiom M a 5 GHz per la tua applicazione. Consiglio di aggiungere ad ogni NanoStation anche il supporto per montaggio a palo universale così da poter gestire al meglio l’allineamento.

    in risposta a: FB per sincronizzazione con server NTP #39414
    Sergio Bertana
    Amministratore del forum

    Premesso che si può eseguire l’ugrade del firmware del modulo SlimLine e trasformarlo in un XTarget_12 (Vedi FAQ) e poi utilizzare la nuova libreria. Ti posso comunque postare la libreria ePLCUtyLib_C020.pll con il FB da te richiesto.

    in risposta a: Acquisire stato del segnale CTS della porta seriale #39412
    Sergio Bertana
    Amministratore del forum

    Immagino tu stia utilizzando la porta seriale COM0, questa porta è una porta speciale, è infatti la porta da cui è possibile eseguire l’upgrade del bootloader e del firmware (Vedi FAQ).

    E per l’upgrade del bootloader viene utilizzata una procedura software che è nativa nel processore, questa procedura si attiva automaticamente se il segnale CTS è attivo alla accensione del processore, ed è proprio per evitare di attivare per errore questa procedura che nei moduli CPU è predisposto il ponticello LK1.

    Senza il ponticello LK1 inserito il segnale CTS è interrotto e non arriva al processore, quindi se vuoi utilizzare il segnale CTS devi spostare il ponticello da LK9 in LK1. Ma attenzione a come il disositivo connesso alla porta seriale gestisce il CTS, perchè se lo tiene attivo alla accensione del modulo CPU viene attivata la procedura di upgrade del bootloader.

    Non ci sono problemi anche se si attiva la procedura di upgrade del bootloader, ll modulo CPU non si avvia ed attende l’upgrade, basta spegnere e riaccendere disattivando il CTS e tutto riprende normalmente a funzionare senza problemi.

    Ecco perchè se hai un modulo con più porte seriali ti consiglio di utilizzare la COM1, in caso contrario stai attento al livello del CTS alla accensione del modulo CPU. Ho realizzato il programma SerialCTS per l’acquisizione del segnale CTS (Download programma).

    in risposta a: Tempo di riconnessione al server da FB TCP Client #39410
    Sergio Bertana
    Amministratore del forum

    Non mi dici se lato client esegui l’invio di dati al server… perchè se non c’è invio di dati tutto quello che hai descritto è normale in una comunicazione TCP/IP. Il client dopo aver terminato la three way connection attiva Connected e non ha nessun altro metodo per capire che la connessione è attiva.

    Se il server chiude la connessione allora riceve un pacchetrto di chiusura e se ne accorge ma se tagli il cavo, ammazzi il processo server, o qualsiasi altra ipotesi che non sia la chiusura corretta della connessione non può essere gestita dal client. Non so cosa vuol dire riavviare il server ma se vuol dire spegnerlo e riaccenderlo ancora una volta il client non può accorgersene.

    Ecco perchè non mi stufo mai di dire che se si desidera avere la certezza che client e server siano effettivamente connessi deve sempre essere inviato dal client un pacchetto dati verso il server ed allora si che il FB sulla mancata consegna del pacchetto può accorgersi che non è più connesso…

    Il TCP/IP è così… una volta aperta la connessione se non ci si parla il socket vive nell’ignoranza…

    in risposta a: Problemi di comunicazione Modbus RS232 #39407
    Sergio Bertana
    Amministratore del forum

    Da quello che dici si è svelato il problema… Consiglio comunque l’utilizzo dello spionaggio per capire meglio cosa capita… a causa dei ritardi di loop non arrivano i caratteri in tempo sufficentemente breve al modulo di espansione per garantire un flusso di trasmissione costante. In pratica il frame modbus viene trasmesso con delle interruzioni, ed il PLC Panasonic interpreta queste interruzioni come fine frame. Andando ad interpretare il frame su di un fine frame errato non capisce il comando e quindi non risponde.

    Mi sembra di capire che utilizzi la COM standard del modulo CPU per dialogare con un’altro modulo SlimLine, se è così basta scambiare le porte, usi la COM standard per dialogare con il Panasonic e quella del modulo di espansione per dialogare con lo SlimLine. Nello SlimLine slave dovrai inserire il FB modbus slave ed aumentare il tempo di IFTime per compensare i buchi di trasmissione.

    Altra soluzione, imposti un valore in DTROnTime sulla PCOMx.x in questo modo prima di trasmettere i caratteri sulla seriale il modulo attende il tempo definito. Ma nel frattempo si dà modo al modulo CPU di trasferire tutti i caratteri da trasmettere e così quando inizia la trasmissione non ci saranno più buchi.

    Non è che il Panasonic supporta il modbus Ascii, il modbus ascii non patisce i problemi legati ai tempi di ritardo. Puoi anche usare il Modbus ascii nel caso decidi di usare la PCOMx.x per dialogare con il modulo SlimLine così non devi effettuare modifiche puoi usare la gestione modbus gestita dal sistema operativo.

    in risposta a: Problemi di comunicazione Modbus RS232 #39405
    Sergio Bertana
    Amministratore del forum

    Abbiamo parecchie situazioni in cui viene utilizzato il ModbusMaster su porte PCOMx.x sui moduli di espansione, queste porte sono gestite ad ogni loop di programma in background, è d’obbligo che l’esecuzione della FB ModbusMaster che la utilizza sia nella task Back. Il modulo periferico cattura i dati seriali e li bufferizza e poi li passa al modulo CPU ad ogni loop di programma, essendo il protocollo Modbus basato sui tempi di pausa della comunicazione tutti questi passaggi creano notevoli perturbazioni sui tempi.

    Ma il tuo vantaggio è che gestisci il protocollo lato master, quindi puoi avere il completo governo dei tempi, quindi il consiglio è di impostare il valore di IFTime ad almeno 2 volte il tempo di esecuzione della task Back, o per stare tranquillo puoi anche impostarlo a valori grandi (Esempio 5000 o più). L’aumento del IFTime garantisce che il FB ModbusMaster prende in considerazione il frame ricevuto solo dopo l’assenza di ricezione caratteri per il tempo impostato.

    in risposta a: Comando Force Single Coil nella FB ModbusMaster #39404
    Sergio Bertana
    Amministratore del forum

    In effetti c’è un refuso nella documentazione il comando 05 Force Single Coil è gestito dalla FB ModbusMaster, non lo era nelle primissime versioni della libreria ma poi è stato aggiunto. Quindi ti consiglio di utilizzare l’ultima versione di libreria.

    in risposta a: Visualizzazione interfaccia grafica da web browser #39403
    Sergio Bertana
    Amministratore del forum

    Grazie della segnalazione ho corretto il link. Se vuoi puoi mandare il tuo progetto a support e ci diamo una occhiata.

    in risposta a: Tempo di riconnessione al server da FB TCP Client #39400
    Sergio Bertana
    Amministratore del forum

    Ho eseguito una modifica al programma precedente anzichè testare il fronte di disattivazione del TCPClient.Connected ho inserito un timer. In questo modo si è certi di controllare lo stato di TCP client disconnesso e di disabilitare per un loop il FB per forzare la riconnessione. Ecco la stampa del programma ed il progetto per il download.

    in risposta a: Tempo di riconnessione al server da FB TCP Client #39399
    Sergio Bertana
    Amministratore del forum

    Ho fatto delle prove ed in effetti ho visto che se la connessione del FB client ha la porta fissata (Come nell’esempio FBD), il PC non accetta la riconnessione immediata. Se tu utilizzi Wireshark ed analizzi la rete, vedrai che lo SlimLine invia il pacchetto di apertura connessione ma il PC lo rifiuta.

    La soluzione al problema è lasciare libera la porta da cui il client effettua la connessione TCPClient.LocalPort:=0; in questo modo ad ogni riconnessione il client cambia la sua porta ed il PC vedendo arrivare la connessione da una nuova porta la accetta immediatamente.

    Ti ricordo comunque che vi è un tempo di riconnessione cablato nel FB SysTCPClient di circa 10 secondi, se vuoi evitare questo tempo ed avere la riconnessione immediata devi gestire il comando di Connect da programma. Ecco come ho fatto:

    IF (TCPClient.Connected <> OneShot) THEN
      OneShot:=TCPClient.Connected;
      IF NOT(TCPClient.Connected) THEN TCPClient.Connect:=FALSE; END_IF;
    END_IF;

    TCPClient(); (* TCPClient management *)
    TCPClient.Connect:=TRUE; (* Connect command *)

    In questo modo come vedi appena il client si disconnette disabilita per un loop il comando di Connect per poi riabilitarlo. Ecco la stampa del programma ed il progetto per il download.

    in risposta a: Ripristino comunicazione verso server #39398
    Sergio Bertana
    Amministratore del forum

    Ho sviluppato una macro che si connetteva ad un server un pò di tempo fà, ho cercato in quello che avevo fatto ed ecco quello che ho trovato.

    short NullValue = 0
    bool BOOLFalse= 0
    bool BOOLTrue = 1
       
    SetData(NullValue, “Local HMI”, LW, 9600, 1) //PLC 4’s IP0 (IP address = IP0:IP1:IP2:IP3)
    SetData(NullValue, “Local HMI”, LW, 9601, 1) //PLC 4’s IP1 (IP address = IP0:IP1:IP2:IP3)
    SetData(NullValue, “Local HMI”, LW, 9602, 1) //PLC 4’s IP2 (IP address = IP0:IP1:IP2:IP3)
    SetData(NullValue, “Local HMI”, LW, 9603, 1) //PLC 4’s IP3 (IP address = IP0:IP1:IP2:IP3)
    SetData(BOOLFalse, “Local HMI”, LB, 10070, 1) //Toggle LB10070 per riconnettere PLC4
    DELAY(100)
    SetData(BOOLTrue, “Local HMI”, LB, 10071, 1) //Toggle LB10070 per riconnettere PLC4

    In pratica forzo la connessione su un IP inesistente e poi reimposto l’IP corretto e riforzo la connessione. Devi duplicare il pezzo di codice soprariportato, utilizzando il PLC che hai configurato come Free protocol, nel mio caso era il PLC4.
    Diventare clienti ci aiuta a mantenere in vita il supporto…

Stai visualizzando 15 post - dal 2,236 a 2,250 (di 4,367 totali)