FUNCTION_BLOCK ModbusConversion
|
|
|
- Matteo Perini
- 8 anni fa
- Просмотров:
Транскрипт
1 (ellabutylib_c050) Modbus Ascii/RTU conversion VAR_INPUT Enable : BOOL; (* FB enable *) SpyOn : BOOL; (* Spy active *) FpAscii : FILEP; (* File pointer (Modbus Ascii) *) FpRTU : FILEP; (* File pointer (Modbus RTU) *) IFTime : UDINT; (* Interframe time (us) *) Timeout : UDINT; (* Timeout time (ms) *) END_VAR VAR_OUTPUT Enabled : BOOL; (* FB enabled *) Fault : BOOL; (* FB fault *) END_VAR VAR DFAscii : ARRAY[ ] OF USINT; (* Data frame (Modbus Ascii) *) i : INT; (* Auxiliary variable *) TimeBf : ARRAY[ 0..2 ] OF UDINT; (* Time buffer (us) *) GetCRC : SysGetCrc; (* Get CRC *) CaseNr : ARRAY[ 0..1 ] OF USINT; (* Case programma *) IDx : ARRAY[ 0..1 ] OF UINT; (* Data frame index *) Ch : USINT; (* Character buffer *) FFlop : BOOL; (* Flip/Flop *) DFRTU : ARRAY[ ] OF USINT; (* Data frame (Modbus RTU) *) ErrorNr : UDINT; (* Error number *) END_VAR 1 (* ************************************************************************** *) 2 (* FUNCTION BLOCK "ModbusConversion" *) 3 (* ************************************************************************** *) 4 (* Questa FB esegue la conversione tra il modbus Ascii ed il modbus RTU. *) 5 (* *) 6 (* Parametri in ingresso: *) 7 (* Enable: Abilitazione FB *) 8 (* SpyOn: Attiva spionaggio dati *) 9 (* FpAscii: File pointer (Stream Modbus Ascii) *) 10 (* FpRTU: File pointer (Stream Modbus RTU) *) 11 (* IFTime: Tempo attesa carattere *) 12 (* Timeout: Tempo timeout risposta (ms) *) 13 (* *) 14 (* Parametri in uscita: *) 15 (* Enabled: FB abilitata *) 16 (* Fault: Fault *) 17 (* ErrorNr: Numero di errore *) 18 (* *) 19 (* Spy TFlags *) 20 (* 16# , 'Ax' Frame Modbus Ascii ricevuto *) 21 (* 16# , 'Rx' Frame Modbus RTU ricevuto *) 22 (* 16# , 'Er' Errori di esecuzione *) 23 (* *) (* *) 26 (* INIZIALIZZAZIONI *) 27 (* *) 28 (* Eseguo Spy per averlo attivo da Telnet. Azzero bit di fault. *) 29 Page:1 of 7
2 30 IF (SpyOn) THEN i:=sysspydata(0, 0, 0, 0); END_IF; 31 IF (Fault) THEN Fault:=FALSE; ErrorNr:=0; END_IF; (* Eseguo gestione report errore. *) IF (ErrorNr <> 0) THEN 36 IF (SpyOn) THEN 37 IF NOT(SysSpyData(0, 0, 0, 0)) THEN RETURN; END_IF; 38 i:=to_uint(sysvarsnprintf(adr(dfascii), SIZEOF(DFAscii), 'Error:%08d', UDINT_TYPE, ADR(Erro rnr))); 39 i:=sysspydata(spy_ascii, 16# , ADR('Er'), ADR(DFAscii)); 40 END_IF; (* Set error code ed impulso di "Fault". *) Fault:=TRUE; (* Execution fault*) 45 CaseNr[0]:=0; (* Case programma *) 46 CaseNr[1]:=0; (* Case programma *) 47 RETURN; (* Esco per propagare impulso di "Fault" *) 48 END_IF; (* *) 51 (* GESTIONE ABILITAZIONE *) 52 (* *) 53 (* Gestione abilitazione. *) IF NOT(Enable) THEN Enabled:=FALSE; RETURN; END_IF; (* One shot abilitazione FB.*) IF NOT(Enabled) THEN Enabled:=TRUE; CaseNr[0]:=0; CaseNr[1]:=0; END_IF; (* ====================================================================== *) 62 (* CONVERSIONE DA MODBUS ASCII A RTU *) 63 (* ====================================================================== *) (* *) 66 (* GESTIONE TIMEOUT SEQUENZA *) 67 (* *) 68 (* Gestione timeout, l'intero comando deve chiudersi nel tempo definito. *) IF (CaseNr[0] = 0) THEN TimeBf[0]:=SysGetSysTime(TRUE); END_IF; 71 IF ((SysGetSysTime(TRUE)-TimeBf[0]) >= (Timeout*1000)) THEN 72 ErrorNr:= ; (* Error number *) 73 RETURN; 74 END_IF; (* *) 77 (* GESTIONE CASES *) 78 (* *) 79 (* Gestione cases conversione da Ascii ad RTU. *) WHILE (TRUE) DO 82 CASE (CaseNr[0]) OF (* *) 85 (* RICEZIONE PACCHETTO ASCII *) 86 (* *) 87 (* Controllo se ricevuto carattere ":" di start, loop su WHILE. *) 88 Page:2 of 7
3 89 0: 90 IF NOT(TO_BOOL(SysGetIChars(FpAscii))) THEN EXIT; END_IF; 91 IF (TO_USINT(Sysfgetc(FpAscii)) = 16#3A) THEN 92 FFlop:=FALSE; (* Flip/Flop *) 93 IDx[0]:=0; (* Data frame index *) 94 CaseNr[0]:=CaseNr[0]+1; (* Case programma *) 95 END_IF; (* *) 98 (* Controllo se ricevo caratteri frame ascii. *) : 101 IF NOT(TO_BOOL(SysGetIChars(FpAscii))) THEN EXIT; END_IF; 102 Ch:=TO_USINT(Sysfgetc(FpAscii)); (* Character buffer *) (* Eseguo controllo se <CR>, fine stringa. *) IF (Ch = 16#0D) THEN CaseNr[0]:=CaseNr[0]+1; RETURN; END_IF; (* Eseguo controllo dato Ascii in esadecimale. *) IF (Ch < 16#30) OR (Ch > 16#46) OR ((Ch > 16#39) AND (Ch < 16#41)) THEN 111 ErrorNr:= ; (* Error number *) 112 RETURN; 113 END_IF; (* Eseguo conversione dato Ascii in esadecimale. *) IF (Ch <= 16#39) THEN Ch:=Ch-16#30; ELSE Ch:=Ch-16#37; END_IF; (* Carico carattere ricevuto in stringa ricezione. *) IF NOT(FFlop) THEN 122 FFlop:=TRUE; (* Flip/Flop *) 123 DFAscii[IDx[0]]:=Ch*16; (* Data frame *) 124 ELSE 125 FFlop:=FALSE; (* Flip/Flop *) 126 DFAscii[IDx[0]]:=DFAscii[IDx[0]]+Ch; (* Data frame *) 127 IDx[0]:=IDx[0]+1; (* Data frame index *) 128 END_IF; (* Controllo limite caratteri, lascio spazio per 2 byte di CRC. *) IF (IDx[0] >= (SIZEOF(DFAscii)-2)) THEN 133 ErrorNr:= ; (* Error number *) 134 RETURN; 135 END_IF; (* *) 138 (* Controllo se ricevuto carattere "LF" di fine, loop su WHILE. *) : 141 IF NOT(TO_BOOL(SysGetIChars(FpAscii))) THEN EXIT; END_IF; 142 IF (TO_USINT(Sysfgetc(FpAscii)) <> 16#0A) THEN ErrorNr:= ; RETURN; END_IF; 143 CaseNr[0]:=CaseNr[0]+1; (* Case programma *) (* *) 146 (* Se attivo eseguo spy frame ricevuto. Limito spy a 63 caratteri *) 147 (* per evitare roll over su somma. *) 148 Page:3 of 7
4 149 3: 150 IF (SpyOn) THEN 151 IF NOT(SysSpyData(0, 0, 0, 0)) THEN EXIT; END_IF; 152 i:=sysspydata(spy_binary+to_usint(limit(idx[0], 0, 63)), 16# , ADR('Ax'), ADR(DF Ascii)); 153 END_IF; 154 CaseNr[0]:=CaseNr[0]+1; (* Case programma *) (* *) 157 (* Controllo numero minimo caratteri ricevuti, almeno 5. *) 158 (* [Nodo], [Funzione], 2 di dato, [LRC]. *) : 161 IF (IDx[0] < 5) THEN ErrorNr:= ; RETURN; END_IF; (* Eseguo controllo LRC su frame ricevuto. *) Ch:=0; (* Character buffer *) 166 FOR i:=0 TO TO_INT(IDx[0]-1) DO Ch:=Ch+DFAscii[i]; END_FOR; (* Errore LRC frame ricevuto, il risultato deve essere "0". *) IF (Ch <> 0) THEN ErrorNr:= ; RETURN; END_IF; (* Elimino da lunghezza frame LRC. *) IDx[0]:=IDx[0]-1; (* Data frame index *) 175 CaseNr[0]:=10; (* Case programma *) (* *) 178 (* TRASMISSIONE FRAME RTU *) 179 (* *) 180 (* Controllo se spazio in buffer di trasmissione. *) : 183 IF (TO_UINT(SysGetOSpace(FpRTU)) < (IDx[0]+2)) THEN EXIT; END_IF; (* Calcolo CRC frame da trasmettere. *) GetCRC.Buf:=ADR(DFAscii); (* Buffer address *) 188 GetCRC.ByteNr:=IDx[0]; (* Byte number *) 189 GetCRC.CrcIni:=16#FFFF; (* CRC ini value *) 190 GetCRC(); (* Calculate CRC *) 191 DFAscii[IDx[0]]:=TO_USINT(GetCRC.Crc/256); (* MSB CRC *) 192 DFAscii[IDx[0]+1]:=TO_USINT(GetCRC.Crc); (* LSB CRC *) (* Prima di trasmettere frame pulisco buffer di ricezione Ascii. *) i:=sysfibfclear(fpascii); 197 i:=sysfwrite(adr(dfascii), TO_INT(IDx[0]+2), 1, FpRTU); (* Eseguo flush, così su socket la stringa esce immediatamente. *) IF NOT(SysFOBfFlush(FpRTU)) THEN ErrorNr:= ; RETURN; END_IF; 202 CaseNr[0]:=CaseNr[0]+1; (* Case programma *) (* *) 205 (* Eseguo attesa fine trasmissione frame. *) : Page:4 of 7
5 208 IF (SysGetOSpace(FpRTU) <> TO_INT(SysGetTxBSize(FpRTU))) THEN EXIT; END_IF; 209 CaseNr[0]:=0; (* Case programma *) 210 ELSE 211 CaseNr[0]:=0; (* Case programma *) 212 END_CASE; 213 END_WHILE; (* ====================================================================== *) 216 (* CONVERSIONE DA MODBUS RTU A ASCII *) 217 (* ====================================================================== *) (* *) 220 (* GESTIONE TIMEOUT SEQUENZA *) 221 (* *) 222 (* Gestione timeout, l'intero comando deve chiudersi nel tempo definito. *) IF (CaseNr[1] = 0) THEN TimeBf[1]:=SysGetSysTime(TRUE); END_IF; 225 IF ((SysGetSysTime(TRUE)-TimeBf[1]) >= (Timeout*1000)) THEN 226 ErrorNr:= ; (* Error number *) 227 RETURN; 228 END_IF; (* *) 231 (* GESTIONE CASES *) 232 (* *) 233 (* Gestione cases conversione da Ascii ad RTU. *) WHILE (TRUE) DO 236 CASE (CaseNr[1]) OF (* *) 239 (* RICEZIONE PACCHETTO RTU *) 240 (* *) 241 (* Controllo se ricevuto caratteri e salvo tempo. *) : 244 IF NOT(TO_BOOL(SysGetIChars(FpRTU))) THEN EXIT; END_IF; 245 IDx[1]:=0; (* Data frame index *) 246 TimeBf[2]:=SysGetSysTime(TRUE); (* Time buffer (us) *) 247 CaseNr[1]:=CaseNr[1]+1; (* Case programma *) (* *) 250 (* Controllo se pausa ricezione frame ricevuto. *) : 253 IF NOT(TO_BOOL(SysGetIChars(FpRTU))) THEN 254 IF ((SysGetSysTime(TRUE)-TimeBf[2]) > IFTime) THEN CaseNr[1]:=CaseNr[1]+1; END_IF; 255 EXIT; (* Esco dal ciclo While *) 256 END_IF; (* Carico carattere ricevuto in stringa ricezione. *) TimeBf[2]:=SysGetSysTime(TRUE); (* Time buffer *) 261 DFRTU[IDx[1]]:=TO_USINT(Sysfgetc(FpRTU)); (* Rx string *) 262 IDx[1]:=IDx[1]+1; (* Data frame index *) (* Controllo limite caratteri, lascio spazio per byte di LRC. *) IF (IDx[1] >= (SIZEOF(DFRTU)-1)) THEN 267 ErrorNr:= ; (* Error number *) Page:5 of 7
6 268 RETURN; 269 END_IF; (* *) 272 (* Se attivo eseguo spy frame ricevuto. Limito spy a 63 caratteri *) 273 (* per evitare roll over su somma. *) : 276 IF (SpyOn) THEN 277 IF NOT(SysSpyData(0, 0, 0, 0)) THEN EXIT; END_IF; 278 i:=sysspydata(spy_binary+to_usint(limit(idx[1], 0, 63)), 16# , ADR('Rx'), ADR(DF RTU)); 279 END_IF; 280 CaseNr[1]:=CaseNr[1]+1; (* Case programma *) (* *) 283 (* Controllo numero minimo caratteri ricevuti, almeno 6. *) 284 (* [Nodo], [Funzione], 2 di dato, [CRC]. *) : 287 IF (IDx[1] < 6) THEN ErrorNr:= ; RETURN; END_IF; (* Eseguo controllo CRC su frame ricevuto. *) GetCRC.Buf:=ADR(DFRTU); (* Buffer address *) 292 GetCRC.ByteNr:=TO_UINT(IDx[1]); (* Byte number *) 293 GetCRC.CrcIni:=16#FFFF; (* CRC ini value *) 294 GetCRC(); (* Calculate CRC *) (* Gestione errore CRC frame ricevuto. *) IF (GetCRC.Crc <> 0) THEN ErrorNr:= ; RETURN; END_IF; (* Elimino da lunghezza frame CRC. *) IDx[1]:=IDx[1]-2; (* Data frame index *) 303 CaseNr[1]:=10; (* Case programma *) (* *) 306 (* TRASMISSIONE FRAME ASCII *) 307 (* *) 308 (* Controllo se spazio in buffer di trasmissione. Per ogni byte *) 309 (* RTU ricevuto sono trasmessi 2 caratteri Ascii, in più vi è il *) 310 (* carattere di start, i 2 caratteri di LRC ed il <CR><LF>. *) : 313 IF (TO_UINT(SysGetOSpace(FpAscii)) < ((IDx[1]*2)+1+2+2)) THEN EXIT; END_IF; (* Calcolo LRC del frame e lo aggiungo al termine dei dati. *) Ch:=0; (* Character buffer *) 318 FOR i:=0 TO TO_INT(IDx[1]-1) DO Ch:=Ch+DFRTU[i]; END_FOR; 319 DFRTU[IDx[1]]:=0-Ch; (* LRC value *) 320 IDx[1]:=IDx[1]+1; (* Data frame index *) 321 CaseNr[1]:=CaseNr[1]+1; (* Case programma *) (* Trasmetto start frame ":". *) IF (Sysfputc(TO_INT(16#3A), FpAscii) = EOF) THEN ErrorNr:= ; RETURN; END_IF; 326 Page:6 of 7
7 327 (* Loop conversione dato esadecimale in Ascii e trasmissione. *) FOR i:=0 TO TO_INT(IDx[1]-1) DO (* Conversione dato esadecimale in Ascii e lo trasmetto. *) Ch:=DFRTU[i]/16; (* Character buffer *) 334 IF (Ch <= 16#09) THEN Ch:=Ch+16#30; ELSE Ch:=Ch+16#37; END_IF; 335 IF (Sysfputc(TO_INT(Ch), FpAscii) = EOF) THEN ErrorNr:= ; RETURN; END_IF; Ch:=DFRTU[i]&16#0F; (* Character buffer *) 338 IF (Ch <= 16#09) THEN Ch:=Ch+16#30; ELSE Ch:=Ch+16#37; END_IF; 339 IF (Sysfputc(TO_INT(Ch), FpAscii) = EOF) THEN ErrorNr:= ; RETURN; END_IF; 340 END_FOR; (* Eseguo trasmissione <CR> e <LF>. *) IF (Sysfputc(TO_INT(16#0D), FpAscii) = EOF) THEN ErrorNr:= ; RETURN; END_IF; 345 IF (Sysfputc(TO_INT(16#0A), FpAscii) = EOF) THEN ErrorNr:= ; RETURN; END_IF; (* Eseguo flush, così su socket la stringa esce immediatamente. *) IF NOT(SysFOBfFlush(FpAscii)) THEN ErrorNr:= ; RETURN; END_IF; 350 CaseNr[1]:=CaseNr[1]+1; (* Case programma *) (* *) 353 (* Eseguo attesa fine trasmissione frame. *) : 356 IF (SysGetOSpace(FpAscii) <> TO_INT(SysGetTxBSize(FpAscii))) THEN EXIT; END_IF; 357 CaseNr[1]:=0; (* Case programma *) 358 ELSE 359 CaseNr[1]:=0; (* Case programma *) 360 END_CASE; 361 END_WHILE; (* [End of file] *) Page:7 of 7
1.1 Libreria gestione protocollo cctalk (ecctalkprotolib)
1.1 Libreria gestione protocollo cctalk (ecctalkprotolib) Attenzione! Per utilizzare la libreria occorre importarla nel proprio progetto. Vedere capitolo relativo all'import delle librerie. Il protocollo
1.1 Libreria gestione dispositivi Modbus (ellabmdbdevslib)
1.1 Libreria gestione dispositivi Modbus (ellabmdbdevslib) Questa libreria contiene un insieme di funzioni e blocchi funzione per la gestione di dispositivi commerciali connessi tramite protocollo Modbus.
Structured Text. Structured Text. Marco Mauri. Politecnico di Milano P.zza Leonardo da Vinci, Maggio
Structured Text Marco Mauri Politecnico di Milano P.zza Leonardo da Vinci, 32 22-23 Maggio 2001 1 Sommario La struttura del linguaggio Come assegnare un valore ad una variabile Come creare espressioni
Corso di Automazione industriale
Corso di Automazione industriale Lezione 7 PLC Testo strutturato Università degli Studi di Bergamo, Automazione Industriale, A.A. 2017/2018, A. L. Cologni 1 Introduzione Il Testo strutturato è il linguaggio
7.23 Funzioni ed FB supporto inverter Power One
7.23 Funzioni ed FB supporto inverter Power One Power One è uno dei principali produttori mondiale di sistemi di alimentazione. Power One è di diritto anche nel settore delle energie alternative con applicazioni
EML-16 EML-16. Pulses concentrator. Concentratore impulsi MODBUS COMMUNICATION PROTOCOL PROTOCOLLO DI COMUNICAZIONE MODBUS
MANUALE OPERATIVO / INSTRUCTION MANUAL IM-IU v0.1 EML-16 Concentratore impulsi PROTOCOLLO DI COMUNICAZIONE MODBUS EML-16 Pulses concentrator MODBUS COMMUNICATION PROTOCOL PROTOCOLLO MODBUS Il concentratore
Blocchi funzione: FbModbusAsciiMs
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
PROTOCOLLO DI COMUNICAZIONE MODBUS MODBUS COMMUNICATION PROTOCOL. MANUALE ISTRUZIONI / INSTRUCTION MANUAL IM163-IU v0.61
MANUALE ISTRUZIONI / INSTRUCTION MANUAL IM163-IU v0.61 COMPALARM C2C Annunciatore d allarme PROTOCOLLO DI COMUNICAZIONE MODBUS COMPALARM C2C Alarm annunciator MODBUS COMMUNICATION PROTOCOL Compalarm C2C
E-Mail : [email protected]. Http: www.henonresearch.com Pagina 1
E-Mail : [email protected] Http: www.henonresearch.com Pagina 1 Comunicazione ProfiBus tra PLC Siemens S414-2DP Master e CLX Slave 3 Configurazione Hardware del Master Siemens 3 Descrizione delle
TIA PORTAL-SCL. Structured Control Language per Step7 V11. Orazio Vinci Siemens AG All Rights Reserved.
TIA PORTAL-SCL Structured Control Language per Step7 V11 Orazio Vinci E-mail : [email protected] Struttura della presentazione Introduzione Caratteristiche generali Ambiente di sviluppo e finestra
7.16 Funzioni ed FB gestione modem
7.16 Funzioni ed FB gestione modem Le funzioni ed i blocchi funzione per la gestione del modem utilizzano un modem GSM connesso ad un terminale di I/O del sistema (Tipicamente è utilizzata una porta seriale).
Centralina di commutazione automatica
M7000CBNCU03 Centralina di Protocollo di comunicazione Modbus LE09509AA-01/17-01 GF 4 226 82 LINE 1 LINE 2 Q1 LOAD Q2 AUT RESET OFF _ OK MENU MENU AUT + MAN IR COM IEC 60947-6-1 Centralina di IT ITALIANO
Sommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C
Sommario Introduzione... xv Organizzazione del volume... xv Argomenti...xvi Domande...xvi Verifiche...xvi Domande e risposte...xvi Esercizi...xvi Non è richiesta alcuna precedente esperienza di programmazione...
LabVIEW parte II. Ing. Gianfranco Miele November 3, 2010
Ing. Gianfranco Miele ([email protected]) http://www.docente.unicas.it/gianfranco_miele November 3, 2010 Le stringhe Una stringa è una sequenza di caratteri Ogni carattere ha una corrispondente codifica
Nastro trasportatore con ribaltamento cassetta.
Nastro trasportatore con ribaltamento cassetta. Il seguente progetto prevede il controllo di un nastro trasportatore (attraverso un PLC Siemens S71200 o S7-1500 programmato in LAD) in cui è presente un'isola
Part. Y1792A - 06/06-01 PC. Protocollo di comunicazione seriale Modbus
Part. Y1792A - 06/06-01 PC Protocollo di comunicazione seriale Modbus 3 INDICE 1. Protocollo Modbus Pag. 4 1.1 Impostazione parametri di comunicazione Pag. 4 2. Protocollo Modbus RTU Pag. 5 2.1 Funzioni
Sviluppare un programma in FORTRAN
Sviluppare un programma in FORTRAN Scrivere il file sorgente Editor di testo (emacs, vi, notepad, etc) Compilare Compilatore (ifort, gfortran, etc) Eseguire il programma Riga di comando, doppio click,
MODBUS-RTU per TWM3IO
per TWM3IO Specifiche protocollo di comunicazione MODBUS-RTU per controllo in rete dispositivi serie TWM3IO Nome documento: MODBUS-RTU_TWM3IO_01_13_ITA Software installato: TWM3IO.elf Rev. 0 e successive
1.1 Funzioni ed FB gestione modem (emodemlib)
1.1 Funzioni ed FB gestione modem (emodemlib) Le funzioni ed i blocchi funzione per la gestione del modem utilizzano un modem GSM connesso ad un terminale di I/O del sistema (Tipicamente è utilizzata una
MANUALE UTENTE. Gateway DLMS-MODBUS per ITRON/ACTARIS SL7000 con RS232 P/N: GW-DLMS-232-SL7. Edizione 2.0
MANUALE UTENTE Gateway DLMS-MODBUS per ITRON/ACTARIS SL7000 con RS232 P/N: GW-DLMS-232-SL7 Edizione 2.0 MARCOM SRL Tel. +390450204747 Email: [email protected] Via Mezzacampagna 52 (int. 29) www.marcomweb.it
Programmi in Assembly
Programmi in Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione [email protected] Università degli Studi di Milano 1/23 Esempio Numeri positivi # Programma che copia tramite
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
Il protocollo di comunicazione del CAN è standardizzato come ISO (2003) ed è di tipo
I protocolli di comunicazione a bus 3.0 IL CANBUS Il CANBUS è un protocollo di comunicazione seriale a bus particolarmente utilizzato in ambito automotive o laddove siano necessarie comunicazioni e cablaggi
Il linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
STANDARD IEC PRIMA PARTE Introduzione SECONDA PARTE Elementi comuni TERZA PARTE Linguaggi di programmazione
STANDARD IEC 61131 PRIMA PARTE Introduzione SECONDA PARTE Elementi comuni TERZA PARTE Linguaggi di programmazione 1 - Introduzione Un sistema di controllo di processi industriali deve avere tre caratteristiche
SIA IP Invio Eventi e Ricezione di comandi con il protocollo SIA IP Settembre 2016
SIA IP Invio Eventi e Ricezio one di comandi con il protocollo SIA IP Settembree 2016 Per il protocollo di comunicazione fare riferimento al documento ANSI/SIA DC 09 2013: Internet Protocol Event Reporting.
REGOLATORE PFC96Evo / PFC144Evo PROTOCOLLO MODBUS
REGOLATORE PFC96Evo / PFC144Evo PROTOCOLLO MODBUS ATTENZIONE Le attività di installazione, regolazione, ispezione e manutenzione devono essere svolte solo da personale qualificato incaricato. Ogni operazione
I/O su Socket TCP: read()
I/O su Socket TCP: read() I socket TCP, una volta che la connessione TCP sia stata instaurata, sono accedibili come se fossero dei file, mediante un descrittore di file (un intero) ottenuto tramite una
L ambiente di simulazione SPIM
Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/20
A.1 Programma di comunicazione su porta seriale
Appendice A Programmi di gestione dell apparato A.1 Programma di comunicazione su porta seriale /* INCLUDE */ #include #include #include #include #include
I CARATTERI E LE STRINGHE
I CARATTERI E LE STRINGHE IL CODICE ASCII Per memorizzare i simboli grafici corrispondenti ai caratteri bisogna associare un numero intero a ciascuno di essi Il codice ASCII / æski/ (American Standard
Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j
L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):
Capitolo 8 - Protocollo Modbus RTU per Drive SIRCO
Capitolo 8 - Protocollo Modbus RTU per Drive SIRCO 8.1 Introduzione I parametri Drive vengono riferiti nel capitolo come registri Modbus di 16 bit; un parametro Drive di 32 bit occupa quindi 2 registri
Le procedure ricorsive Come eseguire un programma. Architettura degli Elaboratori e delle Reti, Turno I
Le procedure ricorsive Come eseguire un programma Architettura degli Elaboratori e delle Reti, Turno I Alberto Borghese Università degli Studi di Milano Dipartimento di Scienze dell Informazione email:
Stringhe. Prof. Lorenzo Porcelli
Stringhe Prof. Lorenzo Porcelli definizione Una stringa è un vettore di caratteri terminato dal carattere nullo \0. Il carattere nullo finale permette di determinare la lunghezza della stringa. char vet[32];
Opera Crate Monitor Software Reference Manual V2.0
Opera Crate Monitor Software Reference Manual V2.0 La scheda comunica con il mondo esterno tramite CAN BUS o tramite RS232 (38400 baud 8bit 1stop). Il led ROSSO (ERR) sul pannello frontale indica le seguenti
Istruzioni di controllo del flusso
Istruzioni di controllo del flusso Il flusso di esecuzione è normalmente sequenziale Le istruzioni di controllo cambiano la prossima istruzione da eseguire Istruzioni di salto condizionato branch if equal
