Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Dicembre 11, 2014 alle 10:10 am in risposta a: Configurazione software monitoraggio iMonnit Express #38580
Sergio Bertana
Amministratore del forumLa prima impostazione dell’indirizzo del server và fatta dal programma di configurazione del sensore Mowi. Poi quando il sensore si connette e si registra al programma iMonnit Express sarà possibile effettuare tutte le impostazioni dal programma stesso.
Tutte le modifiche effettuate alle impostazioni del sensore rimangono residenti nel programma iMonnit Express (Il relativo sensore diventa giallo nell’elenco) e sono inviate al sensore solo quando il sensore si connette al server. Se vi sono configurazioni latenti e/o il sensore non si è mai connesso al server non è possibile effettuare modifiche alle impostazioni.
Dicembre 11, 2014 alle 9:22 am in risposta a: Configurazione software monitoraggio iMonnit Express #38578Sergio Bertana
Amministratore del forumSul sito Monnit Knowledge Base sono reperibili le informazioni relative alla configurazione dei sensori Mowi con il programma iMonnit Express (Link). In estrema sintesi il concetto di funzionamento dei sensori Mowi e che tramite la rete WiFi si connettono al server configurato nella loro parametrizzazione. Per connetterli al programma iMonnit Express o Enterprise occorre configurare l’indirizzo IP (Od il DNS) del PC in cui il programma è in esecuzione. In pratica dall’utility programmazione sensori Wi-Fi (MoWi) come si vede dallo screenshot, occorre nel campo Server Address al posto del server iMonnit sul cloud (u1.sensorsgateway.com) definire l’IP del proprio PC.Una volta configurato correttamente e connesso al programma iMonnit sarà possibile agire direttamente dal programma per effettuare tutte le impostazioni.
Dicembre 10, 2014 alle 5:01 pm in risposta a: Function e FB uso di EN/ENO ed altre informazioni #38577Sergio Bertana
Amministratore del forumI segnali EN (Enable) ed ENO (Enable out) sono dei segnali opzionali che sono automaticamente inseriti da LogicLab nelle funzioni e nei blocchi funzioni per permettere di essere inseriti in un ramo di programma ladder.
Se la funzione o il blocco funzione ha come prima variabile di input e di output due variabili BOOL (Vedi ad esempio l’FB eTOF che ha come prima variabile in ingresso IN e come prima variabile in uscita Q) è possibile evitare di inserire i segnali EN/ENO mettendola direttamente nel ramo ladder. Tutti gli esempi del manuale infatti non usano i segnali EN/ENO.
Per togliere questi due segnali occorre prima di inserire l’oggetto (Funzione o FB) nel ramo disabilitare il pulsante di LogicLab EN/ENO e poi inserire l’oggetto nel ramo ladder. Se l’oggetto è già stato inserito nel ramo con i segnali EN/ENO non è più possibile rimuoverli, occorre cancellare l’oggetto e poi inserirlo con il pulsante EN/ENO disabilitato (Screenshot).
Nota, nella programmazione ladder i segnali EN/ENO sono obbligatori se l’oggetto (Funzione o FB) non dispongono di due variabili BOOL nella prima posizione di ingresso e di uscita. Senza queste variabili non può essere collegato al ramo logico.
Dicembre 10, 2014 alle 3:42 pm in risposta a: Function e FB uso di EN/ENO ed altre informazioni #38575Sergio Bertana
Amministratore del forumLogicLab non permette di definire come variabile in uscita un array, ma questo non è un problema c’è un modo molto semplice di sopperire al problema. In pratica si fornisce come parametro in ingresso alla FB l’indirizzo dell’array su cui deve operare. Meglio di tante parole ecco l’esempio (Screenshot). Nello screenshot trovi anche le risposte alle domade su EN/ENO.
Come vedi dalla stampa del programma ho gestito l’indice dell’array con una operazione di somma sul valore dell’indirizzo. Attenzione, questo è un semplice esempio, occorre controllare che il valore di indice IDx non superi la dimensione dell’array per evitare di andare a sporcare memoria (Download programma).
Sergio Bertana
Amministratore del forumRispolvero questo vecchio quesito a seguito di prove che ho effettuato sui diversi Gateway Modbus che distribuiamo nella gamma dei convertitori Ethernet-Seriale.
In effetti il protocollo Modbus TCP prevede un campo definito Unit Identifier che altro non è che lo Slave Address del protocollo Modbus RTU o Ascii. Quindi a rigore di logica è possibile fare passare questo campo sul protocollo RTU/Ascii per poter gestire connessioni multidrop su rete RS485 con diversi dispositivi in cascata al convertitore.
Ma i convertitori da noi distribuiti al momento attuale non prevedono di fare transitare questo campo (In pratica deve sempre essere indicato come Unit Identifier il valore 0x01). Stiamo “lavorando” con ATC per modificare il firmware del modulo ATC-3001 in modo da permetterne la definizione. Sarà mia cura informare con un post in questo topic sull’evolvere della situazione.
Vista la flessibilità (Ed il costo simile a quello del Gateway) della nostra serie di sistemi programmabili SlimLine, ho realizzato un blocco funzione ed un relativo programma che emula il funzionamento di un Gateway Modbus (Topic). Il vantaggio di un sistema programmabile è che oltre a fare da Gateway può anche essere programmato in base alle proprie esigenze aumentando la flessibilità del sistema.
Dicembre 9, 2014 alle 10:38 am in risposta a: Gestire il comando di uscite digitali da programma su PC #38572Sergio Bertana
Amministratore del forumAggiungo questo post per chi volesse utilizzare una connessione Ethernet in alternativa alla connessione seriale. Ho modificato il progetto precedente suddividendolo in tanti programs:
SerialCom: Questo programma gestisce la connessione seriale.
TCPCom: Questo programma gestisce la connessione Ethernet.
Logic: Questo programma esegue la logica.Come si vede nella sezione Task (Screenshot) ho inserito nella Back i programmi TCPCom e Logic, in qiuesto modo è operativa la connessione in Ethernet. Occorre connettersi in TCP/IP sulla porta 1000 usando un client telnet (Esempio Toolly).
Se si vuole provare la connessione seriale, basterà dalla task back eliminare il programma TCPCom ed inserire il programma SerialCom (Stampa programma, Download progetto sorgente).
Dicembre 4, 2014 alle 9:09 am in risposta a: Manage digital outputs on receiving a command string #38570Sergio Bertana
Amministratore del forumPost a link to this topic (Is in italian, but the source code is easy to understand) that is an enhancement of this topic. The program linked in this topic added to the program linked in the new topic are a useful startup to write own communication program.
Dicembre 4, 2014 alle 8:39 am in risposta a: Gestire il comando di uscite digitali da programma su PC #38569Sergio Bertana
Amministratore del forumQuesto è un esempio di applicazione di un modulo CPU Compact che esalta la natura del modulo, cioè la possibilità di essere utilizzato come un remote I/O connesso al PC in seriale (O in Ethernet nella versione ETH) potendo gestire nel programma locale delle logiche real-time.
Partendo dal programma del topic che tu citavi ho tolgo la FB di invio stato ingressi digitali ed ho modificato la FB DOReceive per adattarla alle tue esigenze. Ora come vedi alla ricezione dei comandi seriali “S0”, “R0”, “SA” l’FB attiva le sue uscite in accordo alle specifiche richieste.
Ho poi aggiunto un piccolo programma in ladder per realizzare il resto della logica che è richiesta dalla tua applicazione (Stampa programma, Programma sorgente).
Sergio Bertana
Amministratore del forumLa perplessità è sul protocollo, non conosco il DNP.3 ma da quanto trovato in rete leggo.
Application layer messages are broken into fragments. Maximum fragment size is determined by the size of the receiving device’s buffer. The normal range is 2048 to 4096 bytes. A message that is larger than a one fragment requires multiple fragments. Fragmenting messages is the responsibility of the application layer.
Sembrerebbe che i messaggi DNP.3 possano essere lunghi minimo 2048 bytes, ed è questa la perplessità, per trasmettere un messaggio sia via Zig-Bee che WiFi il dato và impacchettato ed il buffer per questo nell’ATC-3200 è previsto un buffer di 64 bytes, mentre nei WiFi seriali non conosco la dimensione del buffer ma posso immaginare che sia pari alla dimensione di un frame Ethernet 1500 bytes.
Quindi frames di dimensioni maggiori vengono frazionati per essere spediti e nella ricomposizione da parte del ricevente si hanno dei ritardi che potrebbero creare problemi di interpretazione se il protocollo è time dependant (Esempio Modbus RTU). Quindi non ho una risposta certa su questo punto della tua domanda, ma di certo è che la trasmissione wireless di dati è fatta fisicamente come ho descritto da qualsiasi apparecchio, quindi se è possibile trasmettere wireless il protocollo DNP.3 il convertitore WiFi-Seriale dovrebbe andare bene.
Sergio Bertana
Amministratore del forumTutti i convertitori Wireless-Seriali fanno quello che tu hai bisogno, il semplice ATC-3200 utilizza una trasmissione Zig-Bee per inviare i dati seriali in modalità point-to-point o point-to-multipoint.
l’ATC-1000WF e l’ATC-2000WF utilizzano una connessione WiFi quindi incapsulano i dati seriali in un pacchetto TCP/IP che poi viene inviato ad un access point e/o ad un altro convertitore. l’ATC-1000WF si configura da pagina Web (Topic) mentre l’ATC-2000WF solo da comandi testuali inviati sulla porta seriale.
Sicuramente la trasmissione Zig-Bee è più veloce rispetto alla WiFi ma il WiFi ha il vantaggio di utilizzare l’infrastruttura di rete già esistente e poter trasferire dati anche su cavo ethernet e/o Internet. I convertitori ATC-1000WF e ATC-2000WF non supportano il multicast (Topic) (Trasmissione point-to-multipoint) ma solo il point-to-point.
Dopo tutte queste considerazioni veniamo alla tua domanda, i due convertitori WiFi-Seriale possono dialogare tra di loro sia con un access point intermedio sia direttamente, ma se si fanno dialogare direttamente perchè non usare l’ATC-3200 ?
Sergio Bertana
Amministratore del forumPer fare un pò di luce nella gestione del modbus ti consiglio di attivare la funzione di spionaggio (Topic) sulla FB ModbusMaster, in questo modo puoi vedere da telnet i pacchetti dati inviati e ricevuti da SlimLine verso e da inverter KEB. Vedendo i pacchetti puoi capire cosa risponde l’inverter e capire eventuali errori di numero di nodo, indirizzo registro, numero di registri letti, valore impostato nel registro scritto, ecc. Dai una occhiata a questo topic che tratta un argomento simile al tuo.
Su Internet trovi molti programmi di simulazione Modbus, il sito che ti consiglio di visitare è quello della ModbusTools, dove trovi sia programmi per simulare il modbus master che il modbus slave.
Dicembre 3, 2014 alle 7:46 am in risposta a: Calcolo del numero di moduli estensione possibili #38563Sergio Bertana
Amministratore del forumNon c’è una tabella con tutte le combinazioni possibili, sarebbero troppe, per il calcolo occorre sommare tutti i valori di consumo dei moduli di estensione, fare riferimento al valore indicato nel campo Alimentazione (da bus espansione) presente nelle caratteristiche del modulo di estensione.
Il consumo totale deve essere inferiore o uguale al valore indicato nel campo Alimentazione fornita al bus espansione presente nelle caratteristiche del modulo CPU.
Come esempio un modulo Compact eroga una corrente di 0.65A (650mA) mentre un modulo CPU Full eroga una corrente di 2.5A (2500mA). Ai moduli Compact inoltre non possono essere connessi più di 4 moduli di estensione.
Nel tuo caso ogni Modulo espansione 20I/O mixed signal assorbe 0.28A (280mA), 2 moduli in totale assorbono 0.56A (560mA). Quindi possono essere connessi anche ad un modulo Compact a maggior ragione come nel tuo caso ad un modulo Full.
Lo stesso ragionamento è applicabile ai moduli della serie NetsystIII.
Sergio Bertana
Amministratore del forumSi l’uso delle strutture dati permette di aggregare sutto un unico tipo di dati, dati di tipo eterogeneo, permettendo un ordine ed una semplificazione nella stesura del programma ed una mnemonicità di accesso ai dati. La visualizzazione automatica dei membri della struttura durante la scrittura del programma “IntelliSense” gestita da LogicLab ne rende ancora più agevole l’uso.
Corretto il conteggio del numero di bytes utilizzati, e corretto l’indirizzo definito nella pagina HTM, attenzione invece per quanto riguarda l’indirizzamento da parte del terminale HMI. L’indirizzo 3×40000 corrisponde alla UINT allocata a DB100.0, Quando si accede a registri a 16 bits occorre dividere per 2 l’indirizzo quindi DB100.0->3×40000, DB100.2->3×40001, …, DB100.2048->3×41024.
Ti segnalo questi topics che possono essere utili (1), (2), (3), inoltre visto che ti piace utilizzare le corrette tecniche di programmazione, su HMI ti consiglio di utilizzare le Tags, questo permette una facile modifica degli indirizzi nel programma HMI in caso di variazione allocazione variabili nel PLC (Topic).
Dicembre 2, 2014 alle 2:36 pm in risposta a: Errore 9996200 su scrittura in directory Storage #38560Sergio Bertana
Amministratore del forumE’ una situazione davvero strana vediamo di fare altri tests per capire, se tu elimini dal programma l’accesso al file, dopo la formattazione provi a scrivere un file da una connessione FTP riesci a scriverlo ?
Puoi mandarmi il report del comando da telnet fsstats, subito dopo la formattazione, dopo la scrittura di un file da FTP (Sempre se riesci a scriverlo) e quando hai il problema con il tuo programma.
Eventualmente se puoi mandarmi in privato il programma che provo a fare dei tests.
Sergio Bertana
Amministratore del forumIl più semplice è creare un array 336 variabili USINT che allocherai nella DB100.2048, ogni elemento dell’array corrisponde ad un campo da impostare a gruppi di 6 avremo (HOn, MOn, SOn, HOff, MOff, SOff). Per accedere da pagina web basterà definirne l’indirizzo 2048, 2049, 2050, … è così via.
Ma questo non si sposa bene con il pannello operatore, perchè operando in Modbus si opera su variabili a 16 bits, quindi se vuoi avere una assegnazione che vada bene anche per il pannello userei un array di UINT. Certo si sprecano 336 bytes ma tanto ve ne sono 2048 disponibili.
Se vuoi cimentarti in qualcosa di esteticamente più finito allora devi definire una struttura dati, esempio una struttura che contiene i 6 dati di una programmazione (HOn, MOn, SOn, HOff, MOff, SOff) e poi fai un array di strutture dati. Ancora meglio crei un’altra struttura dati con la programmazione giornaliera e poi un array di queste strutture. Ho cercato di farti un semplice esempio che come vedi dalla stampa gestisce due zone con due orari per zona per tutti i giorni della settimana. L’uso delle strutture semplifica enormemente l’accesso alle variabili di orario, basterà aggiungere altre 2 zone ed il programma è completo (Download programma).
-
AutorePost