yupanqui Inserito: 23 maggio 2005 Segnala Inserito: 23 maggio 2005 Buongiorno ragazzi,Il mio problema è quello di ricostruire l'informazione che mi proviene via seriale daun driver.La comunicazione avviene tramite il modulo CP340. I dati inviati riguardano la posizione dell'assee sono in formato ascii.Quando interrogo il driver per sapere la sua posizione il dato che vado a leggere mi si posizionanel DB di ricezione del modulo CP340 in questo modo:per esempio se ricevo la sopizione 30275:DB_RICEZIONE:INDIRIZZO NOME TIPO VALORE 0.0 DATO1 CHAR '3' 1.0 DATO2 CHAR '0' 2.0 DATO3 CHAR '2' 3.0 DATO4 CHAR '7' 4.0 DATO5 CHAR '5' 5.0 DATO6 CHAR '$R' 5.0 DATO6 CHAR '$L'I due caratteri finali sono il carriage return [CR] e il line feed [LF]che indicano la terminazione della stringa.Ora se io voglio manipolare questo dato come faccio?se per esempio voglio fare un calcolo con questo 30275 come mi muovo?Insomma io sono abituato a fare calcoli con numeri messi dentro le wordintere a doppia lunghezza DINT, c'è il modo x visualizzare questo numeroin una DINT?Sperò di essere stato chiaro.Grazie,Silver.
Matteo Montanari Inserita: 23 maggio 2005 Segnala Inserita: 23 maggio 2005 FC 38 STRNG_IDescrizioneCon la funzione FC 38 è possibile convertire una stringa di caratteri in una variabile con formato INT. Il primo carattere nella stringa di caratteri può essere un segno o una cifra, i caratteri successivi devono essere costituiti da cifre. Se la lunghezza della stringa di caratteri è zero o maggiore di 6 oppure si trovano caratteri inammissibili nella stringa di caratteri, non avviene alcuna conversione e il bit BIE viene azzerato. Se il risultato della conversione si trova fuori del campo numerico INT, il risultato viene limitato al valore corrispondente e il risultato binario BIE viene azzerato.oppureFC 37 STRNG_DIDescrizioneCon la funzione FC 37 è possibile convertire una stringa di caratteri in una variabile con formato DINT. Il primo carattere nella stringa di caratteri può essere un segno o una cifra, i caratteri successivi devono essere costituiti da cifre. Se la lunghezza della stringa di caratteri è zero o maggiore di 11 oppure si trovano caratteri inammissibili nella stringa di caratteri, non avviene alcuna conversione ed il bit BIE viene azzerato. Se il risultato della conversione si trova fuori del campo numerico DINT, il risultato viene limitato al valore corrispondente ed il risultato binario BIE viene azzerato.oppureFC 39 STRNG_RDescrizioneCon la funzione FC 39 è possibile convertire una stringa di caratteri in una variabile con formato REAL. La stringa di caratteri deve essere presente nel seguente formato:±v.nnnnnnnE±xx ± Segno v 1 Posizione prima della virgola n 7 Posizioni dopo la virgola x 2 Posizioni esponenti Se la lunghezza della stringa di caratteri è minore di 14, oppure se non è strutturata come descritto sopra, allora non avviene alcuna conversione ed il bit BIE viene azzerato. Se il risultato della conversione è fuori del campo numerico REAL, il risultato viene limitato al valore corrispondente ed il risultato binario BIE viene azzeratosai a volte basta leggere i manuali
yupanqui Inserita: 23 maggio 2005 Autore Segnala Inserita: 23 maggio 2005 Grazie keosmm!In effetti hai ragione a volte basta leggere i manulai.Spesso però devi sapere "cosa cercare" prima di "cercare"
Matteo Montanari Inserita: 23 maggio 2005 Segnala Inserita: 23 maggio 2005 (modificato) prova invece a consultare prima tutte le routine pre caricate del programma Step7, una volta lette, se la memoria non fà acqua, più o meno te le ricordi oppure sai che ci sono. poi se non trovi quello che fà per te, allora poi fare una ricerca magari mettendo i criteri corretti, e non abbandonare dopo il primo fallimento...(non ti mettono bendato e con la sigaretta in bocca davanti ad un plotone di esecuzione se sbagli o fallisci)un altra cosa non nasconderti dietro frasi del genere:Spesso però devi sapere "cosa cercare" prima di "cercare"in quanto leggendo questo mi pento di averti dato le dritte.pensi che quando non c'era internet non si lavorava, tutta l'automazione fatta da 20 anni a questa parte? ci si rimboccava le maniche e ci si sporcava le mani un pò di più, magari non si andava al lavoro in giacca e cravatta, aspettando che qualcuno risolvesse il problema per me o mi indicasse come raggiungere l'uscita del labirinto, ma olio di gomito e pedalare.sia bene inteso che non c'è l'ho con te ma con tutto il sistema che si è creato Modificato: 23 maggio 2005 da keosmm
lucamodica Inserita: 23 maggio 2005 Segnala Inserita: 23 maggio 2005 salve a tutti,e buon inizio di settimana!domanda: posso collegare un sensore di temperatura con uscita 4-20 mA a un modulo di in analogico per s7 200 direttamente?ps: ho già usato la funzione "cerca" ma credo di non aver trovato la risposta alla mia domanda...
Matteo Montanari Inserita: 23 maggio 2005 Segnala Inserita: 23 maggio 2005 salve a tutti,e buon inizio di settimana!domanda: posso collegare un sensore di temperatura con uscita 4-20 mA a un modulo di in analogico per s7 200 direttamente?ps: ho già usato la funzione "cerca" ma credo di non aver trovato la risposta alla mia domanda...visto che l'argomento trattato in questo Post non centra nulla con la tua domanda, dovresti aprire un nuovo Post.risposta alla tua domanda.perchè credi siano state inventate le schede di ingresso analogiche, se non per collegare direttamente i sensori con uscita analogica?gli ingressi analogici ne esistono di vari tipi, i principali sono:resitenza, tensione, correntechiaramente un sensore con uscita analogica in corrente non potrà mai essere collegato ad un ingresso analogico in tensione o resistenza ma solamente ad un ingresso analogico in correntenel tuo caso specifico il sensore di temperatura con uscita 4..20mA dovrà essere collegato ad un ingresso analogico in corrente 4..20mA.leggendo le caratteristiche tecniche della sonda (fogliettino dentro la scatola della sonda o sul sito internet del produttore consultando i manuali in linea) saprai che temperatura dovrai leggere a 4mA, a 12mA ed a 20mA.utilizzando questi dati potrai fare la scalatura del tuo segnale di temperatura.molti utilizzano i blocchi standard SIEMENS (SCALE FC105)ma esistono anche altre alternative ed utilizzando la funzione cerca penso che queste alternative saltano fuori (link)
yupanqui Inserita: 23 maggio 2005 Autore Segnala Inserita: 23 maggio 2005 keosmm so benissimo che hai ragione come ho scritto immediatamente dopo la tua risposta la battuta era solo x sdrammatizzare....Però vedo che qualcuno mi batte qui sul forum.....lucamodica tu non sai nulla??
Matteo Montanari Inserita: 23 maggio 2005 Segnala Inserita: 23 maggio 2005 personalmente io mi trovo meglio a dare informazioni su come deve essere collegato un sensore ad una scheda di ingresso, notando dalla domanda che si tratta di una persona alle prime arimi, ma proprio alle prime armi se fà questo tipo di domande, piuttosto che dare consigli ad una persona più esperta che mi parla di CP340, codice ASCII, DINT ed operazioni da fare con una quota proveniente in seriale, ciò dimostra che la persona non è alle prime armi e almeno una lettura veloce, ma sempre lettura, al manuale dovrebbe averla data. inoltre la comunicazione con CP340 la deve aver presa da qualche parte (copiata anche quella??).ripeto che non c'è l'ho con te ma con il modo di atteggiarsi a voler ricevere informazioni sul forum, come aspettare la manna dal cielo.
lucamodica Inserita: 23 maggio 2005 Segnala Inserita: 23 maggio 2005 ragazzi,il forum è per scambiare idee e dare aiuto ai poveri principianti come me...non per litigare...boni!... e ciao!
Luca Bab Inserita: 23 maggio 2005 Segnala Inserita: 23 maggio 2005 Per convertire asci in intero , ti consiglio di fartelo da solomolto stupidamente ASCI 456 ( 3 byte )prendo il primo byte in decimale , sottraggo 48 moltiplico per 100 che sommo in variabile temp 1prendo secondo byte , sottraggo 48 e moltiplico per 10 e sommo alla var temp 1terzo byte sottraggo 48 e sommo alla var temp 1sposto var temp 1 su MWchiaramente se lo indicizzi e' megliociaoLuca
STEU Inserita: 23 maggio 2005 Segnala Inserita: 23 maggio 2005 Non voglio essere noiosose cercavi nel forum avresti trovato QUESTOe leggendo saresti arrivato alla conclusione senza utilizzare fc 38 in maniera probabilmente più semplice.Questo chiaramente (come ha gia' detto Keosmm) dal tipo di domanda non sei uno alle prime armi.
Matteo Montanari Inserita: 23 maggio 2005 Segnala Inserita: 23 maggio 2005 se utilizzi la funzione CERCA del Forum con parola CHIAVE "ASCII" viene fuori la lista delle discussioni dove guarda a caso c'è questa dove è spiegato, con un esempio di programma come ricavare un ascii da un intero... senza utilizzare le funzioni SIEMENS.basta solamente eseguire le operazioni al contrario, come del resto ha anche suggerito Luca Bab.si tratta sempre di cercare quello che si desidera trovare.ragazzi,il forum è per scambiare idee e dare aiuto ai poveri principianti come me...non per litigare...boni!... e ciao!Scambiare idee, anche in modo acceso senza mai arrivare ad offendere, è un modo come un altro per aiutare, serve per vedere le cose da una prospettiva differente.Se riesci a trovare giovamento da questo, modificare il tuo modo di vedere le cose, o riuscire a rapportarti meglio con altre persone, hai comunque guadagnato.
yupanqui Inserita: 23 maggio 2005 Autore Segnala Inserita: 23 maggio 2005 Grazie ragazzi!In effetti ho provato a convertire una stringa in una DINT e tutto funziona.Come ti dicevo però i dati che ho memorizzati nel DB di ricezione non sono in formato stringa ma sono in formato char.Se provo ad usare la stessa "FC 37 STRNG_DI" chiaramente non accetta come ingresso il char.Ora provo a smanettare come dite voi e poi vi faccio sapere.Grazie ancora,Silver.X keosmmNo tranquillo per far funzionare il modulo seriale ho usato l'apposito manuale.Non ci crederai ma oltre al corriere dello sport a volte leggo anche i manuali siemens.Lo so che non c'è l'hai con me ci mancherebbe nemmeno ci conosciamo. Ciao e grazie Ancora.x lucamodicaNon mi sembra che stiamo litigando anzi keosmm ha detto quello che pensava e io gli ho risposto che aveva ragione se questo è litigare....Detto questo Credimi anche io sono un principiavte essendo la 1 volta che utilizzo siemens, e ho tanti di quei problemi che non so più dove sbattere la testa.Ragazzi io sono un tipo che scherza sempre molto a volte può sembrare che prendo in giro le persone ma non è affatto così apprezzo sempre le vostre risposte qualunque esse siano.Grazie ancora,La prossima volta cercherò meglio.Silver.
Matteo Montanari Inserita: 23 maggio 2005 Segnala Inserita: 23 maggio 2005 se utilizzi i suggerimenti di Luca Bab o il link proposto da STEU non ti devi prendere la briga di convertire i tuoi caratteri in stringa...e comunque la stringa è formata da char, devi solamente togliere i dati che non ti servono, ma questo devi comunque farlo ugualmente anche se lavoro direttamente con char.
d.majovsky Inserita: 28 maggio 2005 Segnala Inserita: 28 maggio 2005 (modificato) Silver,se i valori che potresti ricevere potrebbere essere anche negativi allora la soluzione migliore e usare FC37/38:- crea in una DBx la variabile 0.0 BUFFER stringa[10]- imposta i parametri del FB della 340 DB_NO=x e DBB_NO=2- esegui la chiamata- modifica il dato 1.0: DATO1.0 = LEN - 2 (devi sotrarre CR e LF)- chiama FC 38 con BUFFERchiarimento, per DATO1.0 intendo:L LEN+ -2T DBx.DBB1saluti Modificato: 28 maggio 2005 da d.majovsky
d.majovsky Inserita: 28 maggio 2005 Segnala Inserita: 28 maggio 2005 Chiarimento:per DATO1.0 intendoL LEN+ -2T DBx.DBB1ciao
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