Andrea
Risposte nei forum create
-
AutorePost
-
Andrea
PartecipanteHo risolto il problema di impostare correttamente la comunicazione fra SlimLine ARM7 e SlimLine Comact usando l’esempio suggerito. L’array Slaves è costituito da 16 WORD sia per la parte di read che per quella di write. Nel programma che ho realizzato ho usato le funzioni BitToByte e ByteToWord per scrivere nell’array Slaves[i].Wr[i] e correttamente quindi invio un numero che varia da 0 a 2^16-1.
Il problema stà nella lettura dell’array Slaves[i].Rd[i]: in particolare, ho realizzato un semplice programma sugli slave che scrivono su MX100.32 a seguire 6 bit in sequenza in funzione dello stato degli ingressi, quello che accade è illustrato in questa tabella:
Bit su slave 00000001 –> Slave[i].Rd[0]=16#0001
Bit su slave 00000010 –> Slave[i].Rd[0]=16#0100
Bit su slave 00000100 –> Slave[i].Rd[1]=16#0001
Bit su slave 00001000 –> Slave[i].Rd[1]=16#0100
Bit su slave 00010000 –> Slave[i].Rd[2]=16#0001
Bit su slave 00100000 –> Slave[i].Rd[2]=16#0100
Ecc…Mi aspettavo invece di vedere incrementare sempre la prima word Slave[i].Rd[0] con valori tipo 1, 2, 3…. ecc, dove stò sbagliando ?
Andrea
PartecipanteGrazie, mi procuro il cavo seriale per l’aggiornamento del firmware e provo ad utilizzare il progetto suggerito. Lo Slimline MPS046B acquistato ha XTarget 10.0 e compilando il progetto (realizzato con XTarget 11.0) si ha l’errore:
modulo MAIN(264) – error A4097: SPY_BINARY => Object not found
In realtà devo collegare in rete MODBUS RTU anche altri dispositivi quali termostati RS485 o contatori di sottrazione ORBIS “BUS”, questa soluzione “over ip” è valida anche lasciando collegati gli altri dispositivi ? Ovvero, continuo a comunicare con questi dispositivi che fanno parte della rete MODBUS RTU anche con questa impostazione del protocollo di comunicazione fra dispositivi SlimLine ?
Andrea
PartecipanteGrazie per le indicazioni e dei documenti che sto studiando… una curiosità: lo SlimLine ha gli indirizzi Modbus che partono da 40000, questo significa che posso accedere ad altri dispositivi che hanno ad esempio le variabili o i registri posti agli indirizzi da 1 a 20 (per esempio) semplicemente con il comando 16#04: ma con questo comando, dove sarà copiato il valore della variabile ? Sempre nella DB100 ?
Ad esempio voglio leggere una temperatura tramite una sonda collegata ad un termostato (in rete MODBUS RTU – RS485) per la gestione di un fan-coil, questa variabile è all’indirizzo 2 della tabella modbus del termostato (SLAVE indirizzo MODBUS 10 per esempio), il FRAME sarà quindi realizzato in ESADECIMALE (in MODBUS RTU, TCP è quindi senza CRC) e sarà del tipo 0A 04 00 01 00 01 (CRC HI) (CRC LO) ma non ho ben capito dove ELSIST scrive questo valore sia se parliamo di RTU ma soprattutto di TCP. Potrei avere indicazioni in merito ?
Altra domanda: vorrei collegare più PLC in rete MODBUS TCP che a loro volta parlano in modbus RTU col campo; mi sembra di capire che devo condividere e organizzare la DB100 di tutti in maniera identica (es. indirizzi da 40000 a 42000) mentre devo differenziarli per quanto riguarda le variabili da acquisire dal campo; il problema nasce (forse) se i dispositivi che sono sul campo “parlano” a baud rate diverso. In questo caso è previsto l’uso di 2 schede MODBUS diverse che dialogano con le due linee a baud rate diverso ?
Andrea
PartecipanteAvevo dato un’occhiata al manuale ma avevo dei dubbi. Mi è parso di capire che conviene trasmettere dei dati su modbus TCP in formato WORD e non come BIT e quindi, se ho capito bene, occorre creare una variabile (array da 16 bit) WORD con indirizzo %MW100.100 e accedere ad essa con indirizzo modbus 40049 (((Indirizzo variabile/2)+Offset)-1 ? ((100/2)+40000)-1=40049). Se invece volessi accedere al singolo bit, lo creo come tipo BOOL, es. %MX100.50 e accedo sempre con indirizzo modbus 40050 ?
In realtà, essendo la variabile precedente di tipo word occupa tutti gli indirizzi fino al 40065 e quindi il primo indirizzo utile sarà 40066 ?
Non ho ben capito quali siano le funzioni che si usano per la lettura: ModbusRTUMaster_v1, ModbusSlave ? Oppure siccome il modbus è nativo basta semplicemente accedere all’area di memoria e scrivere o leggere come se fossero variabili normali di processo ?
Inoltre, è importante l’uso del SysGetCrc anche su FTP (anche se il manuale parla solo di RTU) oppure si può anche fare a meno di questo controllo sul CRC (nel caso in cui il modbus è nativo e quindi non occorre usare nessuna istruzione) ?
Mi è parso poi di capire che posso usare il software Toolly per fare dei test sul modbus TCP prima di usare una DLL Modbus, corretto ?
Ottobre 23, 2013 alle 10:01 am in risposta a: Notizie, informazioni, programmi protocollo Modbus #37845Andrea
PartecipanteVorrei provare a fare dei test con il Modbus ma vorrei una conferma sulle connessioni da eseguire:
MODBUS ASCII o RTU: si usa la porta Field Bus P2 dello SlimLine e quindi RS485, usando poi Toolly per inviare la stringa o leggere la stringa?
MODBUS TCP: per fare questo basta collegare la porta ethernet del PC (usando tool Toolly?) con la porta ethernet dello SlimLine tramite un classico cavo ethernet dritto ?
Ottobre 4, 2013 alle 10:18 am in risposta a: Disponibilità di una Getting started guide per SlimLine #37815Andrea
PartecipanteGrazie per le informazioni… quindi ricapitolando:
1. Sullo Slimline ci sono 4 microswitch con indicazione 1-2-4-8, ponendo gli switch su ON il numero corrispondente viene sommato agli altri sempre a ON per impostare l’indirizzo del modulo. Se ad esempio si configura ON-OFF-ON-ON si avrà 1+4+8=13 ovvero indirizzo modulo=13 e quindi per accedere ad esempio ai pin di un modulo IN/OUT si deve scrivere IX13.0, IX13.1, … ecc e per gli output QX13.0, QX13.1, … ecc. Nel caso invece di Modulo Input analogico sempre con impostazione indirizzo pari a 13 si deve invece scrivere ID13.0, ID13.1, … ecc? Oppure essendo double word prende 4 byte e quindi ID13.0, ID13.4, ecc?
2. La SD-CARD si formatta con l’istruzione Format <nome cartella> <massimo numero file in cartella> –> es. Format Storage 4 ma questo vuol dire che se volessi integrare un sito web e non conoscendo a priori il numero di file conviene inserire come numero di file un numero molto alto, ad esempio 1000? Oppure ogni file avrà poi una propria locazione di memoria e quindi su una SD card da 2Gb posso inserire al massimo file di determinate dimension i? Esempio: vincolo dimensione file 1Mb e quindi al massimo posso copiare 2000 file da 1Mb ?
3. e 4. informazioni interessanti, da valutare.
-
AutorePost