Porte seriali

venerdì 21 maggio 2004 - 14.24

hydra Profilo | Junior Member

Ho un problema che forse voi cari "colleghi" potete aiutarmi a risolvere. Mi trovo nella necessità di comandare delle periferiche con le porte seriali, in particolare con standard RS232 e RS485. Siccome le periferiche sono circa sette, come faccio a indirizzarle? C'è qualcuno che può darmi una drittona per reperire materiale al riguardo? Per completare le info dico che probabilmente installerò una scheda con più seriali. Un grazie anticipato per la vostra preziosa collaborazione.

Brainkiller Profilo | Guru

Cosa intendi per "indirizzarle" ?
Immagino che se hai più periferiche sarà necessario installare schede di espansione sul PC per avere a disposizione più seriali COM1, COM2, COM3 fino ad 8. Poi una volta che saranno connesse, se avrai la necessità di comandarle via codice, questo è un altro paio di maniche.
Se hai bisogno per questa seconda fase scrivi.

ciao
david

hydra Profilo | Junior Member

Intendo dire questo: so che le normali seriali RS232 del computer mi consentono di collegare una singola periferica. Le RS485 (cioè quelle industriali per intenderci), da quello che so io mi consentono di collegare più periferiche sulla stessa porta. Il mio problema è che devo gestire queste periferiche dal codice e vorrei avere qualche indicazione su come fare a indirizzare le periferiche, cioè come faccio a sapere qual'è la periferica 1, la 2 e così via. Nel caso porò installassi una scheda con le porte, mi rimane lo stesso problema. Avete qualche indicazione?

alextyx Profilo | Expert

Lo standard RS232 (o V24) è basato su un bus seriale a due conduttori, in cui la tensione va da +12 a -12 ( in realtà qualcuno usa anche tensioni a livello TTL) rispetto al riferimento. Le impedenze in gioco sono alte e le correnti sono di conseguenza basse. Lo standard RS485 è basato su un segnale differenziale: I due 'fili' del bus si scambiano la 'posizione', dal punto di vista del potenziale elettrico- Per la verità, nn è esattamente così, ma grossomodo può essere descritto in questi termini. Lo standard RS485 garantisce migliori immunità al rumore e capacità di trasporto dell'informazione per tratte più lunghe rispetto allo standard RS232. Entrambi sono standard hardware e riguardano solo il vettore di trasporto dell'informazione. Io lavoro nel settore elettronico e abbiamo delle schede a uC che colloquiano via RS485 con un apposito C.I. (75ALS180) che converte un segnale TTL negli opportumi livelli RS485. Il protocollo (tutto scritto in Assembler 8051) è stato costruito per indirizzare fino a 16 periferiche ( da 0 a F esadecimale), ed è di tipo Master/Slave, ovvero una scheda Master (padrone) chiede notizie ad una specifica scheda Slave(schiava), che risponde quindi solo se sollecitata. Ovviamente, essendo tutte schede progettate e prodotte da noi, esse hanno il software giusto per implementre queste funzioni, che comunque sono un classico. Ci interfacciamo anche con periferiche, quali inverter trifasi a frequenza variabile di commercio, che hanno (intelligentemente) già preconfigurato un protocollo adatto a questo tipo di applicazione. Quello che voglio dire è che, a meno che tu nn risolva il tuo problema in maniera diversa, utilizzando Dio solo sa quante porte COM, il sistema canonico per implementare una tale configurazione, è che tutte le periferiche, collegate sugli stessi fili, (sia che lavorino in RS485, che in RS232, come in RS422, o Current Loop) siano configurabili con un indirizzo e che nn prendano iniziative, ma che rispondano solo quando il 'master' le interroga, altrimenti si verificherà una 'bus contention', ovvero ci sarà più di un dispositivo che tenterà di usare gli stessi 'fili' per passare informazioni, con conseguenze potenzialmente anche 'letali' per i circuiti di interfaccia. Spero di aver reso l'idea, ma ovviamente resto a disposizione per eventuali chiarimenti. Buon lavoro :-)

hydra Profilo | Junior Member

