Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
davidjhoward
Date:
Tue Sep 06 22:09:39 2016 +0000
Revision:
9:ef0ca2f8a8a6
Parent:
8:abe51ae5ef8b
Child:
15:a6ee32969e8e
modbus changes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmarkel44 0:65cfa4873284 1 /******************************************************************************
davidjhoward 4:c35db3946fd8 2 *
jmarkel44 0:65cfa4873284 3 * File: ModbusMaster.cpp
jmarkel44 0:65cfa4873284 4 * Desciption: source for the ICE Modbus Master
jmarkel44 0:65cfa4873284 5 *
jmarkel44 0:65cfa4873284 6 *****************************************************************************/
jmarkel44 0:65cfa4873284 7 #include "global.h"
jmarkel44 0:65cfa4873284 8 #include <stdio.h>
jmarkel44 0:65cfa4873284 9 #include "BLEDataHandler.h"
davidjhoward 4:c35db3946fd8 10 #include "ModbusMaster.h"
davidjhoward 8:abe51ae5ef8b 11 #include "MbedJSONValue.h"
jmarkel44 0:65cfa4873284 12
jmarkel44 0:65cfa4873284 13 /*****************************************************************************
jmarkel44 0:65cfa4873284 14 * Function: ModbusMaster
jmarkel44 0:65cfa4873284 15 * Description: entry point for the Modbus Master
jmarkel44 0:65cfa4873284 16 *
jmarkel44 0:65cfa4873284 17 * @param (IN) args (user-defined arguments)
jmarkel44 0:65cfa4873284 18 * @return none
jmarkel44 0:65cfa4873284 19 *****************************************************************************/
davidjhoward 7:c0c03193612d 20
jmarkel44 0:65cfa4873284 21 void ModbusMaster(void const *args)
jmarkel44 0:65cfa4873284 22 {
jmarkel44 0:65cfa4873284 23 printf("\r%s has started...\n", __func__);
davidjhoward 8:abe51ae5ef8b 24 char scratch_buf[1024];
davidjhoward 8:abe51ae5ef8b 25 MbedJSONValue json_value;
jmarkel44 0:65cfa4873284 26
davidjhoward 9:ef0ca2f8a8a6 27 // configure modbus registers based in all files that start with "input"
davidjhoward 8:abe51ae5ef8b 28 std::vector<mDot::mdot_file> file_list = GLOBAL_mdot->listUserFiles();
davidjhoward 8:abe51ae5ef8b 29 for (std::vector<mDot::mdot_file>::iterator i = file_list.begin(); i != file_list.end(); ++i) {
davidjhoward 8:abe51ae5ef8b 30 if( strncmp( i->name, "input", strlen("input")) == 0 ) {
davidjhoward 8:abe51ae5ef8b 31
davidjhoward 8:abe51ae5ef8b 32 printf("\r(%d)FOUND INPUT FILE: %s\n", __LINE__, i->name);
davidjhoward 8:abe51ae5ef8b 33
davidjhoward 8:abe51ae5ef8b 34 bool status = GLOBAL_mdot->readUserFile(i->name, (void *)scratch_buf, 1024);
davidjhoward 8:abe51ae5ef8b 35 if( status != true ) {
davidjhoward 8:abe51ae5ef8b 36 printf("\r(%d)read file failed, status=%d\n", __LINE__, status);
davidjhoward 8:abe51ae5ef8b 37 } else {
davidjhoward 8:abe51ae5ef8b 38 printf("\r(%d)Read File SUCCESS: %s\n", __LINE__, scratch_buf );
davidjhoward 8:abe51ae5ef8b 39 }
davidjhoward 8:abe51ae5ef8b 40
davidjhoward 8:abe51ae5ef8b 41 parse( json_value, scratch_buf );
davidjhoward 8:abe51ae5ef8b 42
davidjhoward 8:abe51ae5ef8b 43 std::string id = json_value["id"].get<std::string>().c_str();
davidjhoward 9:ef0ca2f8a8a6 44 ModbusRegisterMap[id].name = json_value["name"].get<std::string>().c_str();
davidjhoward 9:ef0ca2f8a8a6 45 ModbusRegisterMap[id].units = json_value["units"].get<std::string>().c_str();
davidjhoward 9:ef0ca2f8a8a6 46 ModbusRegisterMap[id].min = json_value["min"].get<double>();
davidjhoward 9:ef0ca2f8a8a6 47 ModbusRegisterMap[id].max = json_value["max"].get<double>();
davidjhoward 9:ef0ca2f8a8a6 48 ModbusRegisterMap[id].node = json_value["node"].get<int>();
davidjhoward 9:ef0ca2f8a8a6 49 ModbusRegisterMap[id].reg = json_value["reg"].get<int>();
davidjhoward 9:ef0ca2f8a8a6 50 ModbusRegisterMap[id].rtype = json_value["rtype"].get<int>();
davidjhoward 9:ef0ca2f8a8a6 51 ModbusRegisterMap[id].type = json_value["type"].get<int>();
davidjhoward 9:ef0ca2f8a8a6 52 ModbusRegisterMap[id].fmt = json_value["fmt"].get<std::string>().c_str();
davidjhoward 8:abe51ae5ef8b 53
davidjhoward 8:abe51ae5ef8b 54 }
davidjhoward 7:c0c03193612d 55 }
davidjhoward 7:c0c03193612d 56
davidjhoward 9:ef0ca2f8a8a6 57 // read modbus registers that have been configured.
jmarkel44 0:65cfa4873284 58 while ( true ) {
davidjhoward 9:ef0ca2f8a8a6 59
davidjhoward 9:ef0ca2f8a8a6 60 std::map<std::string, ModbusRegister>::iterator iter;
davidjhoward 9:ef0ca2f8a8a6 61 for (iter = ModbusRegisterMap.begin(); iter != ModbusRegisterMap.end(); ++iter) {
davidjhoward 9:ef0ca2f8a8a6 62 // SendModbusCommand(iter->first.node,(uint16_t)iter->first.reg,13);
davidjhoward 4:c35db3946fd8 63 }
jmarkel44 0:65cfa4873284 64 }
davidjhoward 4:c35db3946fd8 65 }
davidjhoward 4:c35db3946fd8 66
davidjhoward 4:c35db3946fd8 67
davidjhoward 4:c35db3946fd8 68 volatile char modbus_buffer_char;
davidjhoward 4:c35db3946fd8 69 volatile bool modbus_interrupt_complete = false;
davidjhoward 4:c35db3946fd8 70
davidjhoward 4:c35db3946fd8 71 uint8_t modbus_input_buffer[SIZE_MB_BUFFER];// 1byte address + 1 byte function +1 byte number of regs + 12 bytes of data + 2 bytes for crc response frame from slave
davidjhoward 4:c35db3946fd8 72 volatile uint8_t modbus_input_buffer_counter = 0;
davidjhoward 4:c35db3946fd8 73
davidjhoward 4:c35db3946fd8 74 //Frame crc calucation
davidjhoward 4:c35db3946fd8 75 uint16_t modbus_crc(uint8_t* buf, int len)
davidjhoward 4:c35db3946fd8 76 {
davidjhoward 4:c35db3946fd8 77 uint16_t crc = 0xFFFF;
davidjhoward 4:c35db3946fd8 78
davidjhoward 4:c35db3946fd8 79 for (int pos = 0; pos < len; pos++) {
davidjhoward 4:c35db3946fd8 80 crc ^= (uint16_t)buf[pos]; // XOR byte into least sig. byte of crc
davidjhoward 4:c35db3946fd8 81
davidjhoward 4:c35db3946fd8 82 for (int i = 8; i != 0; i--) {
davidjhoward 4:c35db3946fd8 83 // Loop over each bit
davidjhoward 4:c35db3946fd8 84 if ((crc & 0x0001) != 0) {
davidjhoward 4:c35db3946fd8 85 // If the LSB is set
davidjhoward 4:c35db3946fd8 86 crc >>= 1; // Shift right and XOR 0xA001
davidjhoward 4:c35db3946fd8 87 crc ^= 0xA001;
davidjhoward 4:c35db3946fd8 88 } else // Else LSB is not set
davidjhoward 4:c35db3946fd8 89 crc >>= 1; // Just shift right
davidjhoward 4:c35db3946fd8 90 }
davidjhoward 4:c35db3946fd8 91 }
davidjhoward 4:c35db3946fd8 92 // Note, this number has low and high bytes swapped, so use it accordingly (or swap bytes)
davidjhoward 4:c35db3946fd8 93 return crc;
davidjhoward 4:c35db3946fd8 94 }
davidjhoward 4:c35db3946fd8 95
davidjhoward 4:c35db3946fd8 96 RawSerial modbus(PA_2, PA_3);
davidjhoward 4:c35db3946fd8 97 DigitalOut modbus_enable0(PB_0);
davidjhoward 4:c35db3946fd8 98 DigitalOut modbus_enable1(PB_1);
davidjhoward 4:c35db3946fd8 99
davidjhoward 4:c35db3946fd8 100 void modbus_init( uint16_t baudRate )
davidjhoward 4:c35db3946fd8 101 {
davidjhoward 4:c35db3946fd8 102 modbus.baud(baudRate);
davidjhoward 4:c35db3946fd8 103 modbus.attach(&modbus_recv, RawSerial::RxIrq);
davidjhoward 4:c35db3946fd8 104 }
davidjhoward 4:c35db3946fd8 105
davidjhoward 4:c35db3946fd8 106 //call back when character goes into RX buffer for RS485 modbus
davidjhoward 4:c35db3946fd8 107 void modbus_recv()
davidjhoward 4:c35db3946fd8 108 {
davidjhoward 4:c35db3946fd8 109
davidjhoward 4:c35db3946fd8 110 if (modbus.readable()) {
davidjhoward 4:c35db3946fd8 111 modbus_buffer_char = modbus.getc();
davidjhoward 4:c35db3946fd8 112 if (modbus_input_buffer_counter == 0 && modbus_buffer_char == 0x00) {
davidjhoward 4:c35db3946fd8 113 modbus_input_buffer_counter = 0;
davidjhoward 4:c35db3946fd8 114 } else {
davidjhoward 4:c35db3946fd8 115 modbus_input_buffer[modbus_input_buffer_counter] = modbus_buffer_char;
davidjhoward 4:c35db3946fd8 116 modbus_input_buffer_counter++;
davidjhoward 4:c35db3946fd8 117 }
davidjhoward 4:c35db3946fd8 118 }
davidjhoward 4:c35db3946fd8 119
davidjhoward 4:c35db3946fd8 120 if (modbus_input_buffer_counter > modbus_input_buffer[2] + 4) {
davidjhoward 4:c35db3946fd8 121 modbus_interrupt_complete = true;
davidjhoward 4:c35db3946fd8 122 modbus_input_buffer_counter = 0;
davidjhoward 4:c35db3946fd8 123 }
davidjhoward 4:c35db3946fd8 124 }
davidjhoward 4:c35db3946fd8 125
davidjhoward 4:c35db3946fd8 126 // Read modbus master frame
davidjhoward 9:ef0ca2f8a8a6 127 void SendModbusCommand(uint8_t slave_address, uint16_t firstReg, uint16_t noRegs)
davidjhoward 4:c35db3946fd8 128 {
davidjhoward 4:c35db3946fd8 129 uint8_t L1V[8] = {slave_address, 0x04, 0x00, 0x02, 0x00, 0x02, 0xD1, 0x16};
davidjhoward 4:c35db3946fd8 130
davidjhoward 4:c35db3946fd8 131 L1V[2] = (firstReg >> 8) & 0xFF;
davidjhoward 4:c35db3946fd8 132 L1V[3] = firstReg & 0xFF;
davidjhoward 4:c35db3946fd8 133 L1V[4] = (noRegs >> 8) & 0xFF;
davidjhoward 4:c35db3946fd8 134 L1V[5] = noRegs & 0xFF;
davidjhoward 4:c35db3946fd8 135 L1V[6] = modbus_crc(L1V,6) & 0xFF;
davidjhoward 4:c35db3946fd8 136 L1V[7] = (modbus_crc(L1V,6)>>8) & 0xFF;
davidjhoward 4:c35db3946fd8 137
davidjhoward 4:c35db3946fd8 138 modbus_enable0 = 1;
davidjhoward 4:c35db3946fd8 139 modbus_enable1 = 1;
davidjhoward 4:c35db3946fd8 140
davidjhoward 4:c35db3946fd8 141 for (uint8_t i = 0; i < 8; i++)
davidjhoward 4:c35db3946fd8 142 modbus.putc(L1V[i]);
davidjhoward 4:c35db3946fd8 143
davidjhoward 4:c35db3946fd8 144 wait_ms(2);
davidjhoward 4:c35db3946fd8 145 modbus_enable0 = 0;
davidjhoward 4:c35db3946fd8 146 modbus_enable1 = 0;
davidjhoward 4:c35db3946fd8 147
davidjhoward 4:c35db3946fd8 148 }
davidjhoward 4:c35db3946fd8 149
davidjhoward 4:c35db3946fd8 150 bool mbInterruptComplete()
davidjhoward 4:c35db3946fd8 151 {
davidjhoward 4:c35db3946fd8 152 if (modbus_interrupt_complete) {
davidjhoward 4:c35db3946fd8 153 modbus_interrupt_complete = false;
davidjhoward 4:c35db3946fd8 154 return true;
davidjhoward 4:c35db3946fd8 155 } else {
davidjhoward 4:c35db3946fd8 156 return false;
davidjhoward 4:c35db3946fd8 157 }
davidjhoward 4:c35db3946fd8 158 }
davidjhoward 4:c35db3946fd8 159
davidjhoward 4:c35db3946fd8 160 bool mbFluGetData( MB_FLU_VALUES *flu_values )
davidjhoward 4:c35db3946fd8 161 {
davidjhoward 4:c35db3946fd8 162 MR_REGISTER_FLOAT trasar;
davidjhoward 4:c35db3946fd8 163 MR_REGISTER_FLOAT tag;
davidjhoward 4:c35db3946fd8 164 MR_REGISTER_FLOAT rz;
davidjhoward 4:c35db3946fd8 165 MR_REGISTER_FLOAT rs;
davidjhoward 4:c35db3946fd8 166 MR_REGISTER_FLOAT tra_back;
davidjhoward 4:c35db3946fd8 167 MR_REGISTER_FLOAT turb;
davidjhoward 4:c35db3946fd8 168 MR_REGISTER_WORD cf;
davidjhoward 4:c35db3946fd8 169 // MR_REGISTER_WORD crc;
davidjhoward 4:c35db3946fd8 170
davidjhoward 4:c35db3946fd8 171 if (mbInterruptComplete() != true ) {
davidjhoward 4:c35db3946fd8 172 return false;
davidjhoward 4:c35db3946fd8 173 }
davidjhoward 4:c35db3946fd8 174
davidjhoward 4:c35db3946fd8 175 // printf("Address: %d, Function: %d, No Regs: %d, \r\n",modbus_input_buffer[0],modbus_input_buffer[1],modbus_input_buffer[2]/2);
davidjhoward 4:c35db3946fd8 176 //
davidjhoward 4:c35db3946fd8 177 // printf("Data: %x%x,%x%x,%x%x,%x%x,%x%x,%x%x,\r\n%x%x,%x%x,%x%x,%x%x,%x%x,%x%x,\r\n%x%x\r\n",
davidjhoward 4:c35db3946fd8 178 // modbus_input_buffer[3],modbus_input_buffer[4], modbus_input_buffer[5],modbus_input_buffer[6], // Trasar
davidjhoward 4:c35db3946fd8 179 // modbus_input_buffer[7],modbus_input_buffer[8], modbus_input_buffer[9],modbus_input_buffer[10], // Tag
davidjhoward 4:c35db3946fd8 180 // modbus_input_buffer[11],modbus_input_buffer[12], modbus_input_buffer[13],modbus_input_buffer[14], // Rz
davidjhoward 4:c35db3946fd8 181 // modbus_input_buffer[15],modbus_input_buffer[16], modbus_input_buffer[17],modbus_input_buffer[18], // Rs
davidjhoward 4:c35db3946fd8 182 // modbus_input_buffer[19],modbus_input_buffer[20], modbus_input_buffer[21],modbus_input_buffer[22], // TraBack
davidjhoward 4:c35db3946fd8 183 // modbus_input_buffer[23],modbus_input_buffer[24], modbus_input_buffer[25],modbus_input_buffer[26], // TraBack
davidjhoward 4:c35db3946fd8 184 // modbus_input_buffer[27],modbus_input_buffer[28]); // Cf
davidjhoward 4:c35db3946fd8 185 // printf("CRC: %x%x\r\n",modbus_input_buffer[29], modbus_input_buffer[30]);
davidjhoward 4:c35db3946fd8 186
davidjhoward 4:c35db3946fd8 187 trasar.b.lo_lo = modbus_input_buffer[4];
davidjhoward 4:c35db3946fd8 188 trasar.b.lo_hi = modbus_input_buffer[3];
davidjhoward 4:c35db3946fd8 189 trasar.b.hi_lo = modbus_input_buffer[6];
davidjhoward 4:c35db3946fd8 190 trasar.b.hi_hi = modbus_input_buffer[5];
davidjhoward 4:c35db3946fd8 191 // printf("Trasar=%2.2f, 0x%x, 0x%x\r\n",trasar.f, trasar.w.lo, trasar.w.hi);
davidjhoward 4:c35db3946fd8 192 flu_values->trasar = trasar.f;
davidjhoward 4:c35db3946fd8 193
davidjhoward 4:c35db3946fd8 194 tag.b.lo_lo = modbus_input_buffer[8];
davidjhoward 4:c35db3946fd8 195 tag.b.lo_hi = modbus_input_buffer[7];
davidjhoward 4:c35db3946fd8 196 tag.b.hi_lo = modbus_input_buffer[10];
davidjhoward 4:c35db3946fd8 197 tag.b.hi_hi = modbus_input_buffer[9];
davidjhoward 4:c35db3946fd8 198 // printf("tag=%2.2f, 0x%x, 0x%x\r\n",tag.f, tag.w.lo, tag.w.hi);
davidjhoward 4:c35db3946fd8 199 flu_values->tag = tag.f;
davidjhoward 4:c35db3946fd8 200
davidjhoward 4:c35db3946fd8 201 rz.b.lo_lo = modbus_input_buffer[12];
davidjhoward 4:c35db3946fd8 202 rz.b.lo_hi = modbus_input_buffer[11];
davidjhoward 4:c35db3946fd8 203 rz.b.hi_lo = modbus_input_buffer[14];
davidjhoward 4:c35db3946fd8 204 rz.b.hi_hi = modbus_input_buffer[13];
davidjhoward 4:c35db3946fd8 205 // printf("rz=%2.2f, 0x%x, 0x%x\r\n",rz.f, rz.w.lo, rz.w.hi);
davidjhoward 4:c35db3946fd8 206 flu_values->rz = rz.f;
davidjhoward 4:c35db3946fd8 207
davidjhoward 4:c35db3946fd8 208 rs.b.lo_lo = modbus_input_buffer[16];
davidjhoward 4:c35db3946fd8 209 rs.b.lo_hi = modbus_input_buffer[15];
davidjhoward 4:c35db3946fd8 210 rs.b.hi_lo = modbus_input_buffer[18];
davidjhoward 4:c35db3946fd8 211 rs.b.hi_hi = modbus_input_buffer[17];
davidjhoward 4:c35db3946fd8 212 // printf("rs=%2.2f, 0x%x, 0x%x\r\n",rs.f, rs.w.lo, rs.w.hi);
davidjhoward 4:c35db3946fd8 213 flu_values->rs = rs.f;
davidjhoward 4:c35db3946fd8 214
davidjhoward 4:c35db3946fd8 215 tra_back.b.lo_lo = modbus_input_buffer[20];
davidjhoward 4:c35db3946fd8 216 tra_back.b.lo_hi = modbus_input_buffer[19];
davidjhoward 4:c35db3946fd8 217 tra_back.b.hi_lo = modbus_input_buffer[22];
davidjhoward 4:c35db3946fd8 218 tra_back.b.hi_hi = modbus_input_buffer[21];
davidjhoward 4:c35db3946fd8 219 // printf("tra_back=%2.2f, 0x%x, 0x%x\r\n",tra_back.f, tra_back.w.lo, tra_back.w.hi);
davidjhoward 4:c35db3946fd8 220 flu_values->tra_back = tra_back.f;
davidjhoward 4:c35db3946fd8 221
davidjhoward 4:c35db3946fd8 222 turb.b.lo_lo = modbus_input_buffer[24];
davidjhoward 4:c35db3946fd8 223 turb.b.lo_hi = modbus_input_buffer[23];
davidjhoward 4:c35db3946fd8 224 turb.b.hi_lo = modbus_input_buffer[26];
davidjhoward 4:c35db3946fd8 225 turb.b.hi_hi = modbus_input_buffer[25];
davidjhoward 4:c35db3946fd8 226 // printf("turb=%2.2f, 0x%x, 0x%x\r\n",turb.f, turb.w.lo, turb.w.hi);
davidjhoward 4:c35db3946fd8 227 flu_values->turb = turb.f;
davidjhoward 4:c35db3946fd8 228
davidjhoward 4:c35db3946fd8 229 cf.b.lo = modbus_input_buffer[28];
davidjhoward 4:c35db3946fd8 230 cf.b.hi = modbus_input_buffer[27];
davidjhoward 4:c35db3946fd8 231 // printf("cf=%d, 0x%x,\r\n",cf.w, cf.w);
davidjhoward 4:c35db3946fd8 232 flu_values->cf = cf.w;
davidjhoward 4:c35db3946fd8 233
davidjhoward 4:c35db3946fd8 234 // crc.b.lo = modbus_input_buffer[30]; crc.b.hi = modbus_input_buffer[29];
davidjhoward 4:c35db3946fd8 235 // printf("crc=%d, 0x%x,\r\n",crc.w, crc.w);
davidjhoward 4:c35db3946fd8 236
davidjhoward 4:c35db3946fd8 237 return true;
davidjhoward 4:c35db3946fd8 238 }
davidjhoward 4:c35db3946fd8 239
davidjhoward 4:c35db3946fd8 240 bool mbTconGetData( MB_TCON_VALUES *tcon_values )
davidjhoward 4:c35db3946fd8 241 {
davidjhoward 4:c35db3946fd8 242 MR_REGISTER_INT tcon_cal;
davidjhoward 4:c35db3946fd8 243 MR_REGISTER_INT tcon_cmp;
davidjhoward 4:c35db3946fd8 244 MR_REGISTER_INT tcon_2pt;
davidjhoward 4:c35db3946fd8 245 MR_REGISTER_INT tcon_freq;
davidjhoward 4:c35db3946fd8 246 MR_REGISTER_INT rtd_degC;
davidjhoward 4:c35db3946fd8 247 MR_REGISTER_INT rtd_cal;
davidjhoward 4:c35db3946fd8 248 MR_REGISTER_INT rtd_raw;
davidjhoward 4:c35db3946fd8 249
davidjhoward 4:c35db3946fd8 250 if (mbInterruptComplete() != true ) {
davidjhoward 4:c35db3946fd8 251 return false;
davidjhoward 4:c35db3946fd8 252 }
davidjhoward 4:c35db3946fd8 253
davidjhoward 4:c35db3946fd8 254 // printf("Address: %d, Function: %d, No Regs: %d, \r\n",modbus_input_buffer[0],modbus_input_buffer[1],modbus_input_buffer[2]/2);
davidjhoward 4:c35db3946fd8 255 //
davidjhoward 4:c35db3946fd8 256 // printf("Data: %x%x,%x%x, %x%x,%x%x, %x%x,%x%x,\r\n%x%x,%x%x, %x%x,%x%x, %x%x,%x%x\r\n",
davidjhoward 4:c35db3946fd8 257 // modbus_input_buffer[3],modbus_input_buffer[4], modbus_input_buffer[5],modbus_input_buffer[6], // tcon_cal
davidjhoward 4:c35db3946fd8 258 // modbus_input_buffer[7],modbus_input_buffer[8], modbus_input_buffer[9],modbus_input_buffer[10], // tcon_cmp
davidjhoward 4:c35db3946fd8 259 // modbus_input_buffer[11],modbus_input_buffer[12], modbus_input_buffer[13],modbus_input_buffer[14], // tcon_2pt
davidjhoward 4:c35db3946fd8 260 // modbus_input_buffer[15],modbus_input_buffer[16], modbus_input_buffer[17],modbus_input_buffer[18], // rtd_degC
davidjhoward 4:c35db3946fd8 261 // modbus_input_buffer[19],modbus_input_buffer[20], modbus_input_buffer[21],modbus_input_buffer[22], // rtd_cal
davidjhoward 4:c35db3946fd8 262 // modbus_input_buffer[23],modbus_input_buffer[24], modbus_input_buffer[25],modbus_input_buffer[26]); // rtd_raw
davidjhoward 4:c35db3946fd8 263 // printf("CRC: %x%x\r\n",modbus_input_buffer[27], modbus_input_buffer[28]);
davidjhoward 4:c35db3946fd8 264
davidjhoward 4:c35db3946fd8 265 rtd_raw.b.lo_lo = modbus_input_buffer[4];
davidjhoward 4:c35db3946fd8 266 rtd_raw.b.lo_hi = modbus_input_buffer[3];
davidjhoward 4:c35db3946fd8 267 rtd_raw.b.hi_lo = modbus_input_buffer[6];
davidjhoward 4:c35db3946fd8 268 rtd_raw.b.hi_hi = modbus_input_buffer[5];
davidjhoward 4:c35db3946fd8 269 // printf("rtd_raw=%d M Ohm, 0x%x, 0x%x\r\n",rtd_raw.i, rtd_raw.w.lo, rtd_raw.w.hi);
davidjhoward 4:c35db3946fd8 270 tcon_values->rtd_raw = rtd_raw.i;
davidjhoward 4:c35db3946fd8 271
davidjhoward 4:c35db3946fd8 272 rtd_cal.b.lo_lo = modbus_input_buffer[8];
davidjhoward 4:c35db3946fd8 273 rtd_cal.b.lo_hi = modbus_input_buffer[7];
davidjhoward 4:c35db3946fd8 274 rtd_cal.b.hi_lo = modbus_input_buffer[10];
davidjhoward 4:c35db3946fd8 275 rtd_cal.b.hi_hi = modbus_input_buffer[9];
davidjhoward 4:c35db3946fd8 276 // printf("rtd_cal=%d M Ohm, 0x%x, 0x%x\r\n",rtd_cal.i, rtd_cal.w.lo, rtd_cal.w.hi);
davidjhoward 4:c35db3946fd8 277 tcon_values->rtd_cal = rtd_cal.i;
davidjhoward 4:c35db3946fd8 278
davidjhoward 4:c35db3946fd8 279 rtd_degC.b.lo_lo = modbus_input_buffer[12];
davidjhoward 4:c35db3946fd8 280 rtd_degC.b.lo_hi = modbus_input_buffer[11];
davidjhoward 4:c35db3946fd8 281 rtd_degC.b.hi_lo = modbus_input_buffer[14];
davidjhoward 4:c35db3946fd8 282 rtd_degC.b.hi_hi = modbus_input_buffer[13];
davidjhoward 4:c35db3946fd8 283 // printf("rtd_degC=%2.2f C, 0x%x, 0x%x\r\n",(rtd_degC.i/1000.0), rtd_degC.w.lo, rtd_degC.w.hi);
davidjhoward 4:c35db3946fd8 284 tcon_values->rtd_degC = (rtd_degC.i/1000.0);
davidjhoward 4:c35db3946fd8 285
davidjhoward 4:c35db3946fd8 286 tcon_freq.b.lo_lo = modbus_input_buffer[16];
davidjhoward 4:c35db3946fd8 287 tcon_freq.b.lo_hi = modbus_input_buffer[15];
davidjhoward 4:c35db3946fd8 288 tcon_freq.b.hi_lo = modbus_input_buffer[18];
davidjhoward 4:c35db3946fd8 289 tcon_freq.b.hi_hi = modbus_input_buffer[17];
davidjhoward 4:c35db3946fd8 290 // printf("tcon_freq=%d Hz, 0x%x, 0x%x\r\n",tcon_freq.i, tcon_freq.w.lo, tcon_freq.w.hi);
davidjhoward 4:c35db3946fd8 291 tcon_values->tcon_freq = tcon_freq.i;
davidjhoward 4:c35db3946fd8 292
davidjhoward 4:c35db3946fd8 293 tcon_2pt.b.lo_lo = modbus_input_buffer[20];
davidjhoward 4:c35db3946fd8 294 tcon_2pt.b.lo_hi = modbus_input_buffer[19];
davidjhoward 4:c35db3946fd8 295 tcon_2pt.b.hi_lo = modbus_input_buffer[22];
davidjhoward 4:c35db3946fd8 296 tcon_2pt.b.hi_hi = modbus_input_buffer[21];
davidjhoward 4:c35db3946fd8 297 // printf("tcon_2pt=%d uS, 0x%x, 0x%x\r\n",tcon_2pt.i, tcon_2pt.w.lo, tcon_2pt.w.hi);
davidjhoward 4:c35db3946fd8 298 tcon_values->tcon_2pt = tcon_2pt.i;
davidjhoward 4:c35db3946fd8 299
davidjhoward 4:c35db3946fd8 300 tcon_cmp.b.lo_lo = modbus_input_buffer[20];
davidjhoward 4:c35db3946fd8 301 tcon_cmp.b.lo_hi = modbus_input_buffer[19];
davidjhoward 4:c35db3946fd8 302 tcon_cmp.b.hi_lo = modbus_input_buffer[22];
davidjhoward 4:c35db3946fd8 303 tcon_cmp.b.hi_hi = modbus_input_buffer[21];
davidjhoward 4:c35db3946fd8 304 // printf("tcon_cmp=%d uS, 0x%x, 0x%x\r\n",tcon_cmp.i, tcon_cmp.w.lo, tcon_cmp.w.hi);
davidjhoward 4:c35db3946fd8 305 tcon_values->tcon_cmp = tcon_cmp.i;
davidjhoward 4:c35db3946fd8 306
davidjhoward 4:c35db3946fd8 307 tcon_cal.b.lo_lo = modbus_input_buffer[20];
davidjhoward 4:c35db3946fd8 308 tcon_cal.b.lo_hi = modbus_input_buffer[19];
davidjhoward 4:c35db3946fd8 309 tcon_cal.b.hi_lo = modbus_input_buffer[22];
davidjhoward 4:c35db3946fd8 310 tcon_cal.b.hi_hi = modbus_input_buffer[21];
davidjhoward 4:c35db3946fd8 311 // printf("tcon_cal=%d, 0x%x, 0x%x\r\n",tcon_cal.i, tcon_cal.w.lo, tcon_cal.w.hi);
davidjhoward 4:c35db3946fd8 312 tcon_values->tcon_cal = tcon_cal.i;
davidjhoward 4:c35db3946fd8 313
davidjhoward 4:c35db3946fd8 314 return true;
jmarkel44 0:65cfa4873284 315 }