Sistema de monitoramento de controle e temperatura - GEPOC

Dependencies:   DHT MODSERIAL ModbusSlave mbed

Fork of FRDM_RGBLED by Chris Styles

Committer:
luizpietta
Date:
Mon Nov 09 18:59:28 2015 +0000
Revision:
3:dd9b3bcbd36a
Parent:
2:03e5c29343d1
Child:
4:7bdab599ad88
Programa Termopares.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chris 0:cf8a48b1fb23 1 #include "mbed.h"
luizpietta 3:dd9b3bcbd36a 2 #include <string.h>
luizpietta 3:dd9b3bcbd36a 3 #include <stdio.h>
luizpietta 3:dd9b3bcbd36a 4
luizpietta 3:dd9b3bcbd36a 5 #include "ModbusSlave.h"
luizpietta 3:dd9b3bcbd36a 6
luizpietta 3:dd9b3bcbd36a 7 #include "MODSERIAL.h"
luizpietta 3:dd9b3bcbd36a 8
luizpietta 3:dd9b3bcbd36a 9 MODSERIAL Modbus(USBTX,USBRX);
luizpietta 3:dd9b3bcbd36a 10
luizpietta 3:dd9b3bcbd36a 11 SPI myspi(PTD2, PTD3, PTD1); // mosi, miso, sclk
luizpietta 3:dd9b3bcbd36a 12
luizpietta 3:dd9b3bcbd36a 13 //////////////// TERMOCOUPLERS //////////////////////////////
luizpietta 3:dd9b3bcbd36a 14
luizpietta 3:dd9b3bcbd36a 15 DigitalOut T1(PTC9);
luizpietta 3:dd9b3bcbd36a 16 DigitalOut T2(PTA13);
luizpietta 3:dd9b3bcbd36a 17 DigitalOut T3(PTD0);
luizpietta 3:dd9b3bcbd36a 18 DigitalOut T4(PTB3);
luizpietta 3:dd9b3bcbd36a 19
luizpietta 3:dd9b3bcbd36a 20 DigitalOut ENABLE(PTC1);
luizpietta 3:dd9b3bcbd36a 21
luizpietta 3:dd9b3bcbd36a 22 //DigitalOut LED(LED_RED);
chris 0:cf8a48b1fb23 23
luizpietta 3:dd9b3bcbd36a 24 float temp1 = 0;
luizpietta 3:dd9b3bcbd36a 25 float temp2 = 0;
luizpietta 3:dd9b3bcbd36a 26 float temp3 = 0;
luizpietta 3:dd9b3bcbd36a 27 float temp4 = 0;
luizpietta 3:dd9b3bcbd36a 28
chris 0:cf8a48b1fb23 29
luizpietta 3:dd9b3bcbd36a 30 //////////////// MODBUS Registers (Slave) ///////////////////
luizpietta 3:dd9b3bcbd36a 31 enum
luizpietta 3:dd9b3bcbd36a 32 {
luizpietta 3:dd9b3bcbd36a 33 // just add or remove registers and your good to go...
luizpietta 3:dd9b3bcbd36a 34 // The first register starts at address 0
luizpietta 3:dd9b3bcbd36a 35 TERM_1, // Pot analog read
luizpietta 3:dd9b3bcbd36a 36 TERM_2, // Temp analog read
luizpietta 3:dd9b3bcbd36a 37 TERM_3, // Light analog read
luizpietta 3:dd9b3bcbd36a 38 TERM_4, // Moisture analog read
luizpietta 3:dd9b3bcbd36a 39 HOLDING_REGS_SIZE
luizpietta 3:dd9b3bcbd36a 40 // total number of registers for function 3 and 16 share the same register array
luizpietta 3:dd9b3bcbd36a 41 };
luizpietta 3:dd9b3bcbd36a 42
luizpietta 3:dd9b3bcbd36a 43 unsigned int holdingRegs[HOLDING_REGS_SIZE]; // function 3 and 16 register array
luizpietta 3:dd9b3bcbd36a 44
luizpietta 3:dd9b3bcbd36a 45 ////////////////////////////////////////////////////////////
luizpietta 3:dd9b3bcbd36a 46
luizpietta 3:dd9b3bcbd36a 47
chris 1:eabc6f5b51d6 48
luizpietta 3:dd9b3bcbd36a 49 uint16_t thermoparRead(void)
luizpietta 3:dd9b3bcbd36a 50 {
luizpietta 3:dd9b3bcbd36a 51 uint16_t high = 0;
luizpietta 3:dd9b3bcbd36a 52 uint16_t low = 0;
luizpietta 3:dd9b3bcbd36a 53
luizpietta 3:dd9b3bcbd36a 54 bool scToVcc;
luizpietta 3:dd9b3bcbd36a 55 bool scToGnd;
luizpietta 3:dd9b3bcbd36a 56 bool opened;
luizpietta 3:dd9b3bcbd36a 57 bool fail;
luizpietta 3:dd9b3bcbd36a 58
luizpietta 3:dd9b3bcbd36a 59 high = ((myspi.write(0)<<8)&0xff00) + (myspi.write(0)&0x00ff);
luizpietta 3:dd9b3bcbd36a 60 low = ((myspi.write(0)<<8)&0xff00) + (myspi.write(0)&0x00ff);
luizpietta 3:dd9b3bcbd36a 61
luizpietta 3:dd9b3bcbd36a 62 // Get errors from data
luizpietta 3:dd9b3bcbd36a 63 scToVcc = low & 0x0004;
luizpietta 3:dd9b3bcbd36a 64 scToGnd = low & 0x0002;
luizpietta 3:dd9b3bcbd36a 65 opened = low & 0x0001;
luizpietta 3:dd9b3bcbd36a 66 fail = high & 0x0001;
luizpietta 3:dd9b3bcbd36a 67
luizpietta 3:dd9b3bcbd36a 68 if(opened) return 2;
luizpietta 3:dd9b3bcbd36a 69 if(fail) return 1;
luizpietta 3:dd9b3bcbd36a 70 return high&0xfffc;
luizpietta 3:dd9b3bcbd36a 71 }
luizpietta 3:dd9b3bcbd36a 72
luizpietta 3:dd9b3bcbd36a 73
luizpietta 3:dd9b3bcbd36a 74 int main()
luizpietta 3:dd9b3bcbd36a 75 {
luizpietta 3:dd9b3bcbd36a 76 //CONFIGURE MODBUS
luizpietta 3:dd9b3bcbd36a 77 modbus_configure(&Modbus, 9600, 1, 2, &ENABLE, HOLDING_REGS_SIZE, holdingRegs);
luizpietta 3:dd9b3bcbd36a 78
luizpietta 3:dd9b3bcbd36a 79 while (true)
luizpietta 3:dd9b3bcbd36a 80 {
luizpietta 3:dd9b3bcbd36a 81 modbus_update();
luizpietta 3:dd9b3bcbd36a 82
luizpietta 3:dd9b3bcbd36a 83 T1 = 0;
luizpietta 3:dd9b3bcbd36a 84 holdingRegs[TERM_1] = thermoparRead();
luizpietta 3:dd9b3bcbd36a 85 T1 = 1;
luizpietta 3:dd9b3bcbd36a 86
luizpietta 3:dd9b3bcbd36a 87 T2 = 0;
luizpietta 3:dd9b3bcbd36a 88 holdingRegs[TERM_2] = thermoparRead();
luizpietta 3:dd9b3bcbd36a 89 T2 = 1;
luizpietta 3:dd9b3bcbd36a 90
luizpietta 3:dd9b3bcbd36a 91 T3 = 0;
luizpietta 3:dd9b3bcbd36a 92 holdingRegs[TERM_3] = thermoparRead();
luizpietta 3:dd9b3bcbd36a 93 T3 = 1;
luizpietta 3:dd9b3bcbd36a 94
luizpietta 3:dd9b3bcbd36a 95 T4 = 0;
luizpietta 3:dd9b3bcbd36a 96 holdingRegs[TERM_4] = thermoparRead();
luizpietta 3:dd9b3bcbd36a 97 T4 = 1;
luizpietta 3:dd9b3bcbd36a 98 }
luizpietta 3:dd9b3bcbd36a 99 }
luizpietta 3:dd9b3bcbd36a 100
luizpietta 3:dd9b3bcbd36a 101
luizpietta 3:dd9b3bcbd36a 102