Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumNon so come tu sei venuto in possesso della nuova versione di firmware, la policy di Weintek è di non rilasciare con facilità le versioni del firmware al pubblico, nuove versioni sono rilasciate solo in caso di acclarati problemi non risolvibili in altro modo che non con l’upgrade del firmware.
Quindi ecco perché non si trova ne sul sito Weintek ne sul sito dei distributori riferimenti per il download del firmware e/o tantomeno una release note.
Sergio Bertana
Amministratore del forumIl modulo OEM è esattamente lo stesso circuito che trovi nel modulo completo MPS050A020, quindi non ci sono differenze circuitali. Puoi verificare se il firmware installato nei due moduli se è la stessa versione SFW184***0 in caso contrario puoi eseguire un upgrade (Vedi nota).Ma mi dici che devi dare uno start da LogicLab, mi chiedevo non è che quando forzi il reset hai LogicLab connesso, perché in tal caso il sistema si resetta, ma il programma utente non và in esecuzione.
Marzo 12, 2014 alle 7:54 am in risposta a: Lettura sensori temperatura/umidità da programma gestionale #38126Sergio Bertana
Amministratore del forumRiguardo al programma PDMS, esegue la lettura dei valori dai vari dispositivi con un tempo di campionamento impostabile il cui valore minimo è di 1 minuto. I dati sono poi gestiti internamente dal programma e vengono memorizzati su di un file di report con un tempo programmabile che al minimo può essere di 1 ora.
Il file di report generato dal PDMS è un file xml ed al suo interno si trovano tutte le letture eseguite nel periodo di report programmato. Ipotizzando un report ad ogni ora con una lettura ad ogni minuto nel file di report HourReport_H_1403120800.xml creato dal PDMS alle ore 09.00 troveremo i 60 valori di lettura dei vari sensori (Nel mio caso ho 2 sensori uno di temperatura ed uno di umidità):
<Time>08:00:00</Time>
<Value1>9.300000</Value1>
<Value2>59.100000</Value2>
<Time>08:01:00</Time>
<Value1>9.400000</Value1>
<Value2>59.400000</Value2>Marzo 11, 2014 alle 5:42 pm in risposta a: Lettura sensori temperatura/umidità da programma gestionale #38125Sergio Bertana
Amministratore del forumIl Termometro IP HWg-STE può essere interrogato ciclicamente con query SNMP, indicando il corretto OID è possibile ottenere in tempo reale il valore di temperatura ed umidità. Questo è un estratto della MIB table del prodotto.
Sensors Values, (n = 1..x)
—————————————————-
..1.3.6.1.4.1.21796.4.1.3.1.2.n Sensor Name (string, SIZE (0..16))
.1.3.6.1.4.1.21796.4.1.3.1.3.n Sensor State (integer, 0=Invalid, 1=Normal, 2=OutOfRangeLo, 3=OutOfRangeHi, 4=AlarmLo, 5=AlarmHi)
.1.3.6.1.4.1.21796.4.1.3.1.4.n Sensor String Value (string, SIZE (0..10))
.1.3.6.1.4.1.21796.4.1.3.1.5.n Sensor Value (integer, current value *10)In alternativa è possibile scaricare il file values.xml via HTTP semplicemente indicandone l’indirizzo IP http:// xxx.xxx.xxx.xxx/values.xml. Il file contiene i valori dei sensori, eccone un estratto.
<ID>215</ID>
<Name>Temp. esterna</Name>
<Units>C</Units>
<Value>10.0</Value>
</Entry>Sergio Bertana
Amministratore del forumAbbiamo alcuni clienti che utilizzano bar code Readers connessi al pannello operatore alcuni utilizzano semplici connessioni in seriale RS232 alcuni utilizzano come nel tuo caso il bar code reader connesso via USB. Devo dire che avevo realizzato un esempio anni fa per acquisire un bar code connesso alla porte seriale utilizzando il Free Protocol, mentre non ho mai testato personalmente la connessione via USB.
Weintek mette a disposizione un programma di esempio (Screenshot) che potrebbe esserti utile per testare la tua applicazione (Download programma).
Sergio Bertana
Amministratore del forumL’ultima versione del manuale la puoi scaricare dal nostro sito, ma attenzione sul manuale a volte i codici di errore sono raggruppati come nel caso dei due errori che citi. Sul manuale troverai una dicitura del tipo:
10007500~7 Errore in ricezione frame risposta (Carattere errato, lunghezza errata, CRC).
Il che significa che gli errori da 10007500 fino a 10007507 sono errori di ricezione frame di risposta, sembra che il tuo sistema risponda in modo errato al comando Modbus ricevuto. Per capire l’origine del problema occorre spiare la comunicazione tra lo SlimLine ed il tuo dispositivo e vedere cosa il dispositivo risponde.
Dalla versione SFW184A800 del sistema operativo è stata aggiunta la possibilità di spiare il funzionamento del programma da Telnet. In pratica nel programma devi attivare lo Spy sulla FB Modbus (Nella inizializzazione scrivere MyModbus.SpyOn:=TRUE;). Ora collegandosi in Telnet al modulo CPU puoi con il comando SpyData visualizzare la comunicazione (Screenshot).
Marzo 11, 2014 alle 11:30 am in risposta a: Gestire display LCD SainSmart compatibile Arduino #38120Sergio Bertana
Amministratore del forumRicevo da un cliente un display compatibile Arduino della YwRobot (Vedi foto), il cliente me lo invia da testare in quanto con il programma di esempio del post precedente il display continua a non visualizzare nulla.
Connesso all modulo CPU SlimLine in effetti verifico che il display non viene gestito.Visto che guardando le caratteristiche del “PCF8574 Remote 8-bit I/O expander for I2C-bus” trovo indicazioni molteplici sul suo range di indirizzi, controllo se effettivamente il chip ha indirizzo 16#3F oppure no.
Con un semplice programma ST eseguo la chiamata alla funzione SysI2CWrRd provando a passare indirizzi I2C da 16#20 a salire e controllo il ritorno della funzione. Così scopro che il display ha indirizzo 16#27.
Per poter gestire questo display occorre modificare l’indirizzo I2C del display nel programma di esempio, in testa a LCDMessages:LCD.I2CAddress:=16#27; (* LCD I2C address *)Attenzione, essendo l’indirizzo del display compreso nel range di indirizzamento dei moduli di estensione del sistema, la funzione SysI2CWrRd ne bloccava l’accesso.
Abbiamo rilasciato una nuova versione del firmware CPU ARM7 codice SFW184A860 che permette di accedere anche a questi indirizzi, pertanto occorre eseguire l’upgrade del sistema operativo (Vedi nota).
Sergio Bertana
Amministratore del forumGrazie dei complimenti, cerchiamo se possibile di supportare i clienti nelle loro applicazioni, il nostro punto di forza vuole proprio essere questo.
La tua domanda è stata spostata qui, ti ricordo che nel caso del modulo PCB124*000 la gestione encoder è realizzata in hardware direttamente sul modulo quindi per l’acquisizione del valore di quota andrà utilizzato il blocco funzione SysGetEncoder ed è possibile acquisire encoder fino a 50 KHz di frequenza massima.
Sergio Bertana
Amministratore del forumGli ingressi D12, D13, D14, D15 del modulo PCB124*000 (Come si vede dal manuale) utilizzano optoisolatori veloci e quindi permettono di acquisire segnali fino a 50KHz. Questi ingressi a differenza degli altri possono solo essere comandati da una tensione positiva che standard deve essere nel range da 10 a 30 Vdc.
Sul modulo sono presenti dei jumpers che se inseriti permettono di abbassare la tensione di attivazione dell’ingresso logico ad un massimo di 6Vdc.
Detto questo è evidente che per comandare gli ingressi devi utilizzare un encoder con uscita push-pull a 12 o 24Vdc con l’ingresso in configurazione standard, se inserisci i jumpers puoi utilizzare anche encoder con uscita TTL a 5Vdc. Ma ti ricordo che i segnali a 5 Volts sono molto più sensibili ai disturbi dei segnali a 24 Volts quindi valuta bene in base alla distanza dell’encoder dalla scheda e dal tipo di applicazione.
Sergio Bertana
Amministratore del forumSe ho capito bene vuoi fare un programma che acquisisce un encoder utilizzando due ingressi digitali del modulo CPU ed invia il valore di quota letta tramite una scrittura Modbus verso un dispositivo con indirizzo nodo 16#01, scrivendo all’indirizzo 16#A302 con il comando Modbus 16#10 Preset multiple registers.
Ecco un esempio di programma che realizza queste specifiche come si vede dalla stampa, vi è un parte di programma per la lettura della quota encoder dagli ingressi logici eseguita in Fast e la parte di gestione Modbus eseguita in Back. Il valore di Quota per poter essere scritto dal programma di acquisizione e letto dal programma di invio Modbus è appoggiato su di una variabile globale.
Attenzione all’indirizzo del registro, l’FB Modbus sottrae 1 al valore perché di solito i dispositivi slave incrementano il valore di 1 ma devi verificare se questo avviene sul tuo dispositivo salve, in caso contrario somma 1 all’indirizzo che diventerà 16#A303. Ecco lo screenshot dei dati seriali catturati con Toolly, allego il programma sorgente.
Sergio Bertana
Amministratore del forumIntanto ti consiglio di utilizzare la nuova FB ModbusMaster, e per acquisire gli ingressi logici del modulo CPU ti consiglio l’FB SysGetPhrDI. I blocchi funzione FB devono essere istanziati, cioè deve essere definito un oggetto del tipo del blocco funzione che si vuole utilizzare, e questo mi sembra tu l’abbia fatto hai definito ad esempio l’oggetto MyModbus di tipo ModbusMaster.
Ma la task di Boot è eseguita una sola volta al run del programma PLC quindi può essere utilizzata per inizializzare le variabili (E’ inutile il controllo IF SysFirstLoop THEN) ma non può essere utilizzata per eseguire fisicamente l’FB. Quando scrivi MyModBus(Enable:=TRUE); stai eseguendo il codice presente nel blocco funzione ed avendo messo questa chiamata nella task di Boot lo hai eseguito una sola volta.
Quindi ricapitolando la chiamata alla esecuzione del blocco funzione deve essere messa in una task eseguita ciclicamente (Fast, Slow o Back). E qui devi suddividere l’esecuzione dei blocchi funzione in base al loro specifico uso, la FB ModbusMaster andrà eseguita nella task Back, mentre la FB IOEncoder ipotizzando di dover acquisire un encoder fino a 400 Hz andrà eseguita nella task Fast.
Marzo 10, 2014 alle 4:55 pm in risposta a: Utilizzare le macro subroutines per la scalatura valori #38114Sergio Bertana
Amministratore del forumAggiungo al topic un progetto fornito da Weintek che spiega il funzionamento di questa tecnica (Screenshot). Nel file zip del progetto vi è anche una breve spiegazione in pdf del funzionamento (Download progetto).
Marzo 10, 2014 alle 2:03 pm in risposta a: Utilizzare le macro subroutines per la scalatura valori #38113Sergio Bertana
Amministratore del forumVediamo ora come utilizzare queste macro subroutines, ecco un semplice programma che esegue la conversione tra gradi Celsius e gradi Fahrenheit (Download programma). Ho inserito due oggetti di Introduzione numerica, su uno di essi (Quello riferito ai gradi Celsius) ho definito la scalatura con Macro subroutines (Screenshot).
In lettura il valore letto dalla LW 10 viene passato alla subroutine f2c di conversione da Fahrenheit a Celsius ed il ritorno della subroutine viene visualizzato.
In inputazione il valore inputato dal terminale viene passato alla subroutine c2f di conversione da Celsius a Fahrenheit a Celsius ed il ritorno della subroutine viene scritto nella variabile LW 10.
L’oggetto riferito ai gradi Fahrenheit visualizza il valore della LW 10 senza effettuare alcuna scalatura. Come si vede dallo screenshot inputando un valore in gradi Celsius ne ho la conversione in gradi Fahrenheit e viceversa.
Marzo 10, 2014 alle 1:50 pm in risposta a: Utilizzare le macro subroutines per la scalatura valori #38112Sergio Bertana
Amministratore del forumCreando un nuovo progetto EasyBuilderPro vengono già automaticamente definite una serie di macro per la conversione delle temperature. Per definire le macro subroutines agire sul menù Tools -> Macro e poi sul tasto Librerie (Screenshot). Riporto ad esempio la macro subroutine di conversione da Fahrenheit a Celsius:
sub float f2c(float f)
float c
c=(f-32)*5/9
return c
end subEd ecco la subroutine di conversione da Celsius a Fahrenheit:
sub float c2f(float c)
float f
f=c*9/5+32
return f
end subCome si vede ogni subroutine ha un parametro in ingresso ed un parametro in uscita.
Marzo 10, 2014 alle 8:56 am in risposta a: Differenza visualizzazione caratteri tra PC e terminale #38111Sergio Bertana
Amministratore del forumRicordo che EasyBuilderPro può gestire svariati fonts di caratteri, è anche possibile realizzare dei proprii font personalizzati (Topic), bisogna però ricordarsi di scaricare sul pannello anche i fonts insieme al progetto. Nella finestra di download progetto occorre abilitare il tick Files font (Screenshot).
Il tuo problema credo però derivi dalle impostazioni della scheda grafica sul tuo PC, con il tasto destro sul desktop scegliere il menù Personalizza -> Schermo e controlla la dimensione in DPI dei caratteri sul tuo schermo (Screenshot). L’impostazione deve essere al 100%, in caso contrario Windows visualizza i caratteri con un formato diverso da quello utilizzato sul pannello e quindi avrai il difetto che lamenti.
-
AutorePost