Blocchi funzione: FbModbusAsciiMs



Documenti analoghi
7.16 Funzioni ed FB gestione modem

Descrizione del protocollo

Comunicazione. Prof. Antonino Mazzeo. Corso di Laurea Specialistica in Ingegneria Informatica

MODBUS-RTU per. Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie. Expert NANO 2ZN

Configurazione moduli I/O serie EX

EML-16 EML-16. Pulses concentrator. Concentratore impulsi MODBUS COMMUNICATION PROTOCOL PROTOCOLLO DI COMUNICAZIONE MODBUS

IM-IU v0.1. alternata e continua. pag. 1 / 5

EFA Automazione S.r.l. Serial Bridge 3 - Modbus RTU slave to Technolife (01 ITA).doc pag. 1 / 9

Note applicative AN001: Driver ModBus

Controllo comunicazioni

Reti e Sistemi per l Automazione MODBUS. Stefano Panzieri Modbus - 1

Test di comunicazione tra due LOGO! 0BA7: Master - Master

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Capitolo 8 - Protocollo Modbus RTU per Drive SIRCO

I/O su Socket TCP: read()

MDAC. Attualmente la versione disponibile di MDAC è la 2.8 ma faremo riferimento alla 2.6. ADO Active Data Objects ADO OLE DB ODBC

Il protocollo MODBUS. Il protocollo MODBUS Pag. 1 di 11

Assembler di Spim. Assembler di SPIM. Struttura di un programma assembler. Direttive

EFA Automazione S.r.l. Serial Bridge 3 - Modbus RTU slave to EIB (01 ITA).doc pag. 1 / 9

cej_ed Yedjhebb[h MODBUS Device interno Device interno - MODBUS Aggiornato il: 26/02/07

Indirizzi MODBUS per ETH Mar 2012

Collegamento di processori PLC-5 e SLC tramite rete DH+ Utilizzando processori SLC 5/04

GENERALITÀ. Unità: Canali di comunicazione:

AMICA Antarctic Multiband Infrared CAmera

Esercizio sulla gestione di file in Unix

ISTRUZIONI PER L'UTILIZZO DEL PROTOCOLLO MODBUS

VARIABLES. Project : ArduinoLCD VARIABLES : Release : LCDMessage. Ver :1.00. Author : Sergio Bertana. Date:18/02/2014. Note : Page:1 of 1

BARRIERA DI MISURA METRON GESTIONE LINEA SERIALE RS-485

Indice Generale. Indice Analitico... i. Software Design Kit 1

Configurazione & Programmazione Profibus DP. in Ambiente Siemens TIA Portal

Code: GW-IMP-WEB-1. Datalogger web pulses counter. Version 6 inputs with Ethernet. MarCom

CANUSB. Programmable CAN bus-pc interface

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Sistema di protezione (1)

Sistema di protezione (2) Protezione (1)

Part. Y1792A - 06/06-01 PC. Protocollo di comunicazione seriale Modbus

Manuale Terminal Manager 2.0

FUNCTION_BLOCK ModbusConversion

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

Info@HenonResearch.com. Http: Pagina 1

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico pagina 1

INSTALLAZIONE SOFTWARE HELMAC

Introduzione al linguaggio C Gli array

CANPC-S1. Programmable CanBus-PC interface

CONFIGURATION MANUAL

Web 4164ETH Rel Lug 2010

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Stampa questa pagina

Capitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved.

Funzioni in C. Violetta Lonati

Il simulatore SPIM SPIM

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

3URWRFROOR0RGEXVSHUS&2ñ0RGEXVSURWRFROIRUS&2ð 0DQXDOHG XVR 8VHUPDQXDO

PROTOCOLLO DI COMUNICAZIONE MODBUS MODBUS COMMUNICATION PROTOCOL. MANUALE ISTRUZIONI / INSTRUCTION MANUAL IM163-IU v0.61

appunti delle lezioni Architetture client/server: applicazioni server

MODELLO DLX IN UNISIM

Allocazione dinamica della memoria - riepilogo

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Il Software. Il software del PC. Il BIOS

Manuale utente. Quinx Box serie 200/300/400. Ethernet RS232 - TCP/IP converter

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Gestione dei processi

Drivers. Introduzione Tipologie Struttura Interazione con il kernel

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Controllo Winsock di Visual Basic

Pronto Esecuzione Attesa Terminazione

Gestione dei File in C

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

Esercitazione [5] Input/Output su Socket

UTC Fire & Security - Training University. ATS8600 Advisor Integrated Management Training installatore

STRUTTURE DEI SISTEMI DI CALCOLO

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX

Compilatore risorse display grafico LCD serie IEC-line

Modulo plug&play MKMB-3-e-3. Interfaccia Modbus/RTU per contatori Iskraemeco MT831 / MT860

Transmission Control Protocol

Laboratorio di Ingegneria del software Sistema di controllo di un ascensore Requisisti preliminari

Il sistema operativo UNIX/Linux. Gli script di shell

Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability.

CORSO DI RETI SSIS. Lezione n.3 9 novembre 2005 Laura Ricci

I puntatori e l allocazione dinamica di memoria

Arduino Quick Ethernet library Reference

FGCAEN Demo software per Mac OS X Leopard ) Lancio dell applicazione. 2) Apertura della comunicazione seriale

