Sergio Bertana
Risposte nei forum create
- 
		AutorePost
 - 
		
			
				
Aprile 17, 2013 alle 7:55 am in risposta a: Normativa italiana per utilizzo dispositivi wireless LAN #37631
Sergio Bertana
Amministratore del forumSeguendo quanto indicato nel manuale utente AirOS scaricabile dal nostro sito, la voce guadagno di antenna e perdita di potenza nel cavo sono applicabili solo per i dispositivi che prevedono un connettore di antenna, quindi se il dispositivo è munito di antenna la voce non và definita.
Antenna Gain (Only applicable to devices with external antenna connectors.) Enter the antenna gain in dBi. With Auto Adjust to EIRP Limit enabled, Antenna Gain calculates the TX power backoff needed to remain in compliance with local regulations.
Cable Loss (Only applicable to devices with external antenna connectors.) Enter the cable loss in dB. With Auto Adjust to EIRP Limit enabled, Cable Loss affects the TX power of the device.
Quindi nel tuo caso non devi impostare nulla, ma solo definire la potenza in uscita, se fissi il tick su AutoAdjust EIRP la potenza viene automaticamente impostata a 20 dB.
In pratica i dati di Antenna Gain e Cable Loss servono solo nel caso di dispositivi con antenna esterna a calcolare l’effettiva potenza irradiata per poterla impostare correttamente in base alle normative del paese.
Sergio Bertana
Amministratore del forumIntanto una precisazione, l’indirizzo dei moduli di estensione SlimLine non dipende dalla posizione in cui sono messi, ma deve essere settato tramite i dip switches presenti sotto al frontalino di plastica. In pratica con un cacciavite sui fà una leggera pressione nel taglio in basso sul frontalino e si sfila, poi si imposta l’indirizzo desiderato.
Per la lettura analogica si utilizza il blocco funzione SysGetAnInp mentre per la gestione delle uscite analogiche si utilizza il blocco funzione SysSetAnOut. Di default il modulo analogico ha indirizzo “0” è quindi nell’ingresso Address delle FB devi definire “0”. Nell’ingresso Channel delle FB devi definire il numero del canale che vuoi gestire.
Come hai detto tu i 5 canali di ingresso sono da indirizzare con valori da 0 a 4, mentre i 4 canali di uscita sono da indirizzare con valori da 0 a 4.
Aprile 5, 2013 alle 12:34 pm in risposta a: Comunicazione modbus master con serie di HMI Weintek #37627Sergio Bertana
Amministratore del forumConcludo la risposta dicendo che se vuoi eseguire la comunicazione a tempi determinati (Esempio ogni 5 Sec) basterà con un timer eseguire il set di una variabile StartCom, la quale attiverà il blocco funzione (O la serie in cascata dei blocchi funzione) e l’uscita Done della FB (O dell’ultima FB della cascata) andrà a resettare la variabile StartCom.
Naturalmente bisogna che l’intero ciclo di comunicazione duri meno del tempo di attivazione eseguito con il timer.
Aprile 5, 2013 alle 10:26 am in risposta a: Comunicazione modbus master con serie di HMI Weintek #37626Sergio Bertana
Amministratore del forumIl blocco funzione ModbusRTUMaster_v1 come molti altri blocchi funzione è stato pensato per poter essere facilmente eseguito in cascata, per cascata intendo condizionare l’esecuzione di una altra istanza del FB al termine della esecuzione di quella precedente. Come si vede nella stampa di questo programma, 4 istanze della FB sono poste in cascata.
La prima esegue lettura di 16 coils, terminata l’esecuzione (sia con esito positivo che su errore) viene attivata l’esecuzione della seconda che esegue la scrittura di 16 coils, poi viene eseguita la terza con la lettura di 8 registri e poi la quarta con la scrittura di 8 registri. Terminata la quarta attivando Done[3] si disattiva la prima e di conseguenza cadono tutti i Done facendo ripartire il ciclo. Impostando un tempo nella variabile Delay puoi ritardare l’esecuzione di una FB rispetto all’altra.
Qui nel mio programma di esempio (Download programma) comunico sempre con lo stesso terminale ma tu puoi mettere tante FB quante te ne servono indicando come indirizzo di nodo l’indirizzo dei vari terminali della tua applicazione.
Da quanto espresso è evidente perchè non funziona il tuo programma, non puoi utilizzare un fronte per attivare la FB, l’abilitazione deve essere attiva almeno per tutto il tempo di esecuzione comando. Togliendo l’abilitazione la FB termina il suo funzionamento.
Aprile 5, 2013 alle 9:46 am in risposta a: Comunicazione modbus master con serie di HMI Weintek #37624Sergio Bertana
Amministratore del forumStavo preparandoti un esempio, ma vengo alla tua domanda il codice 16#01 è corretto ma devi tenere presente che modbus ha come offset 1 quindi per leggere la variabile LB 0 devi indicare indirizzo 1.
Nel mio esempio (Ecco la stampa del programma PLC) ho gestito la lettura di 16 variabili bit (Da LB 0 a LB 15), nel programma del pannello ho gestito 8 pulsanti toggle da LB 0 a LB 8. Ti allego programmi SlimLine e HMI per il download.
Aprile 5, 2013 alle 6:20 am in risposta a: Comunicazione modbus master con serie di HMI Weintek #37622Sergio Bertana
Amministratore del forumIn attesa di prepararti un esempio, vedo cha hai definito DTRManagement a 0 (DTR_OFF), è questo è sicuramente un errore, dovendo gestire una comunicazione multidrop in RS485 su 2 fili, il segnale DTR è usato come “Commutatore” della direzione dati.
In pratica quando il modulo CPU deve trasmettere verso i terminali il segnale DTR deve essere attivo, e poi quando deve ricevere indietro la risposta il segnale DTR deve essere disattivo. Questo scambio sul segnale DTR viene eseguito automaticamente dal driver seriale dello SlimLine ma devi impostare DTR management a 2 (DTR_AUTO_WO_TIMES).
Credo che sia questo errore la fonte dei tuoi problemi, intanto di rimando anche alla lettura di questi due posts (Post 1) e (Post 2).
Sergio Bertana
Amministratore del forumNon mi dici che modulo CPU utilizzi, il driver USB RNDIS non è disponibile sulle versioni CPU ARM7 Versione A. Se sul tuo modulo è gestito ed utilizzi Windows XP, 7 oppure 8 come detto precedentemente non vi è nessun driver da cercare perchè è nativo nel sistema Windows.Una volta installata la scheda di rete RNDIS devi assegnarle l’indirizzo IP appartenente alla stesa rete del modulo CPU SlimLine (Di default 192.168.1.122), segui quanto riportato nel post precedente.
Sergio Bertana
Amministratore del forumHo contattato il fornitore in merito alla tua domanda sulla possibilità di resettare i valori massimi. La risposta è che il HWg-PWR si limita a leggere tramite M-Bus i dati dai contatori, quindi anche il valore massimo viene letto dal contatore.
Quindi un eventuale reset dello stesso deve essere eseguito a livello contatore (Se il contatore ne è provvisto).
Sergio Bertana
Amministratore del forumPer rispondere nello specifico alla tua domanda ti ricordo che da pannello operatore non puoi accedere direttamente agli I/O reali dello SlimLine, ma puoi accedere solo a variabili mappate nella DB100. Quindi per gestire gli I/O devi definire variabili BOOL in DB100 a partire da indirizzo MB100.16, il terminale agirà su queste variabili.
Ho realizzato un semplice dimostrativo definendo una variabile di appoggio ingresso Inp00 allocata a MB100.16 (Indirizzo Modbus 40016), ed una variabile di appoggio uscita Out00 allocata a MB100.17 (Indirizzo Modbus 40017). Come vedi dalla stampa del programma SlimLine ho semplicemente eseguito un appoggio delle variabili negli I/O reali (Nell’esempio uso gli I/O del modulo CPU).
Sul pannello operatore ho inserito un oggetto lampada bit che ho legato alla variabile 0x 40016 dello SlimLine ed un oggetto ToggleSwitch che ho legato alla variabile 0x 40017 dello SlimLine (Vedi screenshot).
L’oggetto ToggleSwitch permette di definire due variabili, la variabile in lettura viene utililizzata per visualizzare lo stato mentre la variabile in scrittura viene impostata agendo sull’oggetto. Le due variabili normalmente coincidono come nell’esempio. Allego il file sorgente sia del programma su SlimLine che del programma terminale (Download).
Sergio Bertana
Amministratore del forumIl pannello operatore può dialogare con i moduli CPU SlimLine sia tramite una connessione seriale con protocollo Modbus RTU (Di default 115200, e, 8 nodo Modbus 1), che con protocollo modbus over IP (Di default porta 502 nodo Modbus 1). Naturalmente tu disponendo di una versione 6050i che non ha la porte ethernet puoi solo dialogare in seriale.
I comandi Modbus supportati sono il comando 0x per accedere a variabili BOOL ed il comando 3x per accedere a variabili numeriche, sono supportati tutti i tipi di variabili INT, UINT, DINT, UDINT e REAL. Dai una occhiata a questi posts per maggiori informazioni (1), (2). Ma cercando nel forum ne troverai molti altri.
In questo post è riportato un programma di esempio con relativi files sorgenti che ti aiutano nella comprensione di come operare tra pannello HMI e SlimLine.
Sergio Bertana
Amministratore del forumMa per rispondere alla tua domanda ecco lo screenshot di un programma LogicLab che illustra l’uso della funzione SysVarsnprintf per la conversione in stringa di una variabile REAL.
Come si vede dalla finestra di Watch alla variabile Var ho impostato il valore 5.67, la stringa StrOut assume il valore “Value: 5.67” e 11 caratteri sono stati trasferiti in StrOut.
La formattazione %5.2f indica di convertire in stringa una variabile REAL con 5 minimo cifre totali di cui 2 cifre decimali (Nelle cifre totali è compreso il punto). Da notare che siccome il valore della variabile è composto al massimo di 4 cifre 5.67, davanti alla 1a cifra intera è posto uno space.
Sergio Bertana
Amministratore del forum(Da Wikipedia) Molti linguaggi di programmazione implementano una funzione printf, per visualizzare sullo standard output una stringa costruita in base ad un formato specificato. Tale funzione ha origine dal linguaggio C, dove ha un prototipo simile al seguente: int printf(const char *format, …)
Il parametro format è una stringa che descrive il formato da seguire nell’output e che utilizza delle sequenze segnaposto, introdotte dal simbolo percentuale (“%”), per specificare la posizione relativa e il tipo dei dati con cui comporre la stringa.
Nella libreria delle funzioni embedded di SlimLine abbiamo introdotto le due funzioni:
SysVarfprintf, per inviare la stringa sullo stream (eFILE) di uscita.
SysVarsnprintf, per trasferire la stringa in un buffer di memoria.Rimandiamo al manuale Manuale programmazione IEC61131-3 su sistema SlimLine per una spiegazione dettagliata delle due funzioni.
Marzo 28, 2013 alle 10:00 am in risposta a: Calcolo potenza istantanea da lettura impulsi contatore #37611Sergio Bertana
Amministratore del forumAggiungo una nota, al primo impulso il valore di potenza è errato in quanto è evidente che non avendo il sistema memorizzato il tempo di arrivo impulso precedente la differenza dei tempi genera un valore errato.
Per sistemare il problema bisognerebbe aggiungere una variabile BOOL inizializzata a FALSE che verrà settata a TRUE dopo il primo impulso. Con variabile a FALSE il calcolo della potenza non viene eseguito ma si esegue solo il salvataggio dei tempi.
Marzo 28, 2013 alle 9:48 am in risposta a: Calcolo potenza istantanea da lettura impulsi contatore #37610Sergio Bertana
Amministratore del forumL’errore che hai commesso è il più classico, nei calcoli in REAL hai omesso il “.0” nella dichiarazione delle costanti numeriche REAL. Quando scrivi TO_REAL((myTimer-PwrTimeCalc)/(1000000)) tu vorresti eseguire i calcoli in REAL ma in realtà i calcoli sono eseguiti in UDINT e quindi si perdono le parti decimali della divisione.
Per scrivere in forma corretta il calcolo dovresti scrivere TO_REAL(myTimer-PwrTimeCalc)/1000000.0. Cioè converto prima in REAL il risultato della differenza dei tempi e poi eseguo la divisione per 1000000.0 (Nota il .0 finale).
Ho scritto un semplice programma che dimostra come eseguire correttamente il calcolo, ti allego la stampa ed il programma sorgente. Come noti ho definito come costante Impulsi/Kwh del contatore 3600.0 quindi se arriva un impulso al secondo la potenza istantanea è di 1000 Wh.
Marzo 26, 2013 alle 9:03 am in risposta a: Come rendere ritentivo valore quota della FB IOEncoder #37609Sergio Bertana
Amministratore del forumPer semplificarti il lavoro e come aiuto propedeutico allo sviluppo di FB da parte dei clienti, ho convertito l’esempio precedente utilizzando un blocco funzione FBEncoderOnIO costruito ad hoc (Di cui riporto il codice sorgente). Come vedi nel programma (Stampa e Download sorgente), il programma ladder si è enormemente semplificato, in pratica viene eseguito il solo blocco funzione.
Per poter gestire la variabile di Quote con attributo RETAIN ho passato allla FB come input l’indirizzo della variabile, in questo modo il blocco funzione può operare su di essa sia in lettura che in scrittura.
Anche in questo esempio puoi azzerare o presettare il valore di Quote semplicemente con istruzioni MOVE.
 - 
		AutorePost