Giusto, le periferiche devono comunicare solo se interrogate. Il mio problema è questo, siccome non ho mai usato più porte seriali e siccome mi capiterà in questa applicazione di usarne più di una contemporaneamente, come faccio per aprire il canale relativo a tale periferica? Basta che indirizzo a Com1 per la periferica 1, Com2 per la 2 e così via? So che magari è una banalità, ma siccome devo scegliere che tipo di dispositivo usare e sto valutando due prodotti differenti, uno collegato via seriale e l'altro in PCI, mi sto documentando sulle seriali (dato che il dispositivo PCI l'ho già usato e so come funziona). I miei dubbi riguardano per adesso la modalità di indirizzamento delle varie periferiche. Grazie mille intanto per le informazioni.

Brainkiller Profilo | Guru

Io non posso aiutarti in questo caso.
Ho sempre visto e usato al massimo seriali classiche RS232 non sapevo neanche dell'esistenza delle 845 :-(

ciao
david

alextyx Profilo | Expert

Caro Hydra, come avrai capito, per il problema della convivenza di più periferiche sulla stessa seriale, lo standard è assolutamente ininfluente. Se nn hai problemi di distanza o di disturbi puoi usare la classica RS232(viene garantita per una trentina di metri circa, ma in ambienti d'ufficio puoi raddoppiare senza problemi). Se poi dovessi accorgerti che hai dei problemi, esistono dei convertitori per passare a standard più robusti. Sono dispositivi hardware che costano alcune decine di euro e si trovano anche su cataloghi di vendita per corrispondenza di elettronica e informatica. Lo dico x tranquillizzarti; una volta risolto il problema in RS232, passare ad uno standard industriale richiederebbe solo di mettere mano al portafogli, nn di scrivere altro codice. Se usi più seriali, attraverso l'inserimento di un adeguato numero di schede nel PC, avrai anche più cavi e se usi una seriale x ogni dispositivo, avrai un cavo per dispositivo e quindi nn avrai alcun problema di bus contention e nn dovrai preoccuparti di implementare un protocollo M/S, come già accennato nell'altro mio post. Se invece usi un numero di seriali inferiore al numero di dispositivi esterni con cui dialogare, avrai sicuramente qualche cavo 'condiviso' da più di un dispositivo. Normalmente si usa una sola seriale e quindi il problema di mettere in riga i dispositivi esiste e, fortunatamente, lo sanno anche i costruttori degli stessi, per cui, al 99,9%, ci sarà la possibilità di configurarli in maniera tale che essi rispondano solo se interrogati con una domanda compilata e indirizzata in un certo modo, restituendo una risposta di formato definito e della quale, quindi, si può anche accertare la completezza e quindi l'avvenuto termine. Dopo, si potrà procedere ad interrogare il dispositivo seguente e così via a rotazione. E' evidente che se il costruttore non ha previsto questo comportamento, oltre ad essere un idiota, ti ha pure messo nei guai, perchè ti costringerà a diventare matto x trovare soluzioni alternative. Cmq, sono quasi certo che la periferica in questione ha questa possibilità, basta leggere il manuale. Purtroppo, nn sarebbe la prima volta che il manuale riporta la descrizione di una risposta e il dispositivo ne rende una diversa, ma ora nn voglio spaventarti oltre....:-)
Ora che forse cominci a capire cosa devi cercare, prova a sfogliare il manuale o a dare un colpo di telefono al servizio tecnico del prodotto, se possibile, e facci sapere che cosa scopri.
Ciao e buon lavoro.

hydra Profilo | Junior Member

Guarda, lo standard non lo scelgo io ma la mia periferica, nel senso che la mia è un'applicazione a sfondo industriale e le periferiche che uso supportano questo standard. Non è tanto un problema di numero o di lunghezza dei cavi, quanto appunto il problema di interpellare la periferica giusta e solo quella. Cmq penso anch'io che il produttore del dispositivo, dando in dotazione le librerie di gestione abbia previsto l'indirizzamento. La mia era una domanda, come dire, di informazione, in quanto mi trovo a dover scegliere tra dispositivi seriali e dispositivi PCI. Essendo che questi ultimi li ho usati per la mia applicazione precedente so come funzionano alla perfezione (o quasi), mentre per questi nuovi prodotti mi devo documentare. Sono intenzionato a passare a questi prodotti seriali perchè, oltre ad avere un costo contenuto, mi danno la possibilità di evitare un pacco di righe di codice, in quanto sono dispositivi stand-alone. E non è tanto il problema di passare da RS232 a RS485, come dici tu ci sono questi adattatori che mi consentono di farlo o cmq sul mio pc installerò delle schede seriali con standard RS485. Grazie mille intanto delle preziose informazioni, ieri in mattinata mi sono fatto mandare dal produttore la libreria e un pgmmino di esempio, così adesso ho del materiale su cui studiare. Non appena giungo alla conclusione, vi faccio sapere quanto ho appreso, premettendo però che non sono sicuro che la cosa si possa generalizzare per tutte le applicazioni.

alextyx Profilo | Expert

Caro Hydra, ormai di dispositivi ne ho interfacciati diversi, in vari standard e ho una certa pratica di seriali, half o full duplex, etc... Però nn ho mai usato la seriale da VB o VB.NET, quindi nn scomparire, mi sarà preziosa l'esperienza che stai andando a maturare! Prima o poi dovrò affrontare anch'io il controllo della seruiale da VB.NET e quindi, se per allora avrai acquisito (ammesso che tu già nn ce l'abbia) un'esperienza nel settore, probabilmente mi servirà rivolgerti qualche domanda, o meglio ancora, copiarti qualche procedura :-)))
Se nel frattempo potrò esserti utile io, chiedi pure.