Introduzione alla programmazione in C

Cenni di programmazione distribuita in C++ Mauro Piccolo

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

puntatori Lab. Calc. AA 2007/08 1

PROCEDURA DI CONFIGURAZIONE: Per configurare i parametri di rete dell RCX LAN è necessario installare il software Tibbo DS Manager

-Fig.1-

L architettura di riferimento

esercizi memoria virtuale maurizio pizzonia - sistemi operativi

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

clock DATA BUS ADDRESS BUS CONTROL BUS In realtà il bus del microprocessore si compone di 3 bus diversi: Bus indirizzi Bus di controllo

Collegamento dei Sistemi SLC come I/O remoti ai Processori PLC 5

Sistema Operativo di un Router (IOS Software)

Architettura del calcolatore

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Variabili e tipi di dato

USART PIC 16F876. R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R-1 R/W-0 CSRC TX9 TXEN SYNC _ BRGH TRMT TX9D Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

strutturare dati e codice

= 0, 098 ms. Da cui si ricava t 2 medio

Transcript:

Pagina 1 di 6 ELSIST Srl, www.elsist.it Blocchi funzione MNL041Q000 FbModbusAsciiMs Questo blocco funzione permette lo scambio di dati tra due sistemi, uno master ed uno slave, utilizzando una connessione MODBUS ASCII in linea seriale. Per la comunicazione con i sistemi slave il blocco funzione utilizza le funzioni MODBUS 41: Read memory bytes (User function) e 42: Write memory bytes (User function), si rimanda alla documentazione del blocco funzione FbModbusAsciiSl per la documentazione completa delle funzioni utilizzate. Per un esempio di rete di comunicazione tra un sistema master e due o piu sistemi slave, fare riferimento a HT001. Code:PFB044 Prototype FbModbusAsciiMs.h History report Declaration void FbModbusAsciiMs(FBMODBUSASCIIMSDATA* S); Parameters FBMODBUSASCIIMSDATA* S Data ure address (Range from 0x0000 to 0xFFFF) Return value None Struttura dati Il blocco funzione utilizza una struttura dati di 64 bytes di cui forniamo prototipo. I membri riportati sotto l'indicazione di Internal use only members sono utilizzati internamente dal blocco funzione e non devono essere modificati dal programma utente. typedef // --------------------------[Members that can be managed by user program]-- BOOL Enable:1; //Enable BOOL ResetCtrs:1; //Resets all the counters BOOL b2:1; BOOL b3:1; BOOL DoWrite:1; //Write memory bytes BOOL DoRead:1; //Read memory bytes BOOL DoWrRd:1; //Write/read memory bytes BOOL b7:1; }Command; //Command BOOL Enabled:1; //Enabled BOOL JobDone:1; //Command executed BOOL b2:1; BOOL b3:1; BOOL Timeouts:1; //Timeout error BOOL Overruns:1; //Overrun error BOOL CommErrs:1; //Communication error BOOL Parameters:1; //Parameter error }Status; //Status unsigned char NodeAdd; //Node address unsigned char Dummy1; unsigned int WrLcStAd; //Master send data start address unsigned int WrRmStAd; //Slave receive data start address unsigned char WrBytes; //Number of bytes to send (from 0x00 to 0x20) unsigned char Dummy2; unsigned int RdLcStAd; //Master receive data start address

