Escolar Documentos
Profissional Documentos
Cultura Documentos
Presentado a:
Alverto Delgadillo
Integrantes
Yesid uruea cuervo
Eliseo Amado
20141383221
20151383025
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Funcin
Request: Esta trama realiza la peticin del estado de los (discrete coils)
del 20 al 56 del dispositivo esclavo con direccin 17.
11 01 0013 0025 0E10
11: Direccin del Esclavo (17 = 11 hex.)
01: Cdigo de la Funcin (read Coil Status)
0013: Direccin del dato del primer coil para leer. (Coil 20 - 1 = 19
= 13 hex)
0025: Nmero de coils para leer. (del 20 al 56 = 37 = 25 hex)
0E10: El CRC (cyclic redundancy check) para manejo de errores.
Response
11 01 05 CD6BB20E1B 45E6
11: Direccin del esclavo (17 = 11 hex)
01: Cdigo de la funcin (read Coil Status)
05: Nmero de data bytes (37 Coils / 8 bits por byte = 5 bytes)
CD: Coils 27 - 20 (1100 1101)
6B: Coils 35 - 28 (0110 1011)
B2: Coils 43 - 36 (1011 0010)
0E: Coils 51 - 44 (0000 1110)
1B: 3 bits no usados & Coils 56 - 52 (0001 1011)
45E6: El CRC (cyclic redundancy check).
Funcin: Input Status (FC=02)
#include <modbusSlave.h>
//const int EnTxPin = 2; // HIGH:TX y LOW:RX
/* PINS
Add more registers if needed
Digital input pins 2,3,4,5,6,7
Digital output pins 8,9,12,13
Analog output pins 10,11 (PWM)
Analog input pins 0,1,2,3,4,5
*/
modbusDevice regBank;
modbusSlave slave;
int AI0,AI1,AI2,AI3,AI4,AI5;
void setup()
{
//pinMode(EnTxPin, OUTPUT);
// digitalWrite(EnTxPin, HIGH);
regBank.setId(1); ///Set Slave ID
//Add Digital Output registers 00001-00016 to the register bank
regBank.add(1);
regBank.add(2);
regBank.add(3);
regBank.add(4);
regBank.add(5);
regBank.add(6);
regBank.add(7);
regBank.add(8);
regBank.add(9);
regBank.add(10);
regBank.add(11);
regBank.add(12);
regBank.add(13);
regBank.add(14);
regBank.add(15);
regBank.add(16);
//Add Digital Input registers
regBank.add(10001);
regBank.add(10002);
regBank.add(10003);
regBank.add(10004);
regBank.add(10005);
regBank.add(10006);
regBank.add(10007);
regBank.add(10008);
regBank.add(10009);
regBank.add(10010);
regBank.add(10011);
regBank.add(10012);
regBank.add(10013);
regBank.add(10014);
regBank.add(10015);
regBank.add(10016);
regBank.add(10017);
regBank.add(30001);
regBank.add(30002);
regBank.add(30003);
regBank.add(30004);
regBank.add(30005);
regBank.add(30006);
regBank.add(30007);
regBank.add(30008);
regBank.add(30009);
regBank.add(30010);
regBank.add(40024);
regBank.add(40025);
regBank.add(40026);
regBank.add(40027);
regBank.add(40028);
regBank.add(40029);
regBank.add(40030);
//regBank.add(30005);
//regBank.add(30006);
//Analog Output registers
// regBank.add(40010);
// regBank.add(40011);
slave._device = ®Bank;
slave.setBaud(9600);
// pinMode(0,OUTPUT);
//pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(12,INPUT);
pinMode(13,INPUT);
void loop(){
while(1){
regBank.set(10001, 1);
regBank.set(10002, (word) random(0, 1));
regBank.set(10007, 1);
regBank.set(10003, 1);
regBank.set(10004, (word) random(0, 1));
regBank.set(10005, 1);
regBank.set(10006, 1);
regBank.set(10008, 1);
regBank.set(10009, (word) random(0, 1));
regBank.set(10010, 1);
regBank.set(10011, 1);
regBank.set(10012, (word) random(0, 1));
digitalWrite(3,HIGH);
}
if (DI12 <= 0){
regBank.set(10001,0);
regBank.set(10002,0);
regBank.set(10007,0);
regBank.set(10003,0);
regBank.set(10004,0);
regBank.set(10005,0);
regBank.set(10006,0);
regBank.set(10008,0);
regBank.set(10009,0);
regBank.set(10010,0);
regBank.set(10011,0);
regBank.set(10012,0);
digitalWrite(3,LOW);
}
regBank.set(30013,0);
digitalWrite(4,LOW);
}
AI1 = analogRead(1);
delay(10);
AI1 = analogRead(1);
regBank.set(40002, (word) AI1);
delay(10);
regBank.set(40013,0);
regBank.set(40014,0);
regBank.set(40015,0);
regBank.set(40016,0);
regBank.set(40017,0);
regBank.set(40018,0);
regBank.set(40019,0);
regBank.set(40020,0);
regBank.set(40021,0);
regBank.set(40022,0);
regBank.set(40023,0);
regBank.set(40044,0);
regBank.set(40055,0);
regBank.set(40066,0);
regBank.set(40027,0);
regBank.set(40028,0);
regBank.set(40029,0);
digitalWrite(5,LOW);
}
int DO2 = regBank.get(2);
int DO3 = regBank.get(3);
int DO4 = regBank.get(4);
int DO5 = regBank.get(5);
if (DI10>= 1 && DO5>=1 && DO4>=1 && DO3>=1 && DO2>=1 ){
digitalWrite(6,HIGH);
}
else
digitalWrite(6,LOW);
/* byte DI3 = digitalRead(3);
if (DI3 >= 1)regBank.set(10003,1);
/* AI2 = analogRead(2);
delay(10);
AI2 = analogRead(2);
regBank.set(40003, (word) AI2);
delay(10);
AI3 = analogRead(3);
delay(10);
AI3 = analogRead(3);
regBank.set(40004, (word) AI3);
delay(10);
AI4 = analogRead(4);
delay(10);
AI4 = analogRead(4);
regBank.set(30005, (word) AI4);
delay(10);
AI5 = analogRead(5);
delay(10);
AI5 = analogRead(5);
regBank.set(30006, (word) AI5);
delay(10);
*/
//Analog output
/* word AO10 = regBank.get(40010);
analogWrite(10,AO10);
delay(10);
word AO11 = regBank.get(40011);
analogWrite(11,AO11);
delay(10);
*/
slave.run();
}
}