wakeup72 Inserito: 22 gennaio 2007 Segnala Share Inserito: 22 gennaio 2007 Buongiorno,volevo sapere se qualcuno ha già fatto comunicare in modbus RS485 il twido con dispositivi slave MODBUS RTU non schneider electrics.Come avete fatto e avete esempi?Paolo Link al commento Condividi su altri siti More sharing options...
Alex69 Inserita: 26 gennaio 2007 Segnala Share Inserita: 26 gennaio 2007 Sto svolgendo proprio ora, in un impianto, un'interfaccia tra Twido ed un sistema non Schneider comunicando Modbus.I twido sono utilizzati per inviare dei segnali e ricevere dei comandi dal sistema esterno mediante modbus RTU.Il programma all'interno del Twido l'ho sviluppato appoggiando tutti gli ingressi (segnali che devo condividere) su dei bit delle MW (I0.0=MW0:X0) metre le uscite (comandi che ricevo dal sistema esterno) su delle M (M0=Q0.0).Mediante le corrispondenze tra il protocollo Schneider e il Modbus RTU riesco a puntare direttamente le aree del Twido senza dover eseguire un'operazione di send-recive direttamente sul twido.Le corrispondenze sono:- Le MWn corrispondono alla parola 4000n+1 del Modbus RTU nella parte Modbus Register.- Le Mn Corrispondono alla parola 0000n+1 del Modbus RTU nella parte Modbus Register come Coil Status.n corrisponde al numero della MW o MPer esempio la MW0 corrisponde al Modbus register 40001 mente la M100 corrisponde al Coil Status 00101.Ciao Link al commento Condividi su altri siti More sharing options...
rddiego Inserita: 27 gennaio 2007 Segnala Share Inserita: 27 gennaio 2007 Mediante le corrispondenze tra il protocollo Schneider e il Modbus RTUQuale sarebbe questo fantomatico protocollo schneider??????? Link al commento Condividi su altri siti More sharing options...
Alex69 Inserita: 29 gennaio 2007 Segnala Share Inserita: 29 gennaio 2007 Scusa mi sono spiegato male. Intendevo la corrispondenza tra le M ed MW con il protocollo Modbus RTU Link al commento Condividi su altri siti More sharing options...
gigions Inserita: 9 febbraio 2007 Segnala Share Inserita: 9 febbraio 2007 scusate la mia intromissione, ma sto cercando di utulizzare un twido compatto con un protocollo MODBUS RTU. mi sapreste indicare dove posso trovare il protocollo che utilizza il twido? i comandi interni sono chiari, inosomma ho trovato un documento che spiega come fare, ma se poi mi metto a leggere cosa esci dal PLC, non mi ritrovo con il protocollo...qualcuno sa com'è?sembra che non sia standard, anzi non lo è....su www.modbustools.com c'è una documentazione molto interessante sul ModBus in generale, ma senbra che il Twido non comunichi seguendo quel protocollo...tutto ciò perchè devo scrivere un sw esterno per il monitoraggio del sistema, e devo poter utilizzare il ModBus!!! Link al commento Condividi su altri siti More sharing options...
RDA Inserita: 10 febbraio 2007 Segnala Share Inserita: 10 febbraio 2007 Per l'uso che ne ho fatto io,il twido in modbus e standard oltre il 100%, inoltre si dimostra estremamente performante sia come master che come slaves, con velocità di connessione fino a 38400 baud, il blocco da usare nel software e (EXCH) ovviamente parametrizzato correttamente. Link al commento Condividi su altri siti More sharing options...
gigions Inserita: 15 febbraio 2007 Segnala Share Inserita: 15 febbraio 2007 Ok, proseguono i problemi.si ho capito e utilizzo il PLC correttamente, ma il mio problema è comunicare con lui dall'esterno secondo il protocollo Modbus.ora torna tutto ma non il CRC..ora in modalità RTU, il CRC16 è quello corretto, almeno così si trova in letteratura. così mi sono preso le routine per il calcolo in c++ e le ho convertite in vb2005.la riutine funziona, e rispetto allìesempio torna tutto, peccato il il PLC ne calcola uno diverso.. come posso fare?la routine in vb è: Function CRC16(ByRef nData() As Byte, ByVal wLength As Integer) As Long Dim nTemp As Byte Dim wCRCWord As Integer = &HFFFF Dim wCRCTable() As Integer = { _ &H0, &HC0C1, &HC181, &H140, &HC301, &H3C0, &H280, &HC241, _ &HC601, &H6C0, &H780, &HC741, &H500, &HC5C1, &HC481, &H440, _ &HCC01, &HCC0, &HD80, &HCD41, &HF00, &HCFC1, &HCE81, &HE40, _ &HA00, &HCAC1, &HCB81, &HB40, &HC901, &H9C0, &H880, &HC841, _ &HD801, &H18C0, &H1980, &HD941, &H1B00, &HDBC1, &HDA81, &H1A40, _ &H1E00, &HDEC1, &HDF81, &H1F40, &HDD01, &H1DC0, &H1C80, &HDC41, _ &H1400, &HD4C1, &HD581, &H1540, &HD701, &H17C0, &H1680, &HD641, _ &HD201, &H12C0, &H1380, &HD341, &H1100, &HD1C1, &HD081, &H1040, _ &HF001, &H30C0, &H3180, &HF141, &H3300, &HF3C1, &HF281, &H3240, _ &H3600, &HF6C1, &HF781, &H3740, &HF501, &H35C0, &H3480, &HF441, _ &H3C00, &HFCC1, &HFD81, &H3D40, &HFF01, &H3FC0, &H3E80, &HFE41, _ &HFA01, &H3AC0, &H3B80, &HFB41, &H3900, &HF9C1, &HF881, &H3840, _ &H2800, &HE8C1, &HE981, &H2940, &HEB01, &H2BC0, &H2A80, &HEA41, _ &HEE01, &H2EC0, &H2F80, &HEF41, &H2D00, &HEDC1, &HEC81, &H2C40, _ &HE401, &H24C0, &H2580, &HE541, &H2700, &HE7C1, &HE681, &H2640, _ &H2200, &HE2C1, &HE381, &H2340, &HE101, &H21C0, &H2080, &HE041, _ &HA001, &H60C0, &H6180, &HA141, &H6300, &HA3C1, &HA281, &H6240, _ &H6600, &HA6C1, &HA781, &H6740, &HA501, &H65C0, &H6480, &HA441, _ &H6C00, &HACC1, &HAD81, &H6D40, &HAF01, &H6FC0, &H6E80, &HAE41, _ &HAA01, &H6AC0, &H6B80, &HAB41, &H6900, &HA9C1, &HA881, &H6840, _ &H7800, &HB8C1, &HB981, &H7940, &HBB01, &H7BC0, &H7A80, &HBA41, _ &HBE01, &H7EC0, &H7F80, &HBF41, &H7D00, &HBDC1, &HBC81, &H7C40, _ &HB401, &H74C0, &H7580, &HB541, &H7700, &HB7C1, &HB681, &H7640, _ &H7200, &HB2C1, &HB381, &H7340, &HB101, &H71C0, &H7080, &HB041, _ &H5000, &H90C1, &H9181, &H5140, &H9301, &H53C0, &H5280, &H9241, _ &H9601, &H56C0, &H5780, &H9741, &H5500, &H95C1, &H9481, &H5440, _ &H9C01, &H5CC0, &H5D80, &H9D41, &H5F00, &H9FC1, &H9E81, &H5E40, _ &H5A00, &H9AC1, &H9B81, &H5B40, &H9901, &H59C0, &H5880, &H9841, _ &H8801, &H48C0, &H4980, &H8941, &H4B00, &H8BC1, &H8A81, &H4A40, _ &H4E00, &H8EC1, &H8F81, &H4F40, &H8D01, &H4DC0, &H4C80, &H8C41, _ &H4400, &H84C1, &H8581, &H4540, &H8701, &H47C0, &H4680, &H8641, _ &H8201, &H42C0, &H4380, &H8341, &H4100, &H81C1, &H8081, &H4040} Dim index As Integer index = 0 While (wLength > 0) wLength = wLength - 1 nTemp = (nData(index) Xor wCRCWord) And &HFF index = index + 1 wCRCWord >>= 8 wCRCWord = wCRCWord Xor wCRCTable(nTemp) End While Return wCRCWord End Functionla richiesta di lettura parole secondo il PLC è:(in notrazione decimale)02 22 00 16 00 02 20 101 quello che faccio io è:02 22 00 16 00 02 62 200 se qualcuno ha avuto la stessa necessità, accetto suggerimenti.. Link al commento Condividi su altri siti More sharing options...
biros66 Inserita: 16 febbraio 2007 Segnala Share Inserita: 16 febbraio 2007 Hai configurato IL PLC come SLAVE (indirizzo porta > 1), ciao Link al commento Condividi su altri siti More sharing options...
RDA Inserita: 19 febbraio 2007 Segnala Share Inserita: 19 febbraio 2007 Attenzione.Se al twido chiedi delle aree dati no usate nel codice oppure la confugurazione delle stesse è in modalità automatica ti risponde con un messaggio di errore.Es. nel codice del plc uso la %mw100, nelle letture del master chiedo la %mw101, il plc mi risponde in modo errato e il master si arrabbia.Per ovviare nella configurazione delle aree dati del plc tolgo il settaggio delle mw in automatico e per esempio metto la ultima %MW 200 per superare quelle che vengono richieste dal master.Il problema si era posto anche al sottoscritto che si è risolto come indicato nel presente.Ovviamente come logico che sia avendo settato i parametri di comunicazione in modo corretto e i rispettivi collegamenti elettrici.Saluti. Link al commento Condividi su altri siti More sharing options...
gigions Inserita: 20 febbraio 2007 Segnala Share Inserita: 20 febbraio 2007 (modificato) Ciao a Tutti,dopo un controllo molto approfondito, posso dire a tutti che dovete prestare molta attenzione al codice che scrivete in Vb o altro. Mi spiego meglio, quando aprite la porta fate molta attenzione ai settaggi che usate: handshake, bit di stop, e Bit dati.di default la porta viene aperta a 7 Bit dati,mentre per il modBus ne servono 8!!!se fate tutto giusto ma solo uno dei parametri è sbagliato otterrete caratteri non corretti, e di conseguenza non funziona assolutamente nulla, nonostante in dubug interno al programma vi torna tutto!ho dovuto litigarci non poco per capire dov'era il problema!!ad ogni modo la routine che ho scritto sopra è corretta e perfettamente funzionante! spero che possa essere di aiuto a qualcunoho solo una semplice domanda.è possibile avere un trigger di ricezione messaggio sulla com2? in modo da lasciare in automatico la ricezione dei pacchetti, ma avendo la possibilità di intervenire dopo la ricezione di un pacchetto... Modificato: 20 febbraio 2007 da gigions Link al commento Condividi su altri siti More sharing options...
moretti71 Inserita: 12 luglio 2007 Segnala Share Inserita: 12 luglio 2007 Qualcumo mi sa dire come inizio la trasmissione.O meglio cosa sono quei fantomatici T1 T2 T3 T4 che trovo nella documentazione come byte di apertura e chiusura trasmissione MobBus RTU?Grazie Link al commento Condividi su altri siti More sharing options...
p.luciano Inserita: 13 dicembre 2007 Segnala Share Inserita: 13 dicembre 2007 Ciao sono nuovo con TWIDO c'è qualcuno che mi puo spiegare come fare a leggere UN BIT, UNA PAROLA, UNA DOPPIA, UN REAL tramite un dispositivo che utilizza MODBUS RTU su ETHERNET.Ringrazio tutti fin d'ora LUCIANO 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