Riccardo Inserito: 4 luglio 2006 Segnala Share Inserito: 4 luglio 2006 Ciao a tuttiEsiste una CPU S7-300 con Modbus RTU a bordo? La seriale è una 232 o 485?GrazieRiccardo Link al commento Condividi su altri siti More sharing options...
Gabriele Corrieri Inserita: 4 luglio 2006 Segnala Share Inserita: 4 luglio 2006 Ciaoovviamente è da aspettarsi che Siemens mai e poi mai metterà modbus su una sua cpu, nativamente, mentre è ovvio che lo supporterà esternamente, un po' come con Schneider è lecito trovarsi il modbus di serie, ma il profibus presente solo come espansione.Ciao Link al commento Condividi su altri siti More sharing options...
MarcoEli Inserita: 5 luglio 2006 Segnala Share Inserita: 5 luglio 2006 Purtroppo se vuoi usare modbus devi acquistare una CP340 (circa 500€ listino) + il driver modbus master (1184€ listino). Se hai un pannello operatore ti conviene usarlo come "ponte". Link al commento Condividi su altri siti More sharing options...
Andrea_S Inserita: 5 luglio 2006 Segnala Share Inserita: 5 luglio 2006 oppure calcolare il CRC e utilizzare gli Fb standard del modbus master....... Link al commento Condividi su altri siti More sharing options...
MarcoEli Inserita: 5 luglio 2006 Segnala Share Inserita: 5 luglio 2006 In che senso gli FB Standard? Link al commento Condividi su altri siti More sharing options...
Andrea_S Inserita: 6 luglio 2006 Segnala Share Inserita: 6 luglio 2006 nel senso che per comunicare in modbus RTU, siemens fornisce il driver HW da istallare sul retro della scheda CP, rilascia inoltre il CD contenenti gli FB di comunicazione da lanciare all'interno di un codice FC denominati FB7 e FB8come già chiarito da qualche altro membro del Forum (cerca Modbus RTU) si rendono necessari per completare il progetto della comunicazione modbus master quanto segue:- N° 2 DB di istanza per gli FB7 e 8- N°2 DB di invio e ricezione datiin testa al DB di ricezione dati inserire il calcolo CRC effettuato con una routine di calcolo separata.in rete si trovano numerosi esempi di procedure di calcolo che naturalmente possono essere convertite in S7buon lavoro Link al commento Condividi su altri siti More sharing options...
Kenn Inserita: 8 luglio 2006 Segnala Share Inserita: 8 luglio 2006 La comunicazione modbus avviene nei sistemi S7300 esclusivamente con CP341 in configurazione RS232 RS 422 RS485 e' necessario dotarsi inoltre del drive (CD + Dongle HW da inserire sul retroscheda)La configurazione puo' essere del tipo master o slave e in base a queste necessità si utilizzano FB7 , FB8 (master) o FB80 in dotazione (SLAVE)NON E' MAI NECESSARIO CALCOLARE A PARTE I VALORI DI CRC !!!!questi vengono verificati in ricezione e costruiti in trasmissione in modo automatatico dal firmware di protocollo residente nella CP341 Consiglio :a livello di comunicazione modbus esistono piccole , pratice , economiche schede da intallare su Et200s o sulle IM151Cpu che senza tanti problemi e configurazioni offrono il protocollo MODBUS Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 8 luglio 2006 Segnala Share Inserita: 8 luglio 2006 Sottoscrivo in toto il messaggio di Kenn Link al commento Condividi su altri siti More sharing options...
Andrea_S Inserita: 9 luglio 2006 Segnala Share Inserita: 9 luglio 2006 esatto...il crc non deve essere calcolato se si utilizza il modulo da inserire nel retroscheda......ma:-se non si utilizza detto modulo -si possiede una CP34x -si deve comunicare in modbus master come fare....?Il mio post precedente presuppone questa condizione di lavoro. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 9 luglio 2006 Segnala Share Inserita: 9 luglio 2006 O disponi delle biblioteche siemens per modbus o ti implementi tutto il protocollo modbus, crc compreso. Le specifiche del protocollo modbus le trovi sul sito modbus.org (cito a memoria, comunque con google lo trovi facilmente).PS le biblioteche siemens sono a a pagamento, of course Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 9 luglio 2006 Segnala Share Inserita: 9 luglio 2006 ci sono due strade per comunicare in modbus con i sistemi simatic-utilizzare una scheda seriale da inserire nel rack del plc e smazzarsi il protocollo modbus-utilizzare una scheda modbus da inserire nel rack del plc e tramite delle funzioni caricate quando vengono installati i driver , chiamare gli slaves leggendo e scrivendo Link al commento Condividi su altri siti More sharing options...
Andrea_S Inserita: 18 luglio 2006 Segnala Share Inserita: 18 luglio 2006 (modificato) Di seguito il codice di programma utilizzato per comunicare in modbus rtu senza l'ausilio del modulo da posizionare nel retroscheda.Nella cofigurazione HW la la CP deve essere configurata come protocollo ASCII Naturalmente è necessario aver comprato almeno una volta il pacchetto modbus master ufficiale per poter avere a disposizione gli fb7/8==================================================== Richiamo di FB7 con relativo db di istanza CALL "FB_RXD MODMAST" , DB 100 ( EN_R := TRUE,// abilitazione ricezione dati R := M 10.0,// reset al primo ciclo macchina LADDR := 272,// indirizzo cp34x DB_NO := 12,// db ricezione dati DBB_NO := 0,// dal byte 0 NDR := M 200.0,// ok dati ricevuti ERROR := M 200.1,// errore ricezione dati LEN := MW 300,// lunghezza dati in ricezione STATUS := MW 302);// codice errore ===================================================== temporizzazione risposta e attesa dati U DB10.DBX 4.1; // ATTESA RISPOSTA SLAVE L S5T#4S; // TEMPO MAX ATTESA SE T 1; U T 1; SPB E001; SPA A001; E001: CLR ; L S5T#10MS; // AZZERAMENTO TIMER SE T 1; L 0; // ANNULLAMENTO T DB12.DBB 0; // N STAZIONE SLAVE IN RISPOSTA SET ; R DB10.DBX 4.1; // RESET ATTESA RISPOSTA A001: SET ; /// U M 200.0; // DATI RICEVUTI OK R DB10.DBX 4.1; // RESET ATTESA RISPOSTA SPB R002; SPA TRX; NETWORK TITLE =RICEZIONE E DEPOSITO DATI RICEVUTI R002: SET ; L DB12.DBB 0; // N STAZIONE SLAVE IN RISPOSTA L 1; ==I ; SPB AD01; SET ; L DB12.DBB 0; // N STAZIONE SLAVE IN RISPOSTA L 2; ==I ; SPB AD02; SPA RST; AD01: SET ; CALL "BLKMOV" ( SRCBLK := P#DB12.DBX 3.0 BYTE 80,// SORGENTE DATI RET_VAL := #RET_VALUE, DSTBLK := P#DB13.DBX 100.0 BYTE 80);// DESTINAZIONE DATI SPA RST; AD02: SET ; CALL "BLKMOV" ( SRCBLK := P#DB12.DBX 3.0 BYTE 32,// SORGENTE DATI RET_VAL := #RET_VALUE, DSTBLK := P#DB13.DBX 200.0 BYTE 32);// DESTINAZIONE DATI SPA RST; SET ; RST: L 0; // ANNULLAMENTO T DB12.DBB 0; // N STAZIONE SLAVE IN RISPOSTA SPA SND; // FINE NETWORK TITLE =PASSI RICHIESTA LETTURA E SCRITTURE TRX: U DB10.DBX 4.1; // ATTESA RISPOSTA SLAVE SPB SND; /// SET ; L DB10.DBW 0; // NUMERO DI SEQUENZA SPL OVER; SPA PA00; // PASSO INIZIO SPA PA01; // PRIMO SLAVE IN RICEZIONE SPA PA02; // SECONDO SLAVE IN RICEZIONE SPA PA03; // OVER: BEA ; PA00: SET ; L 1; SPA OUT; NETWORK TITLE =RICHIESTA DATI A SLAVE 2 //VARIABILI DA ADDRESS 7001 A 7020 IN REAL // //DEPOSITATI DAL DB13.DBD 100 IN POI PA01: SET ; L 2; T DB11.DBB 0; // NUMERO SLAVE L 3; // FUNZIONE MODBUS 3 T DB11.DBB 1; L 7001; // REGISTRO INIZIALE IN LETTURA T DB11.DBW 2; L 20; // NUMERO REGISTRI DA LEGGERE (REAL) T DB11.DBW 4; SET ; L 8; // LUNGHEZZA PACCHETTO DATI INCLUSO CRC T DB10.DBW 2; // LUNGHEZZA BYTE TRASMESSI FC SEND SET ; //================================================================================ CALL "CR_C" ( N_BYTE := 6,// NUMERO BYTE DI CUI FARE IL CALCOLO calc_CRC := DB11.DBW 6);// EXIT CALCOLO //================================================================================ SET ; S DB10.DBX 4.0; // START RICHIESTA SEND SET ; SPB NEX1; NEX1: L 2; SPA OUT; NETWORK TITLE =RICHIESTA DATI A SLAVE 3 //VARIABILI DA ADDRESS 7001 A 7008 IN REAL FORMAT // //DEPOSITATI DAL DB13.DBD 200 IN POI PA02: SET ; L 3; T DB11.DBB 0; // NUMERO SLAVE L 3; // FUNZIONE MODBUS 3 T DB11.DBB 1; L 7001; // REGISTRO INIZIALE IN LETTURA T DB11.DBW 2; L 8; // NUMERO REGISTRI DA LEGGERE (REAL) T DB11.DBW 4; //// L 8; // LUNGHEZZA PACCHETTO (INCLUSO CRC) T DB10.DBW 2; // LUNGHEZZA BYTE TRASMESSI FC SEND CALL "CR_C" ( N_BYTE := 6,// NUMERO BYTE DI CUI FARE IL CALCOLO calc_CRC := DB11.DBW 6);// EXIT CALCOLO /// SET ; S DB10.DBX 4.0; // START RICHIESTA SEND //// SET ; SPB NEX2; BEA ; NEX2: L 0; SPA OUT; NETWORK TITLE =PASSO SPARE PA03: SET ; SPB NEX3; BEA ; NEX3: L 0; // RESTART PASSI SPA OUT; NETWORK TITLE =CARICA IL PASSO DI SEQUENZA OUT: T DB10.DBW 0; NETWORK TITLE =TRASMISSIONE MODBUS MASTER SND: SET ; U DB10.DBX 4.0; S DB10.DBX 4.1; // RESET ATTESA RISPOSTA ///================================================================================ ================== SET ; CALL "TRX MODMAST" , DB 101 ( SF := 'S', REQ := DB10.DBX 4.0,// RICHIESTA TRASMISSIONE R := M 201.0,// PRIMO CICLO MACCHINA LADDR := 272, DB_NO := 11,// DB TRASMISSIONE DBB_NO := 0,// BYTE INIZIO DATI TRASMESSI LEN := DB10.DBW 2,// LUNGHEZZA BYTE TRASMESSI DONE := M 202.0,// DATI TRASMESSI OK ERROR := M 202.1, STATUS := MW 304);// ERRORE TRASMISSIONE TRX //================================================================================ ================== SET ; // RESET R DB10.DBX 4.0; // RICHIESTA DI TRASMISSIONE //================================================================================ ================== SET ; U M 201.0; L S5T#2S; // TIMER RESET CP SE T 3; U T 3; R M 201.0; BEA ; END_FUNCTION ================================================================Non so se risulta chiaro Modificato: 18 luglio 2006 da Gabriele Corrieri Link al commento Condividi su altri siti More sharing options...
suibaf Inserita: 22 luglio 2006 Segnala Share Inserita: 22 luglio 2006 Ho fatto comunicare un s7 300 con cp340 con un dispositivo abb in modbus su rs485. Non esiste niente di peggio a livello mondiale.......a livello di universo!!! La siemens non si poteva inventare davvero niente di peggio.Uso siemens da 10 anni ma in questo devo dire che gli ingegneri tedeschi si sono superati.Con un'altro plc, di cui non cito la marca, occorrono solo 15 minuti!!!!saluti Link al commento Condividi su altri siti More sharing options...
Henon Inserita: 23 luglio 2006 Segnala Share Inserita: 23 luglio 2006 Anche nella serie ET200S+ CPU IM151Cpu si può utilizzare dei moduli per comunicazione ModBus,come dice giustamente anche Kenn.suibaf non ha tutti i torti, si può utilizzare altri PLC, che per la comunicazione ModBus sonoeconomicamente più appropriati.Usare la CP340 mi sembra un costo un pò elevato (CPU 300+ CP340).Io ad esempio utilizzo MicroLogix 1200 serie C (580.00€ ModBus RTU Master/Slave +Logica) oppureMicroLogix 1500 LRP (2Potre COM) (600.00€ ModBus Master/Slave+Logica) per eseguire PassThru con PC di Processo.Oppure si può utilizzare i Piccoli PLC della Schneider.Pultroppo la Siemens ( Re ProfiBus ) Punta tutto sul ProfiBus tralasciando altri tipi di reti e Protocolli.Dopo sono Tedeschi (Testa che non la mangia nianche un m.... ).Attenzione sono solo battute, non prenderesela a male.Ogni persona ha la sua visione, pultroppo la Siemens la conosco da anni, però non sono mai stato capace di digerirla. Tuttavia con tanta buona volonta non va cosi male. Link al commento Condividi su altri siti More sharing options...
ceccoB Inserita: 25 luglio 2006 Segnala Share Inserita: 25 luglio 2006 Utilizzare Vipa ? Link al commento Condividi su altri siti More sharing options...
suibaf Inserita: 23 agosto 2006 Segnala Share Inserita: 23 agosto 2006 (modificato) Andrea,sei sicuro che quel "M 200.0 ok dati ricevuti" sia indice del fatto che lo slave abbia risposto alla chiamata del Master?. Ti faccio questa domanda per 2 ragioni:1) gli fb di send e receive altro non fanno che dialogare con la CPU (un 315 2 DP nel mio caso)2) quel bit a me non si muove neanche se stacco il connettore seriale dalla CP. In realtà stavo studiando il tuo codice perchè non capisco come dare una segnalazione di allarme quando mi cade la comunicazione tra Master e Slave!!!Dimenticavo di dire che io ho utilizzato il driver hardaware inserito nella CP.SalutiFabio Modificato: 23 agosto 2006 da suibaf Link al commento Condividi su altri siti More sharing options...
Andrea_S Inserita: 24 agosto 2006 Segnala Share Inserita: 24 agosto 2006 Fabio,M200.0 rimane a 1 perchè viene aggiornato al prossimo richiamo del FB7 l'errore sulla comunicazione devi verificarlo testando rispettivamente Status di Fb7 e Fb8 riguardo al driver HW non cambia la struttura del codice dove tuttavia non deve essere inserito il calcolo crc separatoPer completezza di informazione Ti invito a dare uno sguardo al manuale Modbus master fornito unitamente al programma nel capitolo 8 "esempi"buon lavoroAndrea_s Link al commento Condividi su altri siti More sharing options...
suibaf Inserita: 24 agosto 2006 Segnala Share Inserita: 24 agosto 2006 (modificato) Ciao Andrea, grazie per la tua risposta.L'applicazione che ho fatto funziona alla perfezione ormai da mesi. L'unico neo è che per fare un check della comunicazione ho dovuto fare qualcosa di poco bello ed elegante, quindi mi sono incuriosito andando a vedere il tuo precedente post.FB 7 ed FB8 io li richiamo ciclicamente. Lo stato del M200.0 a me non cambia neanche dopo ore e neanche la parola status.....rimane tutto invariato!!!!CiaoFabioNB ho chiamato la hot line siemens ieri e mi hanno richiamato oggi. Se non lo avessero fatto avrebbero fatto + bella figura!!!! Modificato: 24 agosto 2006 da suibaf Link al commento Condividi su altri siti More sharing options...
Andrea_S Inserita: 24 agosto 2006 Segnala Share Inserita: 24 agosto 2006 Fabio,mi dispiace non poterTi aiutare in q.to momento... non ho disponibile le schede per effettuare un test, tuttavia appena rientro dalle vacanze verificherò con apparecchiature alla mano quanto sopra.....Ti saluto Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 24 agosto 2006 Segnala Share Inserita: 24 agosto 2006 per controllare la comunicazione puo usare un registro per ogni device .Lo incrementi e lo spedisci , chi riceve lo incrementa ancora e lo rispedisce al master Il master prima di incrementarlo ancora lo controlla con un registro immagine del valore prima di spedirlo la prima volta , e se dopo 100 ms e' uguale vuol dire che lo slave non ha ricevuto in tempo oppure non ha ricevuto per niente .E' abbastanza semplice ma lo uso spesso , sia in ethernet che profibus o altro ciao walter Link al commento Condividi su altri siti More sharing options...
suibaf Inserita: 25 agosto 2006 Segnala Share Inserita: 25 agosto 2006 Walterinfatti ho fatto proprio così, ma mi sembra strano che la scheda non preveda un timeout!!!Cià Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 26 agosto 2006 Segnala Share Inserita: 26 agosto 2006 magari lo prevede e lo usa ma senza renderlo visibile .Strano che comunque non ti dia un bit cumulativo di comunicazione fault o time out Il time out e' implementato in ogni master di sicuro , e viene usato anche in fase di inizializzazione automatica nella ricerca della rete e dei suoi componenti .Strano , comumque secondo me , ancora oggi , la comunicazione ha dei buchi neri nella sua esistenza e bisogna sempre attangiarsi per avere a portata di mano il bit di fault .Praticamente anche in sistemi solo siemens che siano ethernet o profibus non si ha ancora in mano la padronanza , ovvero una scheda o un processore di comunicazione che setti un bit per dire che c'e' qualche problema Incredibile 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