hydra Profilo | Junior Member

Ok, appena maturo un po' più di esperienza nel settore ti faccio sapere, per intanto posso dirti che una 232 con adattatore per 485 l'ho gia gestita in VB Net (adattando un vecchio programma scritto ancora in QBasic, figurati), ma era una sola porta. Adesso devo fare esperienza nella gestione di più porte. Cmq tranquillo, appena ho notizie ti faccio sapere. Grazie mille intanto per il supporto.

alextyx Profilo | Expert

Sono felice di sapere che potrò avere una 'sponda' nell'affrontare la seriale da VB.NET, anche perchè ho sentito dire che nn esiste un controllo nativo, a differenza di VB6, e quindi si deve in qualche modo aggirare l'ostacolo. Naturalmente, quando prenderò a mano il problema la Microsoft avrà già rilasciato il controllo :-)
Una cosa....se ho capito bene cosa devi fare, nn devi necessariamente gestire più porte, a meno che tu nn intenda piazzare una seriale x ogni periferica, ma gestire più periferiche su una sola porta. In pratica la tua esperienza è già sufficente dal punto di vista della programmazione di VB.NET, ti manca solo di capire che diavolo di messaggio spedire sul cavo perchè una determinata periferica ( e solo quella) risponda alla tua richiesta. Quindi sta tutto nello studio dei menuali dei dispositivi che adotterai. Normalmente prevedono anche un tempo minimo configurabile prima di rispondere, per dare modo, in caso di Half duplex, di porre in ricezione la porta seriale dopo averla usata per trasmettere la richiesta dei dati. Ovviamente la cosa migliore è usare comunque un cablaggio full-duplex. Comunque, di nuovo buon lavoro :-)

paolo1971 Profilo | Newbie

Ciao sono un nuovo utente ,ti volevo chiedere ,ho comprato un video registratore incorporato il video server ed ha la morsettiera
per le porte seriali rs 232 e rs 485 come posso comandare da internet (da remoto)un interuttore ?cioe dal manuale mi dice di si ,tramite la tastiera di un pc ,come si collega come si fa? mi pui fare un piccolo schema elettrico ,Grazie .

erik1983 Profilo | Newbie

Volevo sapere se qualcuno ha avuto a che fare con la comunicazione seriale con un can bus gestito tramite VB.net.
Se qualcuno avesse dei codici da inviarmi gliene sarei grato..

CIAO
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5