Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 2,356 a 2,370 (di 4,374 totali)
  • Autore
    Post
  • in risposta a: Comunicazione Modbus multidrop wireless #39246
    Sergio Bertana
    Amministratore del forum

    Hai provato a mischiare il master del vecchio modello con gli slaves del nuovo modello e viceversa. Tanto per capire se il problema è nella gestione del master o dello slave. Poi non ti rimane altro che compilare l’RMA ed inviarceli per dei tests. Io poi li proverò con un dipostivo Modbus per capire se funzionano.

    in risposta a: Comunicazione Modbus multidrop wireless #39244
    Sergio Bertana
    Amministratore del forum

    Molto strano quello che dici, se và in RS232 vuol dire che la comunicazione tra i due convertitori funziona, se il tuo dispositivo slave riceve i dati sembrerebbe che la comunicazione è corretta (quindi baud rate, parità, ecc).

    Il fatto che il tuo dispositivo trasmetta la risposta ma questa non arrivi al master sembrerebbe indicare che il convertitore non riesce a capire il frame ricevuto dal tuo dispositivo. Questo è molto strano e strano sopratutto il fatto che i modelli che hai in casa funzionino.

    Non sono sicuro sul tipo di comunicazione che hai tra il convertitore ed il tuo dispositivo, è una RS485 a due o quattro fili ?

    in risposta a: Comunicazione Modbus multidrop wireless #39242
    Sergio Bertana
    Amministratore del forum

    Il convertitore ATC-3200 è un convertitore ZigBee/Seriale, tramite il software a corredo è possibile configurare il dispositivo come master o come slave. Un dispositivo master può dialogare con tanti dispositivi slaves e questo permette di creare reti multidrop.

    Naturalmente la rete funziona come la rete cablata, l’apparecchiatura connessa con il convertitore ATC-3200 master invia il pacchetto di interrogazione con l’ID del dispositivo slave da interrogare, tutti i convertitori ATC-3200 salve ricevono il pacchetto e lo inviano alla loro seriale. Ma solo l’apparecchiatura slave con l’ID richiesto risponderà ed il pacchetto verrà ricevuto dal master.

    Ora da quello che scrivi, sembra che il pacchetto di interrogazione Modbus inviato dal PC master arrivi alla apparecchiatura slave ma non funziona l’invio della risposta al master. Per provare ti consiglio di utilizzare una classica connessione in RS232, sul convertitore ATC-3200 slave connetti un loopback (Cortocircuita tra di loro i pin 2 e 3 del connettore DB9 della seriale). In questo modo tutto quello che viene ricevuto viene ritrasmesso.

    Sul PC utilizzando un programma di emulazione terminale (Esempio Toolly) invia dei caratteri verso la seriale del convertitore ATC-3200 master, dovresti ricevere il carattere indietro dallo slave. se non lo ricevi puoi collegare un’altro PC alla seriale del convertitore slave e sempre con Toolly verificare se i caratteri inviati dal master sono ricevuti dallo slave e puoi anche testare l’invio verso il master.

    L’esito di queste prove ci danno l’idea del funzionamento del convertitore, poi possiamo passare al test con il Modbus.

    in risposta a: Comunicazione tra due SlimLine via Ethernet #39239
    Sergio Bertana
    Amministratore del forum

    Il modo più semplice di scambiare dati tra diversi dispositivi SlimLine è utilizzare il FB UDPDataTxfer. Il FB utilizza il protocollo UDP per lo scambio dati ed è possibile definire la dimensione in bytes dell’area da scambiare tra i dispositivi (Topic, Topic). Naturalmente trattandosi di connessione in UDP non si parla di Client/Serrver ma di comunicazione peer to peer, però il concetto non cambia, i due sistemi si scambiano dati.

    Se invece la tua domanda è più didattica, cioè vuoi capire come sfruttare le nuove caratteristiche del firmware che permettono di realizzare connessioni Client/Server TCP occorre fare alcune premesse. Il file pointer delle FBs SysTCPClient e SysTCPServer è uno stream di comunicazione tutto quello che invii (Funzioni Sysfputc, Sysfwrite) da un lato lo puoi leggere dall’altro con le funzioni Sysfgetc, Sysfread.

    Ora per inviare dati da un sistema all’altro devi costruirti un protocollo, il mio consiglio è utilizzare ad esempio il Modbus che è già pronto, puoi usare il FB ModbusMaster, su di un sistema, mentre dall’altro il supporto del protocollo Modbus slave è già nativo. Ti posto una cartella con due progetti uno TCPModbus è la gestione del master modbus (Vedi stampa), l’altro SlaveSystem è il progetto da caricare sul sistema slave.

    Nello slave mi sono limitato a copiare la word MW100.32 sulla MW100.0, il sistema master legge 16 words dallo slave ad indirizzo 40000 (Address reale 100.0) ed invia 16 words ad indirizzo 40016 (Address reale 100.32). Con il sistema master in debug come vedi dallo screenshot puoi forzare uin valore nella MdbWr e te lo ritrovi dopo un po nella MdbRd. Il programma esegue una comunicazione modbus ogni secondo MMdb.Delay:=1000; (* Communication delay *) ma tu puoi modificare il valore (Download progetto).

    in risposta a: Inserire da programma un testo in una List Box #39238
    Sergio Bertana
    Amministratore del forum

    Si certo, i testi di una List Box (Oggetti -> Pulsanti -> Opzioni) possono essere scelti da diverse opzioni (Screenshot), selezionando l’opzione Indirizzo Item è possibile acquisire i testi da variabili. Nel mio esempio utilizzo variabili terminale, come vedi ho definito una lunghezza per ogni voce di 4 words (16 caratteri).

    La LW 0 è utilizzata per il controllo del List Box, sono utilizzate due words, LW 0 impostandola  a 1 forza la visualizazione dei testi, nella LW 1 si definiscono il numero di linee da visualizzare. I vari testi iniziano dalla LW 10, quindi avremo LW 10-13 prima riga, LW 14-17 seconda riga, ecc…

    Nel mio esempio (Testabile sul simulatore) puoi vedere il funzionamento del programma (Ecco lo screenshot), come vedi ci sono 4 caselle per l’impostazione dei testi. Nella casella Numero righe lista LW 2 devi indicare il numero di righe che vuoi visualizare. Puoi in simulazione modificare i vari testi e poi scrivendo 1 nella casella Aggiorna Lista LW 0, i testi definiti verranno visualizzati. Nel mio esempio come vedi ho appoggiato la selezione nella casella Indice selezionato LW 2, effettuando la selezione viene ritornata la linea, il conteggio parte da 0 (Download programma).

    in risposta a: Nuova funzione cross reference in LogicLab 4 #39237
    Sergio Bertana
    Amministratore del forum

    La finestra Cross Reference permette di avere una visualizzazione immediata di tutti gli oggetti utilizzati nel programma con la visualizzazione di dove l’oggetto è utilizzato (Screenshot).

    Per utilizzare il Cross Reference occorre abilitarlo nelle opzioni di progetto, è possibile selezionare quali oggetti si desidera includere ed a ogni compilazione LogicLab crea un file di cross reference (Nella cartella di progetto viene creato un nuovo file con estensione crf).

    Dalla finestra di Cross Reference è possibile selezionare l’oggetto che si desidera e viene visualizzato l’elenco di tutti i punti dove è utilizzato. Un click con il mouse sulla riga permete di aprire l’oggetto posizionadosi sul punto di utilizzo.

    in risposta a: Operazioni con numeri in virgola mobile #39236
    Sergio Bertana
    Amministratore del forum

    Sugli oggetti di Visualizzazione/Inputazione numerica è possibile definire come formato dati il tipo 32-bit Float, in questo modo il valore che definisci verrà trattato come un numero a virgola mobile. Come vedi in questo screenshot ho definito un oggetto di inputazione numerica per impostare il valore di Set appogiando il valore sulla LW 0.

    Ho inserito un analogo oggetto per la visualizzazione del risultato indicando come indirizzo letto la LW 2. Nota: ho saltato la LW 1 perchè le variabili float sono a 32 bits e quindi utilizzano due LW (LW 0 e 1 per il Set, LW 2 e LW 3 per il risultato). Nella macro che esegue l’operazione eseguita ciclicamente ogni secondo ho scritto:

    macro_command main()
    float Var
    GetData(Var, “Local HMI”, LW, 0, 1)
    Var=Var/10.5
    SetData(Var, “Local HMI”, LW, 2, 1)
    end macro_command

    Come vedi il valore delle LW 0/1 viene copiato nella variabile locale Var, viene poi eseguita la divisione per 10.5 ed il risultato è appoggiato nelle LW 2/3. Ecco lo screenshot del programma eseguito sul simulatore. Come vedi il numero 255.80 viene diviso per 10.5 dalla macro e viene visualizzato il risultato 24.36 (Download programma).

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

    Con la nuova versione del sistema operativo abbiamo inserito la gestione del DNS, ora è possibile definire nelle connessioni TCP/UDP oltre agli indirizzi IP anche gli URLs. Ecco quindi che il FB SNTPRequest ha la possibilità di definire nell’ingresso NTPServer un URL. Per permettere di definire URLSs di lunghezza variabile abbiamo trasformato il tipo dato da STRING a pointer @USINT. Occorre quindi passare l’indirizzo della stringa definizione server.

    Nel manuale gli esempi solitamente sono in linguaggio Ladder, ma ho provveduto nella nuova versione del manuale a riportare anche un esempio in ST (Estratto manuale). Allego anche il progetto SNTPTime di esempio (Download progetto).

    in risposta a: Protezione con credenziali di accesso su pagine #39233
    Sergio Bertana
    Amministratore del forum

    Probabilmente succede quello che capita a molti specie usando EasyBuilder su PC portatili, la finestra delle impostazioni è grande e supera la dimensione dello schermo. In questo modo viene oscurata la parte in basso proprio quella con il tasto di Ok.

    Di solito basta togliere la barra di Windows (Rendendola automatica o spostandola su di un lato dello schermo per guadagnare lo spazio sufficente a visualizzare il pulsante di Ok (Screenshot).

    in risposta a: Visualizzazione di un oggetto condizionata da 2 bits #39231
    Sergio Bertana
    Amministratore del forum

    Un modo per realizzare quello che  tu chiedi è ad esempio di utilizzare una macro.
    Fermo restando l’abiltazione alla visualizzazione del pulsante condizionata da un bit (Nell’esempio LB 0), ho realizzato una macro eseguita ciclicamente che esegue la AND tra due bits (LB 1 ed LB 2) ed invia il risultato della AND sul bit di abilitazione LB 0. In questo modo solo se entrambi i bits di abilitazione sono attivi il pulsante sarà visibile. Ecco il listato della macro.

    macro_command main()
    short EnableSts[2] //Bits stato abilitazione
    short EnableCmd //Bit comando abilitazione

    GetData(EnableSts[0], “Local HMI”, LB, 1, 2) //Leggo stato LB 1 ed LB 2
    EnableCmd=EnableSts[0] and EnableSts[1]
    SetData(EnableCmd, “Local HMI”, LB, 0, 1) //Imposto stato LB 0
    end macro_command

    Ho realizzato un progetto di esempio eseguibile in simulazione su PC (Download progetto).

    in risposta a: Protezione con credenziali di accesso su pagine #39230
    Sergio Bertana
    Amministratore del forum

    Non mi spiego il motivo ho provato io stamattina a fare quello che hai fatto tu (Ecco lo screenshot) e non ho avuto problemi. Ne ero certo perchè è una soluzione che molti dei nostri clienti utilizzano.

    Prova a fare un progetto nuovo e verifica se funziona per capire se è dovuto al progetto o all’installazione di EB8000. La versione che utilizzo io e la V4.65.07 Build 2013.06.25.

    in risposta a: Raggruppamento variabili nel nuovo LogicLab 4 #39228
    Sergio Bertana
    Amministratore del forum

    Nel LogicLab 4 Axel ha apportato alcune migliorie, una di queste riguarda la possibilità di avere il Workspace customizzabile. Con questa caratteristica è possibile creare cartelle proprie nel Workspace per meglio suddividere i programmi.

    Attivando questa caratteristica anche le variabili vengono suddivise in cartelle separate in base al gruppo di appartenenza e non si ha più la visione globale di tutte le variabili come si aveva con le precedenti versioni di LogicLab. Personalmente preferisco questo tipo di personalizzazione che mi permette di razionalizzare sia i programmi che le variabili secondo uno schema logico.

    Ma nessuna paura, puoi scegliere di continuare ad usare la vecchia soluzione di Workspace togliendo il tick di spunta nelle opzioni di  progetto (Screenshot).

    in risposta a: Gestire un conteggio veloce su ingresso digitale #39227
    Sergio Bertana
    Amministratore del forum

    Il FB SysGetCounter permette di sfruttare il circuito hardware di conteggio presente in alcuni moduli, per vedere i moduli che dispongono del counter devi fare riferimento al manuale di descrizione hardware del modulo.

    Il modulo CPU ha un solo counter hardware sull’ingresso Di00, quindi è utilizzabile, però non dispone degli ingressi di Reset e di Reverse. Quindi ecco perchè impostando Mode a 8192 il FB ti dava errore.

    Il fatto che conti due impulsi giro con Mode a 0 mi suggerisce un problema di rimabalzi sulla lettura, essendo il counter hardware molto veloce basta anche un impulso piccolissimo per generare un clock. Sono sicuro che se mettessi  un oscilloscopio sull’ingresso vedresti i due impulsi.

    Attenzione, il counter hardware gestisce il conteggio in modo autonomo, quindi il programma che esegue il FB SysGetCounter può essere tranquillamente messo sia nella task Slow che nella Back.

    in risposta a: Gestire un conteggio veloce su ingresso digitale #39225
    Sergio Bertana
    Amministratore del forum

    Come dici tu il sensore magnetico legge un solo punto sull’albero, quindi non devi utilizzare la frequenza come parametro di riferimento, ma il tempo di attivazione del sensore. Per assurdo se il punto di controllo è puntiforme la durata dell’impulso può essere di pochi mS.

    Considerando che gli ingressi digitali hanno un filtro hardware di 4,7 mS e che sono acquisiti nella task Slow ogni 10 mS capisci che l’impulso può andare perso. Per essere certi di acquisire impulsi molto brevi devi acquisire direttamente gli ingresi con la funzione SysGetPhrDI come indicato in questo topic.

    in risposta a: Collegare 2 PC ad un registratore di cassa per scontrino #39223
    Sergio Bertana
    Amministratore del forum

    Se  è così come dici potrebbe funzionare…Ma se la connessione Ethernet non è una condizione essenziale puoi anche utilizzare una connessione in RS422, utilizzando 3 convertitori RS232/RS422 tipo l’ATC-105, puoi creare una rete tra le seriali dei 2 PC e la stampante. In alternativa se non hai la seriale sul PC puoi utilizzare l’ATC-850 che esce già in RS422. Questa soluzione ha l’indubbio vantaggio di non utilizzare il software Virtual COM che più di una volta ha già manifestato problemi di incompatibilità con alcuni applicativi sul PC. Non abbiamo prodotti usati, per il diritto di recesso abbiamo la formula “Soddisfatti o Rimborsati“.

Stai visualizzando 15 post - dal 2,356 a 2,370 (di 4,374 totali)