Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 2,941 a 2,955 (di 4,264 totali)
  • Autore
    Post
  • in risposta a: Lettura dati da un lettore di codici a barre #38130
    Sergio Bertana
    Amministratore del forum

    Non 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.

    in risposta a: Resettare il sistema da programma utente #38129
    Sergio Bertana
    Amministratore del forum

    Il 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.

    in risposta a: Lettura sensori temperatura/umidità da programma gestionale #38126
    Sergio Bertana
    Amministratore del forum

    Riguardo 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>

    in risposta a: Lettura sensori temperatura/umidità da programma gestionale #38125
    Sergio Bertana
    Amministratore del forum

    Il 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>

    in risposta a: Lettura dati da un lettore di codici a barre #38123
    Sergio Bertana
    Amministratore del forum

    Abbiamo 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).

    in risposta a: Chiarimenti sull’utilizzo dei blocchi funzione FB #38122
    Sergio Bertana
    Amministratore del forum

    L’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).

    in risposta a: Gestire display LCD SainSmart compatibile Arduino #38120
    Sergio Bertana
    Amministratore del forum

    Ricevo 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).

    in risposta a: Chiarimenti sull’utilizzo dei blocchi funzione FB #38119
    Sergio Bertana
    Amministratore del forum

    Grazie 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.

    in risposta a: Encoder per modulo espansione PCB124*000 #38117
    Sergio Bertana
    Amministratore del forum

    Gli 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.

    in risposta a: Chiarimenti sull’utilizzo dei blocchi funzione FB #38116
    Sergio Bertana
    Amministratore del forum

    Se 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.

    in risposta a: Chiarimenti sull’utilizzo dei blocchi funzione FB #38115
    Sergio Bertana
    Amministratore del forum

    Intanto 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.

    in risposta a: Utilizzare le macro subroutines per la scalatura valori #38114
    Sergio Bertana
    Amministratore del forum

    Aggiungo 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).

    in risposta a: Utilizzare le macro subroutines per la scalatura valori #38113
    Sergio Bertana
    Amministratore del forum

    Vediamo 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.

    in risposta a: Utilizzare le macro subroutines per la scalatura valori #38112
    Sergio Bertana
    Amministratore del forum

    Creando 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 sub

    Ed ecco la subroutine di conversione da Celsius a Fahrenheit:

    sub float c2f(float c)
      float f
      f=c*9/5+32
      return f
    end sub

    Come si vede ogni subroutine ha un parametro in ingresso ed un parametro in uscita.

    in risposta a: Differenza visualizzazione caratteri tra PC e terminale #38111
    Sergio Bertana
    Amministratore del forum

    Ricordo 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.

Stai visualizzando 15 post - dal 2,941 a 2,955 (di 4,264 totali)