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 19:06:12 2016 +0000
Revision:
4:c35db3946fd8
Parent:
0:65cfa4873284
Child:
7:c0c03193612d
added modbus code

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"
jmarkel44 0:65cfa4873284 11
jmarkel44 0:65cfa4873284 12 /*****************************************************************************
jmarkel44 0:65cfa4873284 13 * Function: ModbusMaster
jmarkel44 0:65cfa4873284 14 * Description: entry point for the Modbus Master
jmarkel44 0:65cfa4873284 15 *
jmarkel44 0:65cfa4873284 16 * @param (IN) args (user-defined arguments)
jmarkel44 0:65cfa4873284 17 * @return none
jmarkel44 0:65cfa4873284 18 *****************************************************************************/
jmarkel44 0:65cfa4873284 19 void ModbusMaster(void const *args)
jmarkel44 0:65cfa4873284 20 {
jmarkel44 0:65cfa4873284 21 printf("\r%s has started...\n", __func__);
jmarkel44 0:65cfa4873284 22
jmarkel44 0:65cfa4873284 23 while ( true ) {
davidjhoward 4:c35db3946fd8 24 // Send request to Fluorometer
davidjhoward 4:c35db3946fd8 25 printf("\rsending request to FLU\n");
davidjhoward 4:c35db3946fd8 26 modbus_read_L1V(1,9,13);
davidjhoward 4:c35db3946fd8 27 // Wait 30mS
davidjhoward 4:c35db3946fd8 28 printf("\rsent request to FLU\n");
davidjhoward 4:c35db3946fd8 29 osDelay(30);
davidjhoward 4:c35db3946fd8 30 printf("\rgetting TRASAR readings\n");
davidjhoward 4:c35db3946fd8 31 // Read data from Fluorometer
davidjhoward 4:c35db3946fd8 32 MB_FLU_VALUES flu_values;
davidjhoward 4:c35db3946fd8 33 if( mbFluGetData( &flu_values ) == false ) {
davidjhoward 4:c35db3946fd8 34 printf("\rCould not get TRASAR readings, power cycle\n");
davidjhoward 4:c35db3946fd8 35 DigitalOut flu_power(PA_11);
davidjhoward 4:c35db3946fd8 36 flu_power = 1; // turn modbus power off
davidjhoward 4:c35db3946fd8 37 osDelay(1000);
davidjhoward 4:c35db3946fd8 38 flu_power = 0; // provide power to the modbus
davidjhoward 4:c35db3946fd8 39 flu_values.trasar = 0.0;
davidjhoward 4:c35db3946fd8 40 osDelay(5000);
davidjhoward 4:c35db3946fd8 41 return;
davidjhoward 4:c35db3946fd8 42 }
jmarkel44 0:65cfa4873284 43 }
davidjhoward 4:c35db3946fd8 44 }
davidjhoward 4:c35db3946fd8 45
davidjhoward 4:c35db3946fd8 46
davidjhoward 4:c35db3946fd8 47 volatile char modbus_buffer_char;
davidjhoward 4:c35db3946fd8 48 volatile bool modbus_interrupt_complete = false;
davidjhoward 4:c35db3946fd8 49
davidjhoward 4:c35db3946fd8 50 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 51 volatile uint8_t modbus_input_buffer_counter = 0;
davidjhoward 4:c35db3946fd8 52
davidjhoward 4:c35db3946fd8 53 //Frame crc calucation
davidjhoward 4:c35db3946fd8 54 uint16_t modbus_crc(uint8_t* buf, int len)
davidjhoward 4:c35db3946fd8 55 {
davidjhoward 4:c35db3946fd8 56 uint16_t crc = 0xFFFF;
davidjhoward 4:c35db3946fd8 57
davidjhoward 4:c35db3946fd8 58 for (int pos = 0; pos < len; pos++) {
davidjhoward 4:c35db3946fd8 59 crc ^= (uint16_t)buf[pos]; // XOR byte into least sig. byte of crc
davidjhoward 4:c35db3946fd8 60
davidjhoward 4:c35db3946fd8 61 for (int i = 8; i != 0; i--) {
davidjhoward 4:c35db3946fd8 62 // Loop over each bit
davidjhoward 4:c35db3946fd8 63 if ((crc & 0x0001) != 0) {
davidjhoward 4:c35db3946fd8 64 // If the LSB is set
davidjhoward 4:c35db3946fd8 65 crc >>= 1; // Shift right and XOR 0xA001
davidjhoward 4:c35db3946fd8 66 crc ^= 0xA001;
davidjhoward 4:c35db3946fd8 67 } else // Else LSB is not set
davidjhoward 4:c35db3946fd8 68 crc >>= 1; // Just shift right
davidjhoward 4:c35db3946fd8 69 }
davidjhoward 4:c35db3946fd8 70 }
davidjhoward 4:c35db3946fd8 71 // Note, this number has low and high bytes swapped, so use it accordingly (or swap bytes)
davidjhoward 4:c35db3946fd8 72 return crc;
davidjhoward 4:c35db3946fd8 73 }
davidjhoward 4:c35db3946fd8 74
davidjhoward 4:c35db3946fd8 75 RawSerial modbus(PA_2, PA_3);
davidjhoward 4:c35db3946fd8 76 DigitalOut modbus_enable0(PB_0);
davidjhoward 4:c35db3946fd8 77 DigitalOut modbus_enable1(PB_1);
davidjhoward 4:c35db3946fd8 78
davidjhoward 4:c35db3946fd8 79 void modbus_init( uint16_t baudRate )
davidjhoward 4:c35db3946fd8 80 {
davidjhoward 4:c35db3946fd8 81 modbus.baud(baudRate);
davidjhoward 4:c35db3946fd8 82 modbus.attach(&modbus_recv, RawSerial::RxIrq);
davidjhoward 4:c35db3946fd8 83 }
davidjhoward 4:c35db3946fd8 84
davidjhoward 4:c35db3946fd8 85 //call back when character goes into RX buffer for RS485 modbus
davidjhoward 4:c35db3946fd8 86 void modbus_recv()
davidjhoward 4:c35db3946fd8 87 {
davidjhoward 4:c35db3946fd8 88
davidjhoward 4:c35db3946fd8 89 if (modbus.readable()) {
davidjhoward 4:c35db3946fd8 90 modbus_buffer_char = modbus.getc();
davidjhoward 4:c35db3946fd8 91 if (modbus_input_buffer_counter == 0 && modbus_buffer_char == 0x00) {
davidjhoward 4:c35db3946fd8 92 modbus_input_buffer_counter = 0;
davidjhoward 4:c35db3946fd8 93 } else {
davidjhoward 4:c35db3946fd8 94 modbus_input_buffer[modbus_input_buffer_counter] = modbus_buffer_char;
davidjhoward 4:c35db3946fd8 95 modbus_input_buffer_counter++;
davidjhoward 4:c35db3946fd8 96 }
davidjhoward 4:c35db3946fd8 97 }
davidjhoward 4:c35db3946fd8 98
davidjhoward 4:c35db3946fd8 99 if (modbus_input_buffer_counter > modbus_input_buffer[2] + 4) {
davidjhoward 4:c35db3946fd8 100 modbus_interrupt_complete = true;
davidjhoward 4:c35db3946fd8 101 modbus_input_buffer_counter = 0;
davidjhoward 4:c35db3946fd8 102 }
davidjhoward 4:c35db3946fd8 103 }
davidjhoward 4:c35db3946fd8 104
davidjhoward 4:c35db3946fd8 105 // Read modbus master frame
davidjhoward 4:c35db3946fd8 106 void modbus_read_L1V(uint8_t slave_address, uint16_t firstReg, uint16_t noRegs)
davidjhoward 4:c35db3946fd8 107 {
davidjhoward 4:c35db3946fd8 108 uint8_t L1V[8] = {slave_address, 0x04, 0x00, 0x02, 0x00, 0x02, 0xD1, 0x16};
davidjhoward 4:c35db3946fd8 109
davidjhoward 4:c35db3946fd8 110 L1V[2] = (firstReg >> 8) & 0xFF;
davidjhoward 4:c35db3946fd8 111 L1V[3] = firstReg & 0xFF;
davidjhoward 4:c35db3946fd8 112 L1V[4] = (noRegs >> 8) & 0xFF;
davidjhoward 4:c35db3946fd8 113 L1V[5] = noRegs & 0xFF;
davidjhoward 4:c35db3946fd8 114 L1V[6] = modbus_crc(L1V,6) & 0xFF;
davidjhoward 4:c35db3946fd8 115 L1V[7] = (modbus_crc(L1V,6)>>8) & 0xFF;
davidjhoward 4:c35db3946fd8 116
davidjhoward 4:c35db3946fd8 117 modbus_enable0 = 1;
davidjhoward 4:c35db3946fd8 118 modbus_enable1 = 1;
davidjhoward 4:c35db3946fd8 119
davidjhoward 4:c35db3946fd8 120 for (uint8_t i = 0; i < 8; i++)
davidjhoward 4:c35db3946fd8 121 modbus.putc(L1V[i]);
davidjhoward 4:c35db3946fd8 122
davidjhoward 4:c35db3946fd8 123 wait_ms(2);
davidjhoward 4:c35db3946fd8 124 modbus_enable0 = 0;
davidjhoward 4:c35db3946fd8 125 modbus_enable1 = 0;
davidjhoward 4:c35db3946fd8 126
davidjhoward 4:c35db3946fd8 127 }
davidjhoward 4:c35db3946fd8 128
davidjhoward 4:c35db3946fd8 129 bool mbInterruptComplete()
davidjhoward 4:c35db3946fd8 130 {
davidjhoward 4:c35db3946fd8 131 if (modbus_interrupt_complete) {
davidjhoward 4:c35db3946fd8 132 modbus_interrupt_complete = false;
davidjhoward 4:c35db3946fd8 133 return true;
davidjhoward 4:c35db3946fd8 134 } else {
davidjhoward 4:c35db3946fd8 135 return false;
davidjhoward 4:c35db3946fd8 136 }
davidjhoward 4:c35db3946fd8 137 }
davidjhoward 4:c35db3946fd8 138
davidjhoward 4:c35db3946fd8 139 bool mbFluGetData( MB_FLU_VALUES *flu_values )
davidjhoward 4:c35db3946fd8 140 {
davidjhoward 4:c35db3946fd8 141 MR_REGISTER_FLOAT trasar;
davidjhoward 4:c35db3946fd8 142 MR_REGISTER_FLOAT tag;
davidjhoward 4:c35db3946fd8 143 MR_REGISTER_FLOAT rz;
davidjhoward 4:c35db3946fd8 144 MR_REGISTER_FLOAT rs;
davidjhoward 4:c35db3946fd8 145 MR_REGISTER_FLOAT tra_back;
davidjhoward 4:c35db3946fd8 146 MR_REGISTER_FLOAT turb;
davidjhoward 4:c35db3946fd8 147 MR_REGISTER_WORD cf;
davidjhoward 4:c35db3946fd8 148 // MR_REGISTER_WORD crc;
davidjhoward 4:c35db3946fd8 149
davidjhoward 4:c35db3946fd8 150 if (mbInterruptComplete() != true ) {
davidjhoward 4:c35db3946fd8 151 return false;
davidjhoward 4:c35db3946fd8 152 }
davidjhoward 4:c35db3946fd8 153
davidjhoward 4:c35db3946fd8 154 // 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 155 //
davidjhoward 4:c35db3946fd8 156 // 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 157 // modbus_input_buffer[3],modbus_input_buffer[4], modbus_input_buffer[5],modbus_input_buffer[6], // Trasar
davidjhoward 4:c35db3946fd8 158 // modbus_input_buffer[7],modbus_input_buffer[8], modbus_input_buffer[9],modbus_input_buffer[10], // Tag
davidjhoward 4:c35db3946fd8 159 // modbus_input_buffer[11],modbus_input_buffer[12], modbus_input_buffer[13],modbus_input_buffer[14], // Rz
davidjhoward 4:c35db3946fd8 160 // modbus_input_buffer[15],modbus_input_buffer[16], modbus_input_buffer[17],modbus_input_buffer[18], // Rs
davidjhoward 4:c35db3946fd8 161 // modbus_input_buffer[19],modbus_input_buffer[20], modbus_input_buffer[21],modbus_input_buffer[22], // TraBack
davidjhoward 4:c35db3946fd8 162 // modbus_input_buffer[23],modbus_input_buffer[24], modbus_input_buffer[25],modbus_input_buffer[26], // TraBack
davidjhoward 4:c35db3946fd8 163 // modbus_input_buffer[27],modbus_input_buffer[28]); // Cf
davidjhoward 4:c35db3946fd8 164 // printf("CRC: %x%x\r\n",modbus_input_buffer[29], modbus_input_buffer[30]);
davidjhoward 4:c35db3946fd8 165
davidjhoward 4:c35db3946fd8 166 trasar.b.lo_lo = modbus_input_buffer[4];
davidjhoward 4:c35db3946fd8 167 trasar.b.lo_hi = modbus_input_buffer[3];
davidjhoward 4:c35db3946fd8 168 trasar.b.hi_lo = modbus_input_buffer[6];
davidjhoward 4:c35db3946fd8 169 trasar.b.hi_hi = modbus_input_buffer[5];
davidjhoward 4:c35db3946fd8 170 // printf("Trasar=%2.2f, 0x%x, 0x%x\r\n",trasar.f, trasar.w.lo, trasar.w.hi);
davidjhoward 4:c35db3946fd8 171 flu_values->trasar = trasar.f;
davidjhoward 4:c35db3946fd8 172
davidjhoward 4:c35db3946fd8 173 tag.b.lo_lo = modbus_input_buffer[8];
davidjhoward 4:c35db3946fd8 174 tag.b.lo_hi = modbus_input_buffer[7];
davidjhoward 4:c35db3946fd8 175 tag.b.hi_lo = modbus_input_buffer[10];
davidjhoward 4:c35db3946fd8 176 tag.b.hi_hi = modbus_input_buffer[9];
davidjhoward 4:c35db3946fd8 177 // printf("tag=%2.2f, 0x%x, 0x%x\r\n",tag.f, tag.w.lo, tag.w.hi);
davidjhoward 4:c35db3946fd8 178 flu_values->tag = tag.f;
davidjhoward 4:c35db3946fd8 179
davidjhoward 4:c35db3946fd8 180 rz.b.lo_lo = modbus_input_buffer[12];
davidjhoward 4:c35db3946fd8 181 rz.b.lo_hi = modbus_input_buffer[11];
davidjhoward 4:c35db3946fd8 182 rz.b.hi_lo = modbus_input_buffer[14];
davidjhoward 4:c35db3946fd8 183 rz.b.hi_hi = modbus_input_buffer[13];
davidjhoward 4:c35db3946fd8 184 // printf("rz=%2.2f, 0x%x, 0x%x\r\n",rz.f, rz.w.lo, rz.w.hi);
davidjhoward 4:c35db3946fd8 185 flu_values->rz = rz.f;
davidjhoward 4:c35db3946fd8 186
davidjhoward 4:c35db3946fd8 187 rs.b.lo_lo = modbus_input_buffer[16];
davidjhoward 4:c35db3946fd8 188 rs.b.lo_hi = modbus_input_buffer[15];
davidjhoward 4:c35db3946fd8 189 rs.b.hi_lo = modbus_input_buffer[18];
davidjhoward 4:c35db3946fd8 190 rs.b.hi_hi = modbus_input_buffer[17];
davidjhoward 4:c35db3946fd8 191 // printf("rs=%2.2f, 0x%x, 0x%x\r\n",rs.f, rs.w.lo, rs.w.hi);
davidjhoward 4:c35db3946fd8 192 flu_values->rs = rs.f;
davidjhoward 4:c35db3946fd8 193
davidjhoward 4:c35db3946fd8 194 tra_back.b.lo_lo = modbus_input_buffer[20];
davidjhoward 4:c35db3946fd8 195 tra_back.b.lo_hi = modbus_input_buffer[19];
davidjhoward 4:c35db3946fd8 196 tra_back.b.hi_lo = modbus_input_buffer[22];
davidjhoward 4:c35db3946fd8 197 tra_back.b.hi_hi = modbus_input_buffer[21];
davidjhoward 4:c35db3946fd8 198 // 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 199 flu_values->tra_back = tra_back.f;
davidjhoward 4:c35db3946fd8 200
davidjhoward 4:c35db3946fd8 201 turb.b.lo_lo = modbus_input_buffer[24];
davidjhoward 4:c35db3946fd8 202 turb.b.lo_hi = modbus_input_buffer[23];
davidjhoward 4:c35db3946fd8 203 turb.b.hi_lo = modbus_input_buffer[26];
davidjhoward 4:c35db3946fd8 204 turb.b.hi_hi = modbus_input_buffer[25];
davidjhoward 4:c35db3946fd8 205 // printf("turb=%2.2f, 0x%x, 0x%x\r\n",turb.f, turb.w.lo, turb.w.hi);
davidjhoward 4:c35db3946fd8 206 flu_values->turb = turb.f;
davidjhoward 4:c35db3946fd8 207
davidjhoward 4:c35db3946fd8 208 cf.b.lo = modbus_input_buffer[28];
davidjhoward 4:c35db3946fd8 209 cf.b.hi = modbus_input_buffer[27];
davidjhoward 4:c35db3946fd8 210 // printf("cf=%d, 0x%x,\r\n",cf.w, cf.w);
davidjhoward 4:c35db3946fd8 211 flu_values->cf = cf.w;
davidjhoward 4:c35db3946fd8 212
davidjhoward 4:c35db3946fd8 213 // crc.b.lo = modbus_input_buffer[30]; crc.b.hi = modbus_input_buffer[29];
davidjhoward 4:c35db3946fd8 214 // printf("crc=%d, 0x%x,\r\n",crc.w, crc.w);
davidjhoward 4:c35db3946fd8 215
davidjhoward 4:c35db3946fd8 216 return true;
davidjhoward 4:c35db3946fd8 217 }
davidjhoward 4:c35db3946fd8 218
davidjhoward 4:c35db3946fd8 219 bool mbTconGetData( MB_TCON_VALUES *tcon_values )
davidjhoward 4:c35db3946fd8 220 {
davidjhoward 4:c35db3946fd8 221 MR_REGISTER_INT tcon_cal;
davidjhoward 4:c35db3946fd8 222 MR_REGISTER_INT tcon_cmp;
davidjhoward 4:c35db3946fd8 223 MR_REGISTER_INT tcon_2pt;
davidjhoward 4:c35db3946fd8 224 MR_REGISTER_INT tcon_freq;
davidjhoward 4:c35db3946fd8 225 MR_REGISTER_INT rtd_degC;
davidjhoward 4:c35db3946fd8 226 MR_REGISTER_INT rtd_cal;
davidjhoward 4:c35db3946fd8 227 MR_REGISTER_INT rtd_raw;
davidjhoward 4:c35db3946fd8 228
davidjhoward 4:c35db3946fd8 229 if (mbInterruptComplete() != true ) {
davidjhoward 4:c35db3946fd8 230 return false;
davidjhoward 4:c35db3946fd8 231 }
davidjhoward 4:c35db3946fd8 232
davidjhoward 4:c35db3946fd8 233 // 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 234 //
davidjhoward 4:c35db3946fd8 235 // 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 236 // modbus_input_buffer[3],modbus_input_buffer[4], modbus_input_buffer[5],modbus_input_buffer[6], // tcon_cal
davidjhoward 4:c35db3946fd8 237 // modbus_input_buffer[7],modbus_input_buffer[8], modbus_input_buffer[9],modbus_input_buffer[10], // tcon_cmp
davidjhoward 4:c35db3946fd8 238 // modbus_input_buffer[11],modbus_input_buffer[12], modbus_input_buffer[13],modbus_input_buffer[14], // tcon_2pt
davidjhoward 4:c35db3946fd8 239 // modbus_input_buffer[15],modbus_input_buffer[16], modbus_input_buffer[17],modbus_input_buffer[18], // rtd_degC
davidjhoward 4:c35db3946fd8 240 // modbus_input_buffer[19],modbus_input_buffer[20], modbus_input_buffer[21],modbus_input_buffer[22], // rtd_cal
davidjhoward 4:c35db3946fd8 241 // modbus_input_buffer[23],modbus_input_buffer[24], modbus_input_buffer[25],modbus_input_buffer[26]); // rtd_raw
davidjhoward 4:c35db3946fd8 242 // printf("CRC: %x%x\r\n",modbus_input_buffer[27], modbus_input_buffer[28]);
davidjhoward 4:c35db3946fd8 243
davidjhoward 4:c35db3946fd8 244 rtd_raw.b.lo_lo = modbus_input_buffer[4];
davidjhoward 4:c35db3946fd8 245 rtd_raw.b.lo_hi = modbus_input_buffer[3];
davidjhoward 4:c35db3946fd8 246 rtd_raw.b.hi_lo = modbus_input_buffer[6];
davidjhoward 4:c35db3946fd8 247 rtd_raw.b.hi_hi = modbus_input_buffer[5];
davidjhoward 4:c35db3946fd8 248 // 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 249 tcon_values->rtd_raw = rtd_raw.i;
davidjhoward 4:c35db3946fd8 250
davidjhoward 4:c35db3946fd8 251 rtd_cal.b.lo_lo = modbus_input_buffer[8];
davidjhoward 4:c35db3946fd8 252 rtd_cal.b.lo_hi = modbus_input_buffer[7];
davidjhoward 4:c35db3946fd8 253 rtd_cal.b.hi_lo = modbus_input_buffer[10];
davidjhoward 4:c35db3946fd8 254 rtd_cal.b.hi_hi = modbus_input_buffer[9];
davidjhoward 4:c35db3946fd8 255 // 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 256 tcon_values->rtd_cal = rtd_cal.i;
davidjhoward 4:c35db3946fd8 257
davidjhoward 4:c35db3946fd8 258 rtd_degC.b.lo_lo = modbus_input_buffer[12];
davidjhoward 4:c35db3946fd8 259 rtd_degC.b.lo_hi = modbus_input_buffer[11];
davidjhoward 4:c35db3946fd8 260 rtd_degC.b.hi_lo = modbus_input_buffer[14];
davidjhoward 4:c35db3946fd8 261 rtd_degC.b.hi_hi = modbus_input_buffer[13];
davidjhoward 4:c35db3946fd8 262 // 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 263 tcon_values->rtd_degC = (rtd_degC.i/1000.0);
davidjhoward 4:c35db3946fd8 264
davidjhoward 4:c35db3946fd8 265 tcon_freq.b.lo_lo = modbus_input_buffer[16];
davidjhoward 4:c35db3946fd8 266 tcon_freq.b.lo_hi = modbus_input_buffer[15];
davidjhoward 4:c35db3946fd8 267 tcon_freq.b.hi_lo = modbus_input_buffer[18];
davidjhoward 4:c35db3946fd8 268 tcon_freq.b.hi_hi = modbus_input_buffer[17];
davidjhoward 4:c35db3946fd8 269 // 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 270 tcon_values->tcon_freq = tcon_freq.i;
davidjhoward 4:c35db3946fd8 271
davidjhoward 4:c35db3946fd8 272 tcon_2pt.b.lo_lo = modbus_input_buffer[20];
davidjhoward 4:c35db3946fd8 273 tcon_2pt.b.lo_hi = modbus_input_buffer[19];
davidjhoward 4:c35db3946fd8 274 tcon_2pt.b.hi_lo = modbus_input_buffer[22];
davidjhoward 4:c35db3946fd8 275 tcon_2pt.b.hi_hi = modbus_input_buffer[21];
davidjhoward 4:c35db3946fd8 276 // 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 277 tcon_values->tcon_2pt = tcon_2pt.i;
davidjhoward 4:c35db3946fd8 278
davidjhoward 4:c35db3946fd8 279 tcon_cmp.b.lo_lo = modbus_input_buffer[20];
davidjhoward 4:c35db3946fd8 280 tcon_cmp.b.lo_hi = modbus_input_buffer[19];
davidjhoward 4:c35db3946fd8 281 tcon_cmp.b.hi_lo = modbus_input_buffer[22];
davidjhoward 4:c35db3946fd8 282 tcon_cmp.b.hi_hi = modbus_input_buffer[21];
davidjhoward 4:c35db3946fd8 283 // 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 284 tcon_values->tcon_cmp = tcon_cmp.i;
davidjhoward 4:c35db3946fd8 285
davidjhoward 4:c35db3946fd8 286 tcon_cal.b.lo_lo = modbus_input_buffer[20];
davidjhoward 4:c35db3946fd8 287 tcon_cal.b.lo_hi = modbus_input_buffer[19];
davidjhoward 4:c35db3946fd8 288 tcon_cal.b.hi_lo = modbus_input_buffer[22];
davidjhoward 4:c35db3946fd8 289 tcon_cal.b.hi_hi = modbus_input_buffer[21];
davidjhoward 4:c35db3946fd8 290 // printf("tcon_cal=%d, 0x%x, 0x%x\r\n",tcon_cal.i, tcon_cal.w.lo, tcon_cal.w.hi);
davidjhoward 4:c35db3946fd8 291 tcon_values->tcon_cal = tcon_cal.i;
davidjhoward 4:c35db3946fd8 292
davidjhoward 4:c35db3946fd8 293 return true;
jmarkel44 0:65cfa4873284 294 }