PGIACOMO Inserito: 18 giugno 2006 Segnala Inserito: 18 giugno 2006 Ho un problema "software" con la scheda SM334 (4 ING 8bit - 2 USC 8bit),premetto che è la prima volta che ho a che fare con moduli analogici. Il manuale della scheda indica che ogni ingresso occupa 2 byte, pertantoho impostato gli ingressi come PIW320, PIW322, PIW324 e le uscitecome PAW320 e PAW322 (byte iniziale più 2 di offset come riportato nel manuale) L'assistenza tecnica mi ha consigliato di utilizzare per gli ingressi delle WORD anchese, visto che la scheda è a 8 bit il valore misurato/assegnato è di un byte (256 steps)Secondo voi devo leggere / assegnare i canali come byte o come word ?Venerdì ho provato il programma sulla macchina scritto con ingressi e uscite WORD, ma in test (controlla/comanda; tasto destro su scheda analogica nella finestrahardware ) i sensori (4-20 mA) mi davano sempre zero e comandando le uscite (0 - 10 V) (ho provato con diversi valori 127,255,32777,65535, ecc ) la scheda misurava 8,8 v solo conil valore hex 6096 - dec 24726, con altri valori intermedi non dava in uscita nessuna tensione.Mi hanno anche detto che visto che sto utilizzando una word (65536) e leggendo/comandando unascheda a 8 bit quindi byte (256) devo assegnare alle uscite un valore da 0 a 255 moltiplicato per 256e leggere i sensori dividendo per 256.Il tecnico mi ha anche accennato che la maniera più semplice per la conversione è quella di utilizzare una tabella di variabili VAT, ho provato a creare la tabellama ho verificato che in questa tabella (non l'avevo mai utilizzata prima) si possonosolo comandare visualizzare le variabili e non eseguire operazioni su di esse.Spero di essere stato chiaro, potete postarmi anche qualche link ad esempi diprogrammazione con moduli analogici...AIUTO .................
rea Inserita: 18 giugno 2006 Segnala Inserita: 18 giugno 2006 Gli indirizzi così come li hai asseganti vanno bene, quindi dovrai lavorare su delle word e non su dei byte.La vat è un'interfaccia che ti permette di controllare lo stato delle variabili e di forzarne i valori e non puoiutilizzarla per nussun'altra operazione,va anche detto cha da una vat non puoi scrivere un'uscita analogica quindi per provare lavora su una word di appoggio che continua a trasferire il suo valore all'uscita.es.(L MW 100 T PAW 320)La MW 100 sarà la variabile che utilizzerai nella tua vat.Ti dò una funzione che spero possa esserti utile. Copiala in un sorgente e compilalo. FUNCTION FC 11 : VOIDTITLE =ANALOGICVERSION : 0.1VAR_INPUT InValue : INT ; InMinValue : INT ; InMaxValue : INT ; OutMinValue : INT ; OutMaxValue : INT ; END_VARVAR_OUTPUT OutValue : INT ; OutBitHigh : BOOL ; OutBitLow : BOOL ; END_VARVAR_TEMP INPUT_RANGE : REAL ; OUTPUT_RANGE : REAL ; RATE : REAL ; OFFSET : REAL ; MINRATE : REAL ; END_VARBEGINNETWORKTITLE =//Input, sopra il valore massimo L #InValue; L #InMaxValue; >=I ; = #OutBitHigh; //Input, sotto il valore minimo L #InValue; L #InMinValue; <=I ; = #OutBitLow; //Salta e carica i valori minimo o massimo di uscita U #OutBitHigh; SPB S001; U #OutBitLow; SPB S002; //Calcolo il range dei volori di input L #InMaxValue; L #InMinValue; -I ; ITD ; DTR ; T #INPUT_RANGE; //Calcolo il range dei valori di output L #OutMaxValue; L #OutMinValue; -I ; ITD ; DTR ; T #OUTPUT_RANGE; //Calcola Rapporto L #OUTPUT_RANGE; L #INPUT_RANGE; /R ; T #RATE; //Moltiplica il valore minimo di ingresso e il Rapporto L #InMinValue; ITD ; DTR ; L #RATE; *R ; T #MINRATE; //Calcola offset di uscita L #OutMinValue; ITD ; DTR ; L #MINRATE; -R ; T #OFFSET; //CALCOLO VALORE USCITA L #InValue; ITD ; DTR ; L #RATE; *R ; L #OFFSET; +R ; RND ; SPA S003; S002: L #OutMinValue; SPA S003; S001: L #OutMaxValue; S003: T #OutValue; BE ; END_FUNCTIONDa un'altro blocco del tuo programma la richiamerai in questo modo per gli ingressi:CALL FC 11 InValue :=PEW.. //ingresso analogico InMinValue := //min.valore input (dec) InMaxValue := //max.valore input (dec) OutMinValue:= //min.valore output (dec) OutMaxValue:= //max.valore output (dec) OutValue :=MW.. //valore convertito (dec) OutBitHigh :=M.. //valore max superato OutBitLow :=M.. //valore min superato e in questo modo per le uscite:CALL FC 11 InValue :=MW.. //valore da convertire(dec) InMinValue := //min.valore input (dec) InMaxValue := //max.valore input (dec) OutMinValue:= //min.valore output (dec) OutMaxValue:= //max.valore output (dec) OutValue :=PAW.. //uscita analogica OutBitHigh :=M.. //valore max superato OutBitLow :=M.. //valore min superato Spero ti sia chiaroBuon lavoroCiao
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora