walterword Inserita: 6 luglio 2004 Segnala Share Inserita: 6 luglio 2004 OK server - client Modbus Tcp\Ip sta andando da piu di 24 ore .direi che sia abbastanza stabile bene Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 6 luglio 2004 Segnala Share Inserita: 6 luglio 2004 Avendo un solo pc .. e niente plc .. per adessomi buttero su PIC>RABBITRABBIT>PC Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 6 luglio 2004 Segnala Share Inserita: 6 luglio 2004 (modificato) bravoPIC - Rabbit io lo userei cosi :Rabbit master prot. modbus seriale PIC slave prot. modbus seriale PIC Master I2C Philips PCF8575 PCF8591 slave I2C per acquisire I/OPC-RABBIT :PC client prot. Modbus tcp\iprabbit server o server web prot. Modbus tcp\ipvisto che il protocollo basato su modbus tcp\ip sta funzionando cosa ne dici fratello?ciao walter Modificato: 6 luglio 2004 da walterword Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 6 luglio 2004 Segnala Share Inserita: 6 luglio 2004 Philips PCF8575 PCF8591 slave I2C per acquisire I/Operche usare questi componenti?Per il resto non fa una piega ...Per pic qualche cosa c'e' gia'Devo solo studiare un po il modbus.... e tentare di implementarlo nel Rabbit.Il progetto PIC>RABBIT>PC era propio il mio obbiettivo.. Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 6 luglio 2004 Segnala Share Inserita: 6 luglio 2004 Per il PLC , siemens se non ricordo male ha un protocollo slave Modbus.Si potrebbe usare il rabbit come ponte per un eventuale HMI o SCADA TCP/IP Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 6 luglio 2004 Segnala Share Inserita: 6 luglio 2004 (modificato) si con siemens puoi essere anche master in modbusdevi solo comprare la scheda , che non la regalano se invece ( per siemens) pigliamo tutto in un pc siamo apposto , poi possiamo accedere al resto del mondo o no ?seno compriamo la scheda modbus per siemens p.s. non so se si possa scrivere protocollo modbus con siemens pero c'e' la scheda RS232 o 485 credo e il protocollo ce lo facciamo noi seno , c'e' anche la scheda ethernet per siemens , solo ceh usa il suo ca**o di protocollo del quale non si sa nemmeno chi l'abbia scritto Modificato: 6 luglio 2004 da walterword Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 6 luglio 2004 Segnala Share Inserita: 6 luglio 2004 in sostanza almeno 1 licenza dobbiamo averla siemens non da specifiche per protocolli ti da le librerie basate sulle loro schede o chip preprogrammati da loro stessi ciao Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 6 luglio 2004 Segnala Share Inserita: 6 luglio 2004 Se non ho capito male , il protocollo modbus non accetta multi-master ..Quanti slave puo' sopportare? Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 6 luglio 2004 Segnala Share Inserita: 6 luglio 2004 gli indirizzi slave sono buoni da 1 a 247 , quindi 247 slaves il master del bus e' solo 1 gli slaves non parlano tra loro , ma solo quando richiesto dal master Possiamo sempre creare sottoreti , dove uno slave e' anche master della sua sotto rete ciao walter Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 6 luglio 2004 Segnala Share Inserita: 6 luglio 2004 "Il progetto PIC>RABBIT>PC era propio il mio obbiettivo.. "ANCHE IL MIO , FRATELLO Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 6 luglio 2004 Segnala Share Inserita: 6 luglio 2004 Penso che dovremo fare delle sotto reti o dei concentratiri , visto che il 485 si possono solo collegare 32 utenti. Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 6 luglio 2004 Segnala Share Inserita: 6 luglio 2004 esatto fratello come dicevo io sopra sottoreti dove lo slave della rete principale e' anche master della sua sottoretenon mi spaventa il fatto anzi mi eccita ciao walter Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 6 luglio 2004 Segnala Share Inserita: 6 luglio 2004 ok io nel frattempo procedo con la scrittura in VC#.net della seconda funzione Modbus tcp\ip che voglio implementare e cioe : Scrivi multi registers le funzioni dedicate ai bit , cioe ingressi digitali e coils (uscite digitali) non mi interessanoanche perche verranno copiate tutte nei registri a 16 bit nel caso di pc e plcmentre nei micro , durante l'acquisizione dati abbiamo gia tutto nei registri delle porte o nei registri general purpose , quindi siamo apposto Vado avanti sia con server che client con 2 pc.puoi sara un gioco da ragazzi tradurlo in C per il tal micro piuttoto che l'altro poi pero bisognera iniziare anche il modbus su seriale ciao walter Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 7 luglio 2004 Segnala Share Inserita: 7 luglio 2004 Penso che dovremo fare delle sotto reti o dei concentratiri , visto che il 485 si possono solo collegare 32 utenti.Guarda che ci sono dei chip della Maxim che gestiscono 32/64/128/256 Nodi , naturalmente bisogna vedere i tempi di risposta e che tipo di chip montano apparecchi di terzi (Vedi PLC) , comunque 32 nodi li vedono tutti.Ciao Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 7 luglio 2004 Segnala Share Inserita: 7 luglio 2004 (modificato) se il modbus non sara in grado di soccombere alle ns necessita compreremo il chip con i driver del CANBus .bisogna iniziare a provare con 2 nodi :master e slave in modbus seriale io adesso sto vedendo il modbus tcp\ip tra 2 pc , e lo provero con pc-plc le 2 funzioni + importanti (leggi multi registri e scrivi multi registri ) saranno piu che sufficienti per iniziare a far parlare e 2 devices .sto gia ordinando il materiale per costruire 2 schede slaves con acquisizione I/O dig-analog .per il master usero il rabbit RCM3010 che mi e' rimast sul groppone dal progetto on line dell'anno scorso .il server ed il client che sto scrivendo per pc (modbus tcp\ip ) potranno essere utilizzati da altri tipo rabbit qualora si voglia supervisionare la rete nenche i dati ed i nodi con un pc.detto questo , stop abbiamo gia parlato abbastanza vado avanti a lavorare ciao walterp.s. dimenticavo......all'accensione il master dovra farsi un bel giretto nella rete ed autoapprendere quanti e quale indirizzo avranno i nodi .il tutto riportato nel pc di supervisione Modificato: 7 luglio 2004 da walterword Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 7 luglio 2004 Segnala Share Inserita: 7 luglio 2004 comunque 32 nodi li vedono tuttiHo letto che ci sono dispositivi a piu' nodi , ma se consideri che oggi il chip sn75176 e' il piu' diffuso ...compreremo il chip con i driver del CANBusIo ho gia' comprato i componenti per trasmettere in CAN con Pic e Rabbit !Il problema e' conoscere il protocollo CANBUS . Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 7 luglio 2004 Segnala Share Inserita: 7 luglio 2004 dubito che si possa conoscere il can bus pero credo che insieme ai driver ci diano anche le librerie un po come profibus alla fine se il chip can bus si smazza tutto lui , e' come programamre una rete di plc con schede dedicate dobbiamo solo preoccuparci dell'applicazione comunque continuiamo con modbus , sto scrivendo il server su tcp\ippoi vediamo su seriale , ho gia in mano calcoli per il CRC e tutti i manuali modbusci vuole solo tempo in questa settimana pero mi occupero di piu al progetto ciao walter Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 8 luglio 2004 Segnala Share Inserita: 8 luglio 2004 (modificato) sto quasi raggiungendo la fase2:la funzione ScriviMultiRegistri e' quasi ultima , ho gia debuggato la parte client : il pacchetto viene spedito giusto e bene e tutte le routines (metodi) per smazzare gli interi in 2 byte e riempire il buffer di invio e ricezione sono ok domani faccio la parte server della 2° funzione , poi provo con un fantastico Premium tsx con scheda ethernet .ciao walterp.s. nel frattempo fratello dlgcom si sta sbattendo alle prese del framework .NET , e poi iniziera ad implementareil modbus seriale su standard RS485 , vero fratello ??? fratello ifach ci assiste da lontano e grande fratello livio orsini invece e' gia al mare ok soci andiamo avanti ciao walter Modificato: 8 luglio 2004 da walterword Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 8 luglio 2004 Segnala Share Inserita: 8 luglio 2004 sto andando a provare le 2 funzioni client sul plc premium con ethernetciao walter Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 7 agosto 2004 Segnala Share Inserita: 7 agosto 2004 ok sono riuscito a stabile una cominicazione tra pic e pc , adesso piazzo anche 2 chip (pcf8574 e pcf 8591 ed in I2c li leggo e poi via seriale tutto al pc )ed alcuni registri per debuggare .riesco ad accendere e spegnere da pc alcuni led posti sulla scheda del pic per me e' gia una grande conquista .Appena finita questa scheda ne preparo un'altra identica e poi entra in scena il mitico Rabbit che sara il master della rete rs495 modbus che unira Rabbit + scheda1 +scheda2 il tutto al pc con modbus tcp\ip .Bene signori adesso si che inizio a divertirmi ciao walter Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 9 agosto 2004 Segnala Share Inserita: 9 agosto 2004 altro passo raggiunto:il PIC16f876 comunica come master con 2 devices in I2C (PCF8591 e PCF8574 ) che sono riepsttivamente:-PCF8591 ADC-DAC a 8 bit , 4 canali input e 1 output -PCF8574 8 bit I/O configurati come 4 input e 4 output Il pic li legge entrambe e poi tramite driver RS232 trasferisce i dati al pc , dove ho scritto un'applicazione con l'aiuto di una dll per gestire la seriale del pc.Variando i potenziometri ed i pulsanti collegati ai devices , leggo immediatamente i dati sul pc Che bello !!!!!!!!!11 nel PIC utilizzo il PCM e le librerie del I2C non son riuscito a farle funzionare cosi mi sonstudiato il protocollo ed ho scritto una libreria dove vado a pilotare direttamente i pic e il loro trisHo cosi poi implementato le funzioni si start , stop , ack ,nack , leggi ad , scrivi ad , ect ect Funziona che e' una meraviglia Il mio progetto continua con lo sviluppo di un asupervisione per controllare lo stato dei registri sia speciali che purpose .Dopo di che faro un'altra scheda simile ed entrera in scena il Rabbit ed i pic saranno equipaggiati di RS485 ciao walter Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 10 agosto 2004 Segnala Share Inserita: 10 agosto 2004 Grande Walter,Anche io sto' cercando di far nevicare qui in Brasile , quindi ho messo le mani sul rabbit.Iniziano i primi problemi....sto' provando i demo in Tcp/ip, ma qualche cosa mi sfugge.Se provo a collegare il rabbit al pc , il modulo si connette e funziona facendo il ping al pc roconosce tutto.Il problema e' che il pc non vede il rabbit , ovvero sente che l'indirizzo esiste , perche' non mi permette di usare lo stesso indirizzo che usa il rabbit , ma non riesce a pingare il modulo , neanche explorer riesce a collegarsi all'indirizzo del rabbit.Chi ha un po' di esperienza per dirmi quali config. devo fare nella rete ?Da notare che uso eternet pre il modem adsl , infatti se tento di collegarmi al rabbit , lui tenta di collegarsi ad internet...ultima cosa uso Xp home. Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 10 agosto 2004 Segnala Share Inserita: 10 agosto 2004 ciao fratello DlgCom E' un vero piacere sentirti qui .dunque io sono a buon punto con PIC-PCF8574-PCF8591 in I2C e PIC-PC in RS232 per il rabbit avevo fatto delle prove dove praticamente il rabbit e' Server ed il pc Client Creavo la connessione , inviavo un buffer dal pc al rabbit e lui mi rispodeva a seconda del comando con altre stringhe .Ti scrivo qua il codice , il rabbit deve essere configurato con un IP ed aprire una porta Quando da pc voglio collegarmi al rabbit (cioe premo il pulsante Connetti ) prima il firewall mi chiede il consenso e magari sono gia ad internet in adsl .Non ti preoccupare che il modulo rabbit funziona al limite ti mandero anche la parte client in vc#.net /********************************************************************************************* sock_tcp_client.c Walter (walterword) & Claudio (Ifach) .NET ver 1.0 07/06/2004 Inizio di un programma programma per comunicare con una connessione TCP\IP tra PC-Rabbit Funzionanate la parte Rabbit e provato per scrivere la parte Pc (client)**********************************************************************************************/#define MY_IP_ADDRESS "192.168.0.102"#define MY_NETMASK "255.255.255.0"#define MY_GATEWAY "192.168.0.208"#define MY_NAMESERVER "192.168.0.208"#define NomeNodo 01//imposta la porta d'ascolto del server TCP#define PORT 1007#memmap xmem#use "dcrtcp.lib"//funzione di ritardonodebugvoid msDelay(unsigned int ams){ auto unsigned long t0; for(t0=MS_TIMER; MS_TIMER<ams+t0;); }//funzione per smazzare il buffer in ricezioneint SmazzaBuffer(char buffer[512]){ //Analizza la stringa ricevutaauto int Lun;auto long Nodo;auto char Buff[20];int Cmd;auto long nDati; Lun = strlen(buffer); if(Lun < 13) { return(-1); } if(buffer[0] != '*') { return(-2); } Buff[0] = buffer[1]; Buff[1] = buffer[2]; Buff[3] = buffer[3]; Buff[4] = '\0'; Nodo = atol(Buff); if(Nodo != NomeNodo) // Se non sta chiamando questo nodo esce { return(0); } Buff[0] = buffer[4]; Buff[1] = buffer[5]; Buff[3] = '\0'; Cmd = atol(Buff); Buff[0] = buffer[6]; Buff[1] = buffer[7]; Buff[3] = '\0'; nDati = atol(Buff); // Qui si controlla il checksum // Si controlla la lunghezza del buffer ed eventualmente si caricano i dati in un Array // poi il parse lo fai cosi' switch(Cmd) { case 1: // Scrivi break; case 2: // Leggi break; otherwise: printf("\nComando Errato !"); }}//Inizio del PROGRAMMAmain() { char buffer [512]; int ritorno; char test [512]; char s_rs [64]; int status, len, getOK, i; tcp_Socket s; //Configura la Porta D WrPortI(PDFR, &PDFRShadow, 0x0); //Setta la porta D come I/O (bit 5 e 7 a livello basso 0) WrPortI(PDDCR, &PDDCRShadow, 0x0); //Setta il la porta D pullup x0 o open collector xFF WrPortI(PDDDR, &PDDDRShadow, 0xff); //Setta la porta D come output (gestibile bit bit) //inizializza il socket sock_init(); while(1) { tcp_listen(&s, PORT, 0L, 0, NULL, 10); sock_wait_established(&s, 0, NULL, &status); printf("Connessione in corso \n"); sock_mode(&s, TCP_MODE_ASCII); //imposta la modalià ASCII if (sock_established(&s)) { while(sock_established(&s)) { sock_wait_input( &s , 0, NULL, &status); sock_gets(&s, buffer, 512); printf(">%s\n", buffer); if(ritorno=SmazzaBuffer(buffer)==-1) { printf("Errore : Buffer corrotto\n"); } else if (ritorno=SmazzaBuffer(buffer)==-2) { printf("Errore : Carattere di start errato \n"); } else { printf("OK Fratello dimmi cosa ca**o devo fare...\n"); } //OFFLED2 sprintf(test, "OFFLED2"); if (strncmp(buffer, test, 7) == 0) { BitWrPortI(PBDR, &PBDRShadow, 0, 7); //Spegne IL led TEST2 sprintf(test, "%d\n", RdPortI(PBDR) + RdPortI(PDDR)); sock_puts(&s, test); printf(">%s\n", test); } } } sock_close(&s); //WrPortI(PADR, &PADRShadow, 0xff); sock_err: switch (status) { case 1: printf("\n L'utente ha chiuso la sessione\n"); //BitWrPortI(PADR, &PADRShadow, 1, 0); break; case -1: printf("\n Time out \n"); //BitWrPortI(PADR, &PADRShadow, 1, 0); break; } }}questo codice e' stato preso , modificato da me , rivisto da claudio e ripuntualizzato da me lo usavo per provare il tcp\ip come client col pc desktopNel Rabbit viene fuori anche la finestra stdio per farti vedere quello che ti spedisce Spero di esserti stato di aiuto ah ...senti fratello , gia che ci sei sto pensando creare una routine di ricezione nel pic16f9876 che poi utilizzero anche per il RS485 nel pic ho gia implementato via software l'interrupt del timer 0 e timer dentro i quali gestiro i pochi controlli della scheda e poi ho implementato l'interrupt della seriale che viene scatenato quando il buffer di ricezione ha ricevuto un byte .All'itnerno di queto interrupt devo gestire il buffer di ricezione , fare i controlli e poi decidere alcune cose se hai una routine gia fatta seno me la faccio io , domanda: ma quando ricevo 1 byte , dopo averlo copiato al posto giusto , devo svuotare il byte di ricezione o viene sovrascritto dal byte che segue ? ciao walter...il grande progetto on line continua Link al commento Condividi su altri siti More sharing options...
luciano Inserita: 10 agosto 2004 Segnala Share Inserita: 10 agosto 2004 ciao dlgcom volevo chiederti come mai affermi che i nodi possono essero solo 32 ?beato te che stai in mezzo a tutte quelle belle brasiliane un saluto anche a walter... luciano Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 10 agosto 2004 Segnala Share Inserita: 10 agosto 2004 ciao luciano adesso mi perfeziono e poi fratello DlgCom ha detto che mi ospita in brasile cosi , dopo una seria indagine di mercato mi trasferiro la' in brasile a dare una mano a fratello DlgCom vero fratello DlgCom ???? Link al commento Condividi su altri siti More sharing options...
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