Pagina 2 di 6 unsigned int RdRmStAd; //Slave send data start address unsigned char RdBytes; //Number of bytes to receive (from 0x00 to 0x20) unsigned char Dummy3; unsigned int CommndWt; //Wait time before start (msec) unsigned int TimeOutCk; //Timeout Check (msec) unsigned char Dummy4; unsigned int Timeouts; //Timeout error counter unsigned int Overruns; //Overrun error counter unsigned int CommErrs; //Communication error counter unsigned int TxFrames; //Transmit string counter unsigned int RxFrames; //Received string counter unsigned int PLCMemStart; //Start PLC memory unsigned char Dummy5; unsigned char FrameLength; //Rx/Tx frame Length unsigned char* FrameBuf; //Rx/Tx frame buffer // --------------------------------------------[Internal use only members]--... }FBMODBUSASCIIMSDATA; 00 Command Bits di comando del blocco funzione, il programma utente può gestire questi bits in funzione delle proprie necessità. 0 Enable FALSE: Disabilita l'fb, la comunicazione si arresta. Disabilitando l'fb si azzerano anche tutti i bits di errore in Status e tutti gli altri bits di comando non sono piu attivi. TRUE: Abilita l'fb e si attiva la comunicazione. 1 ResetCtrs TRUE: Esegue il reset di tutti i counters, il bit viene automaticamente resettato. 4 DoWrite TRUE: Comanda il trasferimento dei dati verso il sistema slave. Con l'inizio della esecuzione comando il bit viene automaticamente resettato. 5 DoRead TRUE: Comanda la lettura dei dati dal sistema slave. Con l'inizio della esecuzione comando il bit viene automaticamente resettato. 6 DoWrRd TRUE: Comanda il trasferimento dei dati verso il sistema slave e la sucessiva lettura. Con l'inizio della esecuzione comando il bit viene automaticamente resettato. 01 Status Bits di stato del blocco funzione, il programma utente può testare questi bits. 0 Enabled TRUE: Indica che la FB è stata abilitata. 1 JobDone Attivato per un loop di programma al termine della esecuzione del comando richiesto. 4 Timeouts TRUE: Indica un errore di timeout esecuzione comando, il sistema slave non ha risposto alla richiesta inviata. Si resetta azzerando il bit Command.Enable. 5 Overruns TRUE: Indica un errore di overruns in ricezione risposta da linea seriale, è stato ricevuto un numero di caratteri maggiore della lunghezza buffer di ricezione. Si resetta azzerando il bit Command.Enable. 6 CommErrs TRUE: Indica un errore in ricezione risposta da linea seriale, è stato ricevuto un carattere errato od un numero di caratteri diverso da quello atteso. Si resetta azzerando il bit Command.Enable. 7 Parameters TRUE: Indica un errore nei parametri impostati nella struttura dati della FB. Si resetta azzerando il bit Command.Enable. 02 NodeAdd Caricato dal programma utente, definisce l'indirizzo di nodo slave con cui comunicare (Da 0x00 a 0xFF). 04 WrLcStAd Caricato dal programma utente, definisce l indirizzo di inizio dell area dati sistema master da trasferire verso il sistema slave (Da 0x0000 a 0xFFFF). 06 WrRmStAd Caricato dal programma utente, definisce l'indirizzo di inizio dell area del sistema slave in cui vengono trasferiti i dati letti dal sistema master (Da 0x0000 a 0xFFFF). L'indirizzo utilizzato dal comando MODBUS per la scrittura dei dati sul sistema slave sarà la somma tra questo valore ed il valore di PLCMemStart. 08 WrBytes Caricato dal programma utente, definisce il numero di bytes da trasferire verso il sistema slave (Da 1 a 32). 0A RdLcStAd Caricato dal programma utente, definisce l'indirizzo di inizio dell area del sistema master in cui vengono trasferiti i dati letti dal sistema slave (Da 0x0000 a 0xFFFF). 0C RdRmStAd Caricato dal programma utente, definisce l'indirizzo di inizio dell area del sistema slave da cui verranno letti i dati che saranno trasferiti nel sistema master (Da 0x0000 a 0xFFFF). L'indirizzo utilizzato dal comando MODBUS per la lettura

Pagina 3 di 6 dei dati dal sistema slave sarà la somma tra questo valore ed il valore di PLCMemStart. 0E RdBytes Caricato dal programma utente, definisce il numero di bytes da leggere dal sistema slave (Da 1 a 32). 10 CommndWt Caricato dal programma utente, definisce il tempo di attesa espresso in millisecondi che intercorre tra il termine della esecuzione di un comando (si ricorda che ogni comando è sempre composto da un invio di un frame comando ed una ricezione della relativa risposta) e l'avvio del comando successivo. In caso di comando DoWrRd rappresenta il tempo che intercorre tra il termine del comando di write e l invio del successivo comando di read (Da 0x0000 a 0xFFFF). 12 TimeOutCk Caricato dal programma utente, definisce il tempo disponibile per l'esecuzione un comando espresso in millisecondi (Da 0x0000 a 0xFFFF). 16 Timeouts Contiene il conteggio del numero di errori di timeouts occorsi sia in ricezione che in trasmissione (Da 0x0000 a 0xFFFF). Può essere azzerato da programma utente oppure attivando il bit Command.ResetCtrs. 18 Overruns Contiene il conteggio del numero di errori di overrun occorsi in ricezione (Da 0x0000 a 0xFFFF). Può essere azzerato da programma utente oppure attivando il bit Command.ResetCtrs. 1A CommErrs Contiene il conteggio del numero di errori di comunicazione occorsi in ricezione (Da 0x0000 a 0xFFFF). Può essere azzerato da programma utente oppure attivando il bit Command.ResetCtrs. 1C TxFrames Contiene il conteggio del numero stringhe di comando trasmesse (Da 0x0000 a 0xFFFF). Può essere azzerato da programma utente oppure attivando il bit Command.ResetCtrs. 1E RxFrames Contiene il conteggio del numero di stringhe di risposta ricevute (Da 0x0000 a 0xFFFF). Può essere azzerato da programma utente oppure attivando il bit Command.ResetCtrs. 20 PLCMemStart Caricato dal programma utente, definisce l'indirizzo di allocazione delle variabili PLC in memoria sul sistema slave (Da 0x0000 a 0xFFFF). L'indirizzo utilizzato dal comando MODBUS per la scrittura dei dati sul sistema slave sarà la somma tra questo valore ed il valore di WrRmStAd. L'indirizzo utilizzato dal comando MODBUS per la lettura dei dati sul sistema slave sarà la somma tra questo valore ed il valore di RdRmStAd. 23 FrameLength Caricato dal programma utente, definisce la dimensione in byte del buffer di ricezione/trasmissione frames (Da 12 a 255). Per mantenere la compatibilità con le precedenti versioni occorre definire una dimensione del buffer di 40 bytes. 24 FrameBuf Caricato da programma utente, definisce l'indirizzo di allocazione del buffer di ricezione/trasmissione frames (Da 0x0000 a 0xFFFF). Esempio RIL Nel seguente esempio viene eseguita la gestione della comunicazione Modbus con un sistema slave, il sistema master ed il sistema slave si scambiano automaticamente banchi di memoria. Per testarne il funzionamento basterà connettere il sistema master con un sistema slave su cui deve essere eseguito un programma che gestisce il blocco funzione FbModbusAsciiSl di gestione modbus slave. ; @Section("Communication buffer") ; Here define the data buffer to communicate with the slave system. DEFG Y ToSlave KD 4 DEFG Y ToY0000 Y ToSlave KH 0000 ; ToSlave, Y 0000 DEFG Y ToY0001 Y ToSlave KH 0001 ; ToSlave, Y 0001 DEFG W ToW0002 Y ToSlave KH 0002 ; ToSlave, W 0002 DEFG Y FromSlave KD 2 DEFG Y FromY0020 Y FromSlave KH 0000 ; FromSlave, Y 0020 DEFG Y FromY0021 Y FromSlave KH 0001 ; FromSlave, Y 0021

Pagina 4 di 6 ; @Section("Local definitions") ; MODBUS master communication, data ure. DEFL Y Mdb KD 64 DEFL Y MdbCommand Y Mdb KH 0000 ; Mdb.Command DEFL Y MdbStatus Y Mdb KH 0001 ; Mdb.Status DEFL Y MdbNodeAdd Y Mdb KH 0002 ; Mdb.NodeAdd DEFL W MdbWrLcStAd Y Mdb KH 0004 ; Mdb.WrLcStAd DEFL W MdbWrRmStAd Y Mdb KH 0006 ; Mdb.WrRmStAd DEFL Y MdbWrBytes Y Mdb KH 0008 ; Mdb.WrBytes DEFL W MdbRdLcStAd Y Mdb KH 000A ; Mdb.RdLcStAd DEFL W MdbRdRmStAd Y Mdb KH 000C ; Mdb.RdRmStAd DEFL Y MdbRdBytes Y Mdb KH 000E ; Mdb.RdBytes DEFL W MdbCommndWt Y Mdb KH 0010 ; Mdb.CommndWt DEFL W MdbTimeOutCk Y Mdb KH 0012 ; Mdb.TimeOutCk DEFL W MdbTimeouts Y Mdb KH 0016 ; Mdb.Timeouts DEFL W MdbOverruns Y Mdb KH 0018 ; Mdb.Overruns DEFL W MdbCommErrs Y Mdb KH 001A ; Mdb.CommErrs DEFL W MdbTxFrames Y Mdb KH 001C ; Mdb.TxFrames DEFL W MdbRxFrames Y Mdb KH 001E ; Mdb.RxFrames DEFL W MdbPLCMemStart Y Mdb KH 0020 ; Mdb.PLCMemStart DEFL Y MdbFrameLength Y Mdb KH 0023 ; Mdb.FrameLength DEFL W MdbFrameBuf Y Mdb KH 0024 ; Mdb.FrameBuf ; Rx/Tx frame buffer definition. DEFL Y FrameBuf KD 40 ; @Section("Program init") ; MODBUS master communication, variables settings. ORGR LODT F PLCFirstLoop MOVI Y MdbNodeAdd KD 0 ; Mdb.NodeAdd MOVA W MdbWrLcStAd Y ToSlave ; Mdb.WrLcStAd MOVI W MdbWrRmStAd KH 0000 ; Mdb.WrRmStAd MOVI Y MdbWrBytes KD 4 ; Mdb.WrBytes MOVA W MdbRdLcStAd Y FromSlave ; Mdb.RdLcStAd MOVI W MdbRdRmStAd KH 0020 ; Mdb.RdRmStAd MOVI Y MdbRdBytes KD 2 ; Mdb.RdBytes MOVI W MdbCommndWt KD 40 ; Mdb.CommndWt MOVI W MdbTimeOutCk KD 500 ; Mdb.TimeOutCk MOVI W MdbPLCMemStart KH 0000 ; Mdb.PLCMemStart MOVI Y MdbFrameLength KD 40 ;Mdb.FrameLength MOVA W MdbFrameBuf Y FrameBuf ;Mdb.FrameBuf LTCH Y MdbCommand BD 1 ;Mdb.Command.ResetCtrs ; @Section("MODBUS communication, master management") ; MODBUS master communication management. ; [End of file] ORGR SETR SETV KE IOSerialPortA TASK L FbModbusAsciiMs Y Mdb ; MODBUS master management LTCH Y MdbCommand BD 0 ;Mdb.Command.Enable LTCH Y MdbCommand BD 6 ;Mdb.Command.DoWrRd Esempio "C"

Pagina 5 di 6 Nel seguente esempio viene eseguita la gestione della comunicazione Modbus con un sistema slave, il sistema master ed il sistema slave si scambiano automaticamente banchi di memoria. Per testarne il funzionamento basterà connettere il sistema master con un sistema slave su cui deve essere eseguito un programma che gestisce il blocco funzione FbModbusAsciiSl di gestione modbus slave. // FILE INCLUSIONS #include <ElSystemLib.h> #include <ElPLCLib.h> #include <FbModbusAsciiMs.h> // GENERAL DEFINITIONS #define MDBFRAMELENGTH 40 //Modbus frame length // DATA BUFFER DEFINITIONS // Here define the data buffer to communicate with the slave system. unsigned char Byte0; //To slave system, byte 0 unsigned char Byte1; //To slave system, byte 1 unsigned int Word2; //To slave system, word 2 }ToSlave; //Data buffer to slave unsigned char Byte0; //From slave system, byte 0 unsigned char Byte1; //From slave system, byte 1 }FromSlave; //Data buffer from slave // EXAMPLE PROGRAM void Example(void) // Local variable definitions. static FBMODBUSASCIIMSDATA Mdb; //MODBUS master data ure static unsigned char FrameBuf[MDBFRAMELENGTH]; //Rx/Tx frame buffer // PROGRAM INIT // Execute the system init at first program execution loop. if (PLCFirstLoop) // Set variables to manage the MODBUS master communication. Mdb.NodeAdd=0; //Node address Mdb.WrLcStAd=(unsigned int)&toslave; //Master send data start address Mdb.WrRmStAd=0x0000; //Slave receive data start address Mdb.WrBytes=sizeof(ToSlave); //Number of bytes to send Mdb.RdLcStAd=(unsigned int)&fromslave; //Master receive data start address Mdb.RdRmStAd=0x0004; //Slave send data start address Mdb.RdBytes=sizeof(FromSlave); //Number of bytes to receive Mdb.TimeOutCk=500; //Timeout Check (msec)

Pagina 6 di 6 } Mdb.CommndWt=0; //Wait time before start (msec) Mdb.PLCMemStart=0x0000; //Start PLC memory Mdb.FrameLength=MDBFRAMELENGTH; //Rx/Tx frame length Mdb.FrameBuf=&FrameBuf; //Rx/Tx frame buffer Mdb.Command.Enable=FALSE; //Enable Mdb.Command.ResetCtrs=TRUE; //Resets all the counters // MODBUS MASTER COMMUNICATION // MODBUS master communication call. } SetTermIOVectors(IOSerialPortA); FbModbusAsciiMs(&Mdb); //MODBUS master management Mdb.Command.Enable=TRUE; //Enable Mdb.Command.DoWrite=TRUE; //Write memory bytes // [End of file]