diff --git a/Pioneer Ghost Meters/Controller/Controller/DevicePref.xml b/Pioneer Ghost Meters/Controller/Controller/DevicePref.xml
index 2b022dd..b719f06 100644
--- a/Pioneer Ghost Meters/Controller/Controller/DevicePref.xml
+++ b/Pioneer Ghost Meters/Controller/Controller/DevicePref.xml
@@ -1,4 +1,4 @@
- PATRICKMCDO8E0A!HenryPump\10.20.4.40
+ PATRICKMCDO8E0A!HenryPump\107.84.231.186
\ No newline at end of file
diff --git a/Pioneer Ghost Meters/Controller/Controller/LogicalValues.csv b/Pioneer Ghost Meters/Controller/Controller/LogicalValues.csv
index 995ea6a..73bdb17 100644
--- a/Pioneer Ghost Meters/Controller/Controller/LogicalValues.csv
+++ b/Pioneer Ghost Meters/Controller/Controller/LogicalValues.csv
@@ -51,6 +51,8 @@ Controller.Micro820.Micro820.cfg_FlowTotalizerC_Register
Controller.Micro820.Micro820.cfg_ResetTotalizerA_Coil
Controller.Micro820.Micro820.cfg_ResetTotalizerB_Coil
Controller.Micro820.Micro820.cfg_ResetTotalizerC_Coil
+Controller.Micro820.Micro820.cfg_SolarPanel_ModbusNode
+Controller.Micro820.Micro820.cfg_SolarPanel_Register
Controller.Micro820.Micro820.cfg_Status_Register
Controller.Micro820.Micro820.cfg_Units_Register
Controller.Micro820.Micro820.cmd_ResetTotalizerA
@@ -2231,7 +2233,290 @@ Controller.Micro820.Micro820.FlowMeterMb.WRITECOIL_CMD
Controller.Micro820.Micro820.ModbusScanRate
Controller.Micro820.Micro820.skid_Latitude
Controller.Micro820.Micro820.skid_Longitude
-Controller.Micro820.Micro820.sts_ModbusError
+Controller.Micro820.Micro820.SolarPanelMb.mbs_Cancel
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[1] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[10] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[100] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[101] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[102] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[103] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[104] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[105] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[106] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[107] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[108] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[109] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[11] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[110] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[111] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[112] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[113] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[114] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[115] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[116] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[117] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[118] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[119] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[12] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[120] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[121] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[122] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[123] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[124] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[125] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[13] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[14] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[15] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[16] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[17] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[18] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[19] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[2] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[20] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[21] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[22] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[23] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[24] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[25] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[26] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[27] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[28] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[29] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[3] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[30] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[31] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[32] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[33] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[34] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[35] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[36] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[37] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[38] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[39] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[4] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[40] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[41] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[42] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[43] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[44] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[45] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[46] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[47] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[48] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[49] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[5] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[50] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[51] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[52] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[53] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[54] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[55] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[56] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[57] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[58] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[59] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[6] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[60] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[61] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[62] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[63] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[64] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[65] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[66] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[67] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[68] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[69] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[7] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[70] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[71] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[72] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[73] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[74] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[75] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[76] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[77] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[78] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[79] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[8] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[80] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[81] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[82] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[83] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[84] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[85] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[86] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[87] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[88] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[89] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[9] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[90] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[91] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[92] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[93] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[94] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[95] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[96] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[97] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[98] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_Data[99] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_LocalCfg.Channel 2
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_LocalCfg.Cmd 3
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_LocalCfg.ElementCnt 2
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_LocalCfg.TriggerType 1
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.__ADI_LocalAddr 2
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.Cancel FALSE
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.controlbit 136
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.Error FALSE
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.ErrorID 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.IN TRUE
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[1] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[10] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[100] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[101] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[102] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[103] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[104] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[105] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[106] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[107] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[108] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[109] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[11] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[110] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[111] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[112] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[113] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[114] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[115] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[116] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[117] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[118] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[119] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[12] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[120] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[121] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[122] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[123] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[124] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[125] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[13] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[14] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[15] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[16] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[17] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[18] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[19] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[2] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[20] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[21] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[22] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[23] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[24] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[25] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[26] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[27] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[28] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[29] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[3] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[30] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[31] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[32] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[33] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[34] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[35] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[36] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[37] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[38] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[39] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[4] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[40] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[41] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[42] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[43] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[44] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[45] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[46] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[47] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[48] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[49] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[5] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[50] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[51] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[52] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[53] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[54] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[55] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[56] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[57] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[58] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[59] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[6] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[60] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[61] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[62] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[63] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[64] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[65] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[66] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[67] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[68] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[69] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[7] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[70] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[71] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[72] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[73] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[74] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[75] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[76] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[77] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[78] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[79] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[8] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[80] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[81] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[82] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[83] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[84] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[85] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[86] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[87] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[88] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[89] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[9] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[90] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[91] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[92] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[93] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[94] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[95] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[96] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[97] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[98] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalAddr[99] 0
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalCfg.Channel 2
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalCfg.Cmd 3
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalCfg.ElementCnt 2
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.LocalCfg.TriggerType 1
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.Q FALSE
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.TargetCfg.Addr 40203
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_MSG.TargetCfg.Node 20
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_TargetCfg.Addr 40203
+Controller.Micro820.Micro820.SolarPanelMb.mbs_SolarPanel_TargetCfg.Node 20
+Controller.Micro820.Micro820.SolarPanelMb.mbs_TriggerType
+Controller.Micro820.Micro820.SolarPanelMb.ModbusTimer.ET
+Controller.Micro820.Micro820.SolarPanelMb.ModbusTimer.IN
+Controller.Micro820.Micro820.SolarPanelMb.ModbusTimer.Pdate
+Controller.Micro820.Micro820.SolarPanelMb.ModbusTimer.PT
+Controller.Micro820.Micro820.SolarPanelMb.ModbusTimer.Q
+Controller.Micro820.Micro820.SolarPanelMb.ModbusTimer.Redge
+Controller.Micro820.Micro820.SolarPanelMb.READ_CMD
+Controller.Micro820.Micro820.SolarPanelMb.temp_ArrayFault
+Controller.Micro820.Micro820.SolarPanelMb.temp_ChargeState
+Controller.Micro820.Micro820.sts_ArrayFault
+Controller.Micro820.Micro820.sts_ChargeState
+Controller.Micro820.Micro820.sts_FlowmeterModbusError
+Controller.Micro820.Micro820.sts_SolarModbusError
Controller.Micro820.Micro820.val_FlowRate
Controller.Micro820.Micro820.val_FlowTotalizerA
Controller.Micro820.Micro820.val_FlowTotalizerAUnits
@@ -2240,6 +2525,13 @@ Controller.Micro820.Micro820.val_FlowTotalizerBUnits
Controller.Micro820.Micro820.val_FlowTotalizerC
Controller.Micro820.Micro820.val_FlowTotalizerCUnits
Controller.Micro820.Micro820.val_FlowUnits
+Controller.Micro820.Micro820.val_SolarAmbientTemperature
+Controller.Micro820.Micro820.val_SolarArrayCurrent
+Controller.Micro820.Micro820.val_SolarArrayVoltage
+Controller.Micro820.Micro820.val_SolarBatteryTemperature
+Controller.Micro820.Micro820.val_SolarBatteryTerminalVoltage
+Controller.Micro820.Micro820.val_SolarLoadCurrent
+Controller.Micro820.Micro820.val_SolarLoadVoltage
Controller.Micro820.Micro820.val_Status0
Controller.Micro820.Micro820.val_Status1
Controller.Micro820.Micro820.val_Status2
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Compile_REVERSEUINT.ict b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Compile_REVERSEUINT.ict
new file mode 100644
index 0000000..7e6cc76
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Compile_REVERSEUINT.ict
@@ -0,0 +1 @@
+COMPILED
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Compile_SOLARPANELMB.ict b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Compile_SOLARPANELMB.ict
new file mode 100644
index 0000000..7e6cc76
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Compile_SOLARPANELMB.ict
@@ -0,0 +1 @@
+COMPILED
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Compile_WORDTOFLOAT16.ict b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Compile_WORDTOFLOAT16.ict
new file mode 100644
index 0000000..7e6cc76
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Compile_WORDTOFLOAT16.ict
@@ -0,0 +1 @@
+COMPILED
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/DefProg.cnf b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/DefProg.cnf
index 488006f..acac3d5 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/DefProg.cnf and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/DefProg.cnf differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/DwlOrder.txt b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/DwlOrder.txt
index 1c929df..2b14577 100644
--- a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/DwlOrder.txt
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/DwlOrder.txt
@@ -1,5 +1,8 @@
FLOWMETERMB
WATCHDOG
+SOLARPANELMB
WORDSTOREAL
FLOWRATEUNITS
FLOWTOTALUNITS
+WORDTOFLOAT16
+REVERSEUINT
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FBS_INPUTS_ASSIGNATION.ipa b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FBS_INPUTS_ASSIGNATION.ipa
index 4228f3d..3e7f70b 100644
--- a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FBS_INPUTS_ASSIGNATION.ipa
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FBS_INPUTS_ASSIGNATION.ipa
@@ -2,6 +2,8 @@ MODBUSTIMER.IN@FLOWMETERMB,__TMPB__TON__IN,BOOL
MODBUSTIMER.PT@FLOWMETERMB,MODBUSSCANRATE,TIME
WAIT_TO_RESET_TON.IN@FLOWMETERMB,CMD_CLEARRESETTOTALIZER@FLOWMETERMB,BOOL
WAIT_TO_RESET_TON.PT@FLOWMETERMB,PAR_TIMETOWAITTOCLEARRESETTOTALIZER@FLOWMETERMB,TIME
+MODBUSTIMER.IN@SOLARPANELMB,__TMPB__TON__IN,BOOL
+MODBUSTIMER.PT@SOLARPANELMB,MODBUSSCANRATE,TIME
MBS_FLOWRATE_MSG.IN@FLOWMETERMB,__TMPB__MSG_MODBUS__IN,BOOL
MBS_FLOWRATE_MSG.CANCEL@FLOWMETERMB,MBS_CANCEL@FLOWMETERMB,BOOL
MBS_FLOWRATE_MSG.LOCALCFG@FLOWMETERMB,,MODBUSLOCPARA
@@ -50,3 +52,9 @@ MBS_UNITS_MSG.LOCALCFG@FLOWMETERMB,,MODBUSLOCPARA
MBS_UNITS_MSG.TARGETCFG@FLOWMETERMB,,MODBUSTARPARA
MBS_UNITS_MSG.LOCALADDR@FLOWMETERMB,,MODBUSLOCADDR
MBS_UNITS_MSG.__ADI_LOCALADDR@FLOWMETERMB,,UINT
+MBS_SOLARPANEL_MSG.IN@SOLARPANELMB,__TMPB__MSG_MODBUS__IN,BOOL
+MBS_SOLARPANEL_MSG.CANCEL@SOLARPANELMB,MBS_CANCEL@SOLARPANELMB,BOOL
+MBS_SOLARPANEL_MSG.LOCALCFG@SOLARPANELMB,,MODBUSLOCPARA
+MBS_SOLARPANEL_MSG.TARGETCFG@SOLARPANELMB,,MODBUSTARPARA
+MBS_SOLARPANEL_MSG.LOCALADDR@SOLARPANELMB,,MODBUSLOCADDR
+MBS_SOLARPANEL_MSG.__ADI_LOCALADDR@SOLARPANELMB,,UINT
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWMETERMB.ic b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWMETERMB.ic
index 376cfd9..d9e74b7 100644
--- a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWMETERMB.ic
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWMETERMB.ic
@@ -189,7 +189,7 @@ __TMPB4 := MBS_FLOWTOTALIZERC_MSG [ __CDINT0000000D ]
__TMPB1 := __TMPB1 _OR __TMPB4
__TMPB5 := MBS_STATUS_MSG [ __CDINT0000000D ]
__TMPB1 := __TMPB1 _OR __TMPB5
-STS_MODBUSERROR := __TMPB1
+STS_FLOWMETERMODBUSERROR := __TMPB1
__TMPUIN1 := VAL_STATUS0 + VAL_STATUS1
__TMPUIN1 := __TMPUIN1 + VAL_STATUS2
__TMPB1 := __TMPUIN1 = __UINT_NULL
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWMETERMB.rtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWMETERMB.rtc
index ed5c864..49b61f9 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWMETERMB.rtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWMETERMB.rtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWRATEUNITS.rtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWRATEUNITS.rtc
index 01e1b6d..7fa806c 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWRATEUNITS.rtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWRATEUNITS.rtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWTOTALUNITS.rtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWTOTALUNITS.rtc
index 8dcb40f..6f024b8 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWTOTALUNITS.rtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FLOWTOTALUNITS.rtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FlowMeterMb.stf b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FlowMeterMb.stf
index d7f58bf..20efb4e 100644
--- a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FlowMeterMb.stf
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/FlowMeterMb.stf
@@ -84,7 +84,7 @@ IF mbs_Status_MSG.Q THEN
val_Status2 := ANY_TO_UINT(mbs_Status_Data[3]);
END_IF;
-sts_ModbusError := mbs_FlowRate_MSG.Error OR mbs_FlowTotalizerA_MSG.Error OR mbs_FlowTotalizerB_MSG.Error OR mbs_FlowTotalizerC_MSG.Error OR mbs_Status_MSG.Error;
+sts_FlowmeterModbusError := mbs_FlowRate_MSG.Error OR mbs_FlowTotalizerA_MSG.Error OR mbs_FlowTotalizerB_MSG.Error OR mbs_FlowTotalizerC_MSG.Error OR mbs_Status_MSG.Error;
IF (val_Status0 + val_Status1 + val_Status2) = 0 THEN
val_StatusString := 'OK';
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/GlobalVariable.rtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/GlobalVariable.rtc
index 0039597..172cf80 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/GlobalVariable.rtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/GlobalVariable.rtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Header.rtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Header.rtc
index 2333ace..c61660e 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Header.rtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Header.rtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Hierarchy.rtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Hierarchy.rtc
index 5594450..f49171a 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Hierarchy.rtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/Hierarchy.rtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/IDS00103 b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/IDS00103
index 54cb399..c153027 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/IDS00103 and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/IDS00103 differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820.icp b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820.icp
index edcc1da..b0bf9bf 100644
--- a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820.icp
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820.icp
@@ -1,5 +1,8 @@
WATCHDOG(149):
+WORDTOFLOAT16(153):F,REVERSEUINT(154);
+REVERSEUINT(154):
FLOWRATEUNITS(150):
FLOWMETERMB(147):F,WORDSTOREAL(148);F,FLOWRATEUNITS(150);F,FLOWTOTALUNITS(151);
+SOLARPANELMB(152):F,WORDTOFLOAT16(153);
WORDSTOREAL(148):
FLOWTOTALUNITS(151):
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Conf.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Conf.xtc
index ec5a465..e0748e2 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Conf.xtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Conf.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Constants.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Constants.xtc
index ea43ef5..4137a9a 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Constants.xtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Constants.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_DwlOrder.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_DwlOrder.xtc
index 8fcaf8e..5b07a22 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_DwlOrder.xtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_DwlOrder.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_LinkInfo.mtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_LinkInfo.mtc
index 843223e..4aa4927 100644
--- a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_LinkInfo.mtc
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_LinkInfo.mtc
@@ -1,10 +1,10 @@
[MEMORY]
-Offset0=0x19D8
-Offset1=0x21D8
-Offset2=0x21D8
-Offset3=0x21D8
-Memory Usage Estimate(Code)=0x193C
-Memory Usage Estimate(Data)=0x4B64
-Memory Usage Estimate(Retain)=0x2D
-Memory Usage Estimate(Temporary variables)=0x988
+Offset0=0x1C00
+Offset1=0x2400
+Offset2=0x2400
+Offset3=0x2400
+Memory Usage Estimate(Code)=0x247C
+Memory Usage Estimate(Data)=0x4F9C
+Memory Usage Estimate(Retain)=0x34
+Memory Usage Estimate(Temporary variables)=0xB98
Offset4=0x414
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_LinkInfo.s.mtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_LinkInfo.s.mtc
index 843223e..4aa4927 100644
--- a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_LinkInfo.s.mtc
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_LinkInfo.s.mtc
@@ -1,10 +1,10 @@
[MEMORY]
-Offset0=0x19D8
-Offset1=0x21D8
-Offset2=0x21D8
-Offset3=0x21D8
-Memory Usage Estimate(Code)=0x193C
-Memory Usage Estimate(Data)=0x4B64
-Memory Usage Estimate(Retain)=0x2D
-Memory Usage Estimate(Temporary variables)=0x988
+Offset0=0x1C00
+Offset1=0x2400
+Offset2=0x2400
+Offset3=0x2400
+Memory Usage Estimate(Code)=0x247C
+Memory Usage Estimate(Data)=0x4F9C
+Memory Usage Estimate(Retain)=0x34
+Memory Usage Estimate(Temporary variables)=0xB98
Offset4=0x414
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_MdfLinkReport.s.mtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_MdfLinkReport.s.mtc
index ecec445..57c3886 100644
--- a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_MdfLinkReport.s.mtc
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_MdfLinkReport.s.mtc
@@ -5,12 +5,12 @@ ON_LINE=N
TBL_CONF=Y
CRC_ORG=0x0
CRC_OLD=
-CRC_NEW=0x61395B12
+CRC_NEW=0x978BA04B
DAT_ORG=0
DAT_OLD=0
-DAT_NEW=1517002116
+DAT_NEW=1517372534
VER_ORG=0
VER_OLD=0
-VER_NEW=23
+VER_NEW=31
CRC_ALL_OLD=
-CRC_ALL_NEW=0x7C3289A7
+CRC_ALL_NEW=0x672665CF
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_MiscLinkInfo.mtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_MiscLinkInfo.mtc
index c90b0ef..1b46546 100644
--- a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_MiscLinkInfo.mtc
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_MiscLinkInfo.mtc
@@ -1,9 +1,9 @@
[MEMORY]
-Memory Usage Estimate(Temporary variables)=0x988
+Memory Usage Estimate(Temporary variables)=0xB98
Biggest online change user variable memory block size=0x800
Currently added user variables=0x0
-Total data size=0x2360
-User variables size=0x19D8
-Maximum size for temporary variables=0x2988
-Memory Usage Estimate(Data)=0x4B60
+Total data size=0x2798
+User variables size=0x1C00
+Maximum size for temporary variables=0x2B98
+Memory Usage Estimate(Data)=0x4F98
Free memory for user variables=0x800
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_MiscLinkInfo.s.mtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_MiscLinkInfo.s.mtc
index c90b0ef..1b46546 100644
--- a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_MiscLinkInfo.s.mtc
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_MiscLinkInfo.s.mtc
@@ -1,9 +1,9 @@
[MEMORY]
-Memory Usage Estimate(Temporary variables)=0x988
+Memory Usage Estimate(Temporary variables)=0xB98
Biggest online change user variable memory block size=0x800
Currently added user variables=0x0
-Total data size=0x2360
-User variables size=0x19D8
-Maximum size for temporary variables=0x2988
-Memory Usage Estimate(Data)=0x4B60
+Total data size=0x2798
+User variables size=0x1C00
+Maximum size for temporary variables=0x2B98
+Memory Usage Estimate(Data)=0x4F98
Free memory for user variables=0x800
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_FLOWMETERMB.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_FLOWMETERMB.xtc
index d6d9447..0429e58 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_FLOWMETERMB.xtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_FLOWMETERMB.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_FLOWRATEUNITS.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_FLOWRATEUNITS.xtc
index 81f2f7a..fc4ae09 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_FLOWRATEUNITS.xtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_FLOWRATEUNITS.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_FLOWTOTALUNITS.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_FLOWTOTALUNITS.xtc
index 9f0dffc..16c3bc3 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_FLOWTOTALUNITS.xtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_FLOWTOTALUNITS.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/RmcVariables b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_REVERSEUINT.ipa
similarity index 100%
rename from Pioneer Ghost Meters/Controller/Controller/RmcVariables
rename to Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_REVERSEUINT.ipa
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_REVERSEUINT.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_REVERSEUINT.xtc
new file mode 100644
index 0000000..9999c64
Binary files /dev/null and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_REVERSEUINT.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_SOLARPANELMB.ipa b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_SOLARPANELMB.ipa
new file mode 100644
index 0000000..ed144af
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_SOLARPANELMB.ipa
@@ -0,0 +1,2 @@
+,MODBUSTIMER@SOLARPANELMB,TON,IN,__TMPB__TON__IN,BOOL,PT,MODBUSSCANRATE,TIME
+,MBS_SOLARPANEL_MSG@SOLARPANELMB,MSG_MODBUS,IN,__TMPB__MSG_MODBUS__IN,BOOL,CANCEL,MBS_CANCEL@SOLARPANELMB,BOOL,LOCALCFG,,MODBUSLOCPARA,TARGETCFG,,MODBUSTARPARA,LOCALADDR,,MODBUSLOCADDR,__ADI_LOCALADDR,,UINT
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_SOLARPANELMB.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_SOLARPANELMB.xtc
new file mode 100644
index 0000000..6a2d1b5
Binary files /dev/null and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_SOLARPANELMB.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_WATCHDOG.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_WATCHDOG.xtc
index c447c2e..dad40d0 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_WATCHDOG.xtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_WATCHDOG.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_WORDSTOREAL.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_WORDSTOREAL.xtc
index 4a5c257..0c7188b 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_WORDSTOREAL.xtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_WORDSTOREAL.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_WORDTOFLOAT16.ipa b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_WORDTOFLOAT16.ipa
new file mode 100644
index 0000000..e69de29
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_WORDTOFLOAT16.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_WORDTOFLOAT16.xtc
new file mode 100644
index 0000000..30bce15
Binary files /dev/null and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_Pou_WORDTOFLOAT16.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsComplement.ttc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsComplement.ttc
index c7aa032..6edfb04 100644
--- a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsComplement.ttc
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsComplement.ttc
@@ -1,54 +1,62 @@
[BEGIN FB INPUTS]
-I1=micro820.micro820.flowmetermb/modbustimer.in,0x21D9,BOOL
-I2=micro820.micro820.flowmetermb/modbustimer.pt,0x4EC,TIME
-I3=micro820.micro820.flowmetermb/wait_to_reset_ton.in,0x45B,BOOL
-I4=micro820.micro820.flowmetermb/wait_to_reset_ton.pt,0x4F0,TIME
-I5=micro820.micro820.flowmetermb/mbs_flowrate_msg.in,0x21DA,BOOL
-I6=micro820.micro820.flowmetermb/mbs_flowrate_msg.cancel,0x459,BOOL
-I7=micro820.micro820.flowmetermb/mbs_flowrate_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
-I8=micro820.micro820.flowmetermb/mbs_flowrate_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
-I9=micro820.micro820.flowmetermb/mbs_flowrate_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
-I10=micro820.micro820.flowmetermb/mbs_flowrate_msg.__adi_localaddr,0xFFFFFFFF,UINT
-I11=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.in,0x21DA,BOOL
-I12=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.cancel,0x459,BOOL
-I13=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
-I14=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
-I15=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
-I16=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.__adi_localaddr,0xFFFFFFFF,UINT
-I17=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.in,0x21DA,BOOL
-I18=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.cancel,0x459,BOOL
-I19=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
-I20=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
-I21=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
-I22=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.__adi_localaddr,0xFFFFFFFF,UINT
-I23=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.in,0x21DA,BOOL
-I24=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.cancel,0x459,BOOL
-I25=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
-I26=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
-I27=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
-I28=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.__adi_localaddr,0xFFFFFFFF,UINT
-I29=micro820.micro820.flowmetermb/mbs_status_msg.in,0x21DA,BOOL
-I30=micro820.micro820.flowmetermb/mbs_status_msg.cancel,0x459,BOOL
-I31=micro820.micro820.flowmetermb/mbs_status_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
-I32=micro820.micro820.flowmetermb/mbs_status_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
-I33=micro820.micro820.flowmetermb/mbs_status_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
-I34=micro820.micro820.flowmetermb/mbs_status_msg.__adi_localaddr,0xFFFFFFFF,UINT
-I35=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.in,0x45A,BOOL
-I36=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.cancel,0x459,BOOL
-I37=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
-I38=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
-I39=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
-I40=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.__adi_localaddr,0xFFFFFFFF,UINT
-I41=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.in,0x21DA,BOOL
-I42=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.cancel,0x459,BOOL
-I43=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
-I44=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
-I45=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
-I46=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.__adi_localaddr,0xFFFFFFFF,UINT
-I47=micro820.micro820.flowmetermb/mbs_units_msg.in,0x21DA,BOOL
-I48=micro820.micro820.flowmetermb/mbs_units_msg.cancel,0x459,BOOL
-I49=micro820.micro820.flowmetermb/mbs_units_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
-I50=micro820.micro820.flowmetermb/mbs_units_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
-I51=micro820.micro820.flowmetermb/mbs_units_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
-I52=micro820.micro820.flowmetermb/mbs_units_msg.__adi_localaddr,0xFFFFFFFF,UINT
+I1=micro820.micro820.flowmetermb/modbustimer.in,0x2401,BOOL
+I2=micro820.micro820.flowmetermb/modbustimer.pt,0x52C,TIME
+I3=micro820.micro820.flowmetermb/wait_to_reset_ton.in,0x45C,BOOL
+I4=micro820.micro820.flowmetermb/wait_to_reset_ton.pt,0x530,TIME
+I5=micro820.micro820.solarpanelmb/modbustimer.in,0x2401,BOOL
+I6=micro820.micro820.solarpanelmb/modbustimer.pt,0x52C,TIME
+I7=micro820.micro820.flowmetermb/mbs_flowrate_msg.in,0x2402,BOOL
+I8=micro820.micro820.flowmetermb/mbs_flowrate_msg.cancel,0x45A,BOOL
+I9=micro820.micro820.flowmetermb/mbs_flowrate_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
+I10=micro820.micro820.flowmetermb/mbs_flowrate_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
+I11=micro820.micro820.flowmetermb/mbs_flowrate_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
+I12=micro820.micro820.flowmetermb/mbs_flowrate_msg.__adi_localaddr,0xFFFFFFFF,UINT
+I13=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.in,0x2402,BOOL
+I14=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.cancel,0x45A,BOOL
+I15=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
+I16=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
+I17=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
+I18=micro820.micro820.flowmetermb/mbs_flowtotalizera_msg.__adi_localaddr,0xFFFFFFFF,UINT
+I19=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.in,0x2402,BOOL
+I20=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.cancel,0x45A,BOOL
+I21=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
+I22=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
+I23=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
+I24=micro820.micro820.flowmetermb/mbs_flowtotalizerb_msg.__adi_localaddr,0xFFFFFFFF,UINT
+I25=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.in,0x2402,BOOL
+I26=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.cancel,0x45A,BOOL
+I27=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
+I28=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
+I29=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
+I30=micro820.micro820.flowmetermb/mbs_flowtotalizerc_msg.__adi_localaddr,0xFFFFFFFF,UINT
+I31=micro820.micro820.flowmetermb/mbs_status_msg.in,0x2402,BOOL
+I32=micro820.micro820.flowmetermb/mbs_status_msg.cancel,0x45A,BOOL
+I33=micro820.micro820.flowmetermb/mbs_status_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
+I34=micro820.micro820.flowmetermb/mbs_status_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
+I35=micro820.micro820.flowmetermb/mbs_status_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
+I36=micro820.micro820.flowmetermb/mbs_status_msg.__adi_localaddr,0xFFFFFFFF,UINT
+I37=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.in,0x45B,BOOL
+I38=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.cancel,0x45A,BOOL
+I39=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
+I40=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
+I41=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
+I42=micro820.micro820.flowmetermb/mbs_resettotalizer_msg.__adi_localaddr,0xFFFFFFFF,UINT
+I43=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.in,0x2402,BOOL
+I44=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.cancel,0x45A,BOOL
+I45=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
+I46=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
+I47=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
+I48=micro820.micro820.flowmetermb/mbs_clearresettotalizer_msg.__adi_localaddr,0xFFFFFFFF,UINT
+I49=micro820.micro820.flowmetermb/mbs_units_msg.in,0x2402,BOOL
+I50=micro820.micro820.flowmetermb/mbs_units_msg.cancel,0x45A,BOOL
+I51=micro820.micro820.flowmetermb/mbs_units_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
+I52=micro820.micro820.flowmetermb/mbs_units_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
+I53=micro820.micro820.flowmetermb/mbs_units_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
+I54=micro820.micro820.flowmetermb/mbs_units_msg.__adi_localaddr,0xFFFFFFFF,UINT
+I55=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.in,0x2402,BOOL
+I56=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.cancel,0x45D,BOOL
+I57=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.localcfg,0xFFFFFFFF,MODBUSLOCPARA
+I58=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.targetcfg,0xFFFFFFFF,MODBUSTARPARA
+I59=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.localaddr,0xFFFFFFFF,MODBUSLOCADDR
+I60=micro820.micro820.solarpanelmb/mbs_solarpanel_msg.__adi_localaddr,0xFFFFFFFF,UINT
[END]
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsDebug.d.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsDebug.d.xtc
index 64e4a94..9469a5b 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsDebug.d.xtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsDebug.d.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsDebug.s.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsDebug.s.xtc
index 64e4a94..9469a5b 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsDebug.s.xtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsDebug.s.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsDebug.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsDebug.xtc
index 64e4a94..9469a5b 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsDebug.xtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsDebug.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsTarget.s.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsTarget.s.xtc
index 19ccad7..9c4b8fd 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsTarget.s.xtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsTarget.s.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsTarget.xtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsTarget.xtc
index 19ccad7..9c4b8fd 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsTarget.xtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/MICRO820_SymbolsTarget.xtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/REVERSEUINT.ic b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/REVERSEUINT.ic
new file mode 100644
index 0000000..dcee995
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/REVERSEUINT.ic
@@ -0,0 +1,112 @@
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT0000000F
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __DINT_NULL
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT0000000E
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT00000001
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT0000000D
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT00000002
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT0000000C
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT00000003
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT0000000B
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT00000004
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT0000000A
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT00000005
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT00000009
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT00000006
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT00000008
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT00000007
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT00000007
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT00000008
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT00000006
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT00000009
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT00000005
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT0000000A
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT00000004
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT0000000B
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT00000003
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT0000000C
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT00000002
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT0000000D
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __CDINT00000001
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT0000000E
+__TMPN1 := _CALL __ANAWBIT
+_PUSH_PAR INPUTUINT
+_PUSH_PAR __DINT_NULL
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+_PUSH_PAR REVERSEUINT
+_PUSH_PAR __CDINT0000000F
+__TMPN1 := _CALL __ANAWBIT
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/REVERSEUINT.rtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/REVERSEUINT.rtc
new file mode 100644
index 0000000..7a2cca3
Binary files /dev/null and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/REVERSEUINT.rtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/ReverseUINT.AcfMlge b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/ReverseUINT.AcfMlge
new file mode 100644
index 0000000..6c09cd5
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/ReverseUINT.AcfMlge
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/ReverseUINT.stf b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/ReverseUINT.stf
new file mode 100644
index 0000000..c49ee56
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/ReverseUINT.stf
@@ -0,0 +1,27 @@
+FUNCTION ReverseUINT
+(* REVERSE UINT *)
+(* ================================ *)
+(* Developed by: Patrick McDonagh *)
+(* January 30, 2018 *)
+(* ================================ *)
+(* Reverses the bits of a UINT *)
+(* data type. *)
+
+
+ReverseUINT.0 := InputUINT.15;
+ReverseUINT.1 := InputUINT.14;
+ReverseUINT.2 := InputUINT.13;
+ReverseUINT.3 := InputUINT.12;
+ReverseUINT.4 := InputUINT.11;
+ReverseUINT.5 := InputUINT.10;
+ReverseUINT.6 := InputUINT.9;
+ReverseUINT.7 := InputUINT.8;
+ReverseUINT.8 := InputUINT.7;
+ReverseUINT.9 := InputUINT.6;
+ReverseUINT.10 := InputUINT.5;
+ReverseUINT.11 := InputUINT.4;
+ReverseUINT.12 := InputUINT.3;
+ReverseUINT.13 := InputUINT.2;
+ReverseUINT.14 := InputUINT.1;
+ReverseUINT.15 := InputUINT.0;
+END_FUNCTION
\ No newline at end of file
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SOLARPANELMB.dop b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SOLARPANELMB.dop
new file mode 100644
index 0000000..87ef1d9
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SOLARPANELMB.dop
@@ -0,0 +1 @@
+SOLARPANELMB(152):F,WORDTOFLOAT16(153);F,RIGHT();F,MLEN();
\ No newline at end of file
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SOLARPANELMB.ic b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SOLARPANELMB.ic
new file mode 100644
index 0000000..362074a
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SOLARPANELMB.ic
@@ -0,0 +1,242 @@
+__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
+__TMPB1 := _NOT __TMPB1
+__TMPB__TON__IN := __TMPB1
+__FBL_RET := _PUSHCALLFB TON MODBUSTIMER
+MBS_SOLARPANEL_TARGETCFG [ __DINT_NULL ] := CFG_SOLARPANEL_REGISTER
+MBS_SOLARPANEL_TARGETCFG [ __CDINT00000004 ] := CFG_SOLARPANEL_MODBUSNODE
+MBS_SOLARPANEL_LOCALCFG [ __DINT_NULL ] := __CUINT00000002
+MBS_SOLARPANEL_LOCALCFG [ __CDINT00000003 ] := READ_CMD
+MBS_SOLARPANEL_LOCALCFG [ __CDINT00000002 ] := MBS_TRIGGERTYPE
+MBS_SOLARPANEL_LOCALCFG [ __CDINT00000004 ] := __CUINT00000023
+__TMPB1 := MODBUSTIMER [ __CDINT00000004 ]
+__TMPV1 := MBS_SOLARPANEL_LOCALCFG [ __DINT_NULL ]
+__TMPV2 := MBS_SOLARPANEL_TARGETCFG [ __DINT_NULL ]
+__TMPV3 := MBS_SOLARPANEL_DATA [ __DINT_NULL ]
+__TMPB__MSG_MODBUS__IN := __TMPB1
+__TMPV4 := MBS_SOLARPANEL_MSG [ __CDINT00000004 ]
+__TMPV4 := __TMPV1
+__TMPV5 := MBS_SOLARPANEL_MSG [ __CDINT00000006 ]
+__TMPV5 := __TMPV2
+__TMPV6 := MBS_SOLARPANEL_MSG [ __CDINT00000008 ]
+__TMPV6 := __TMPV3
+MBS_SOLARPANEL_MSG [ __CDINT0000000A ] := __ADI__SOLARPANELMB_0_0
+__FBL_RET := _PUSHCALLFB MSG_MODBUS MBS_SOLARPANEL_MSG
+__TMPB1 := MBS_SOLARPANEL_MSG [ __CDINT0000000C ]
+_IF _NOT __TMPB1 _GOTO __LAB1
+__TMPI1 := __CDINT00000012 - __CDINT00000001
+__TMPI1 := __TMPI1 * __CDINT00000002
+__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
+_PUSH_PAR __TMPUIN1
+__TMPR1 := _CALL WORDTOFLOAT16
+VAL_SOLARARRAYCURRENT := __TMPR1
+__TMPI1 := __CDINT00000013 - __CDINT00000001
+__TMPI1 := __TMPI1 * __CDINT00000002
+__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
+_PUSH_PAR __TMPUIN1
+__TMPR1 := _CALL WORDTOFLOAT16
+VAL_SOLARBATTERYTERMINALVOLTAGE := __TMPR1
+__TMPI1 := __CDINT00000014 - __CDINT00000001
+__TMPI1 := __TMPI1 * __CDINT00000002
+__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
+_PUSH_PAR __TMPUIN1
+__TMPR1 := _CALL WORDTOFLOAT16
+VAL_SOLARARRAYVOLTAGE := __TMPR1
+__TMPI1 := __CDINT00000015 - __CDINT00000001
+__TMPI1 := __TMPI1 * __CDINT00000002
+__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
+_PUSH_PAR __TMPUIN1
+__TMPR1 := _CALL WORDTOFLOAT16
+VAL_SOLARLOADVOLTAGE := __TMPR1
+__TMPI1 := __CDINT00000017 - __CDINT00000001
+__TMPI1 := __TMPI1 * __CDINT00000002
+__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
+_PUSH_PAR __TMPUIN1
+__TMPR1 := _CALL WORDTOFLOAT16
+VAL_SOLARLOADCURRENT := __TMPR1
+__TMPI1 := __CDINT0000001C - __CDINT00000001
+__TMPI1 := __TMPI1 * __CDINT00000002
+__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
+_PUSH_PAR __TMPUIN1
+__TMPR1 := _CALL WORDTOFLOAT16
+VAL_SOLARBATTERYTEMPERATURE := __TMPR1
+__TMPI1 := __CDINT0000001D - __CDINT00000001
+__TMPI1 := __TMPI1 * __CDINT00000002
+__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
+_PUSH_PAR __TMPUIN1
+__TMPR1 := _CALL WORDTOFLOAT16
+VAL_SOLARAMBIENTTEMPERATURE := __TMPR1
+__TMPI1 := __CDINT00000022 - __CDINT00000001
+__TMPI1 := __TMPI1 * __CDINT00000002
+__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
+_PUSH_PAR __TMPUIN1
+__TMPUIN2 := _CALL ANY_TO_UINT
+TEMP_CHARGESTATE := __TMPUIN2
+__TMPI1 := __CDINT00000023 - __CDINT00000001
+__TMPI1 := __TMPI1 * __CDINT00000002
+__TMPUIN1 := MBS_SOLARPANEL_DATA [ __TMPI1 ]
+_PUSH_PAR __TMPUIN1
+__TMPUIN2 := _CALL ANY_TO_UINT
+TEMP_ARRAYFAULT := __TMPUIN2
+_GOTO __LAB2
+__LAB1 :
+__LAB2 :
+__TMPB1 := MBS_SOLARPANEL_MSG [ __CDINT0000000D ]
+STS_SOLARMODBUSERROR := __TMPB1
+__TMPB1 := TEMP_CHARGESTATE = __UINT_NULL
+_IF _NOT __TMPB1 _GOTO __LAB3
+STS_CHARGESTATE := __TMPM1
+_GOTO __LAB4
+__LAB3 :
+__TMPB1 := TEMP_CHARGESTATE = __CUINT00000001
+_IF _NOT __TMPB1 _GOTO __LAB5
+STS_CHARGESTATE := __TMPM2
+_GOTO __LAB4
+__LAB5 :
+__TMPB1 := TEMP_CHARGESTATE = __CUINT00000002
+_IF _NOT __TMPB1 _GOTO __LAB6
+STS_CHARGESTATE := __TMPM3
+_GOTO __LAB4
+__LAB6 :
+__TMPB1 := TEMP_CHARGESTATE = __CUINT00000003
+_IF _NOT __TMPB1 _GOTO __LAB7
+STS_CHARGESTATE := __TMPM4
+_GOTO __LAB4
+__LAB7 :
+__TMPB1 := TEMP_CHARGESTATE = __CUINT00000004
+_IF _NOT __TMPB1 _GOTO __LAB8
+STS_CHARGESTATE := __TMPM5
+_GOTO __LAB4
+__LAB8 :
+__TMPB1 := TEMP_CHARGESTATE = __CUINT00000005
+_IF _NOT __TMPB1 _GOTO __LAB9
+STS_CHARGESTATE := __TMPM6
+_GOTO __LAB4
+__LAB9 :
+__TMPB1 := TEMP_CHARGESTATE = __CUINT00000006
+_IF _NOT __TMPB1 _GOTO __LABa
+STS_CHARGESTATE := __TMPM7
+_GOTO __LAB4
+__LABa :
+__TMPB1 := TEMP_CHARGESTATE = __CUINT00000007
+_IF _NOT __TMPB1 _GOTO __LABb
+STS_CHARGESTATE := __TMPM8
+_GOTO __LAB4
+__LABb :
+__TMPB1 := TEMP_CHARGESTATE = __CUINT00000008
+_IF _NOT __TMPB1 _GOTO __LABc
+STS_CHARGESTATE := __TMPM9
+_GOTO __LAB4
+__LABc :
+STS_CHARGESTATE := __TMPM10
+__LAB4 :
+__TMPB1 := TEMP_ARRAYFAULT = __UINT_NULL
+_IF _NOT __TMPB1 _GOTO __LABd
+STS_ARRAYFAULT := __TMPM11
+_GOTO __LABe
+__LABd :
+STS_ARRAYFAULT := __STRING_NULL
+_PUSH_PAR TEMP_ARRAYFAULT
+_PUSH_PAR __DINT_NULL
+__TMPB1 := _CALL __ANARBIT
+_IF _NOT __TMPB1 _GOTO __LABf
+__TMPM13 := STS_ARRAYFAULT + __TMPM12
+STS_ARRAYFAULT := __TMPM13
+_GOTO __LAB10
+__LABf :
+_PUSH_PAR TEMP_ARRAYFAULT
+_PUSH_PAR __CDINT00000001
+__TMPB1 := _CALL __ANARBIT
+_IF _NOT __TMPB1 _GOTO __LAB11
+__TMPM13 := STS_ARRAYFAULT + __TMPM14
+STS_ARRAYFAULT := __TMPM13
+_GOTO __LAB10
+__LAB11 :
+_PUSH_PAR TEMP_ARRAYFAULT
+_PUSH_PAR __CDINT00000002
+__TMPB1 := _CALL __ANARBIT
+_IF _NOT __TMPB1 _GOTO __LAB12
+__TMPM13 := STS_ARRAYFAULT + __TMPM15
+STS_ARRAYFAULT := __TMPM13
+_GOTO __LAB10
+__LAB12 :
+_PUSH_PAR TEMP_ARRAYFAULT
+_PUSH_PAR __CDINT00000003
+__TMPB1 := _CALL __ANARBIT
+_IF _NOT __TMPB1 _GOTO __LAB13
+__TMPM13 := STS_ARRAYFAULT + __TMPM16
+STS_ARRAYFAULT := __TMPM13
+_GOTO __LAB10
+__LAB13 :
+_PUSH_PAR TEMP_ARRAYFAULT
+_PUSH_PAR __CDINT00000004
+__TMPB1 := _CALL __ANARBIT
+_IF _NOT __TMPB1 _GOTO __LAB14
+__TMPM13 := STS_ARRAYFAULT + __TMPM17
+STS_ARRAYFAULT := __TMPM13
+_GOTO __LAB10
+__LAB14 :
+_PUSH_PAR TEMP_ARRAYFAULT
+_PUSH_PAR __CDINT00000005
+__TMPB1 := _CALL __ANARBIT
+_IF _NOT __TMPB1 _GOTO __LAB15
+__TMPM13 := STS_ARRAYFAULT + __TMPM18
+STS_ARRAYFAULT := __TMPM13
+_GOTO __LAB10
+__LAB15 :
+_PUSH_PAR TEMP_ARRAYFAULT
+_PUSH_PAR __CDINT00000006
+__TMPB1 := _CALL __ANARBIT
+_IF _NOT __TMPB1 _GOTO __LAB16
+__TMPM13 := STS_ARRAYFAULT + __TMPM19
+STS_ARRAYFAULT := __TMPM13
+_GOTO __LAB10
+__LAB16 :
+_PUSH_PAR TEMP_ARRAYFAULT
+_PUSH_PAR __CDINT00000007
+__TMPB1 := _CALL __ANARBIT
+_IF _NOT __TMPB1 _GOTO __LAB17
+__TMPM13 := STS_ARRAYFAULT + __TMPM20
+STS_ARRAYFAULT := __TMPM13
+_GOTO __LAB10
+__LAB17 :
+_PUSH_PAR TEMP_ARRAYFAULT
+_PUSH_PAR __CDINT00000008
+__TMPB1 := _CALL __ANARBIT
+_IF _NOT __TMPB1 _GOTO __LAB18
+__TMPM13 := STS_ARRAYFAULT + __TMPM21
+STS_ARRAYFAULT := __TMPM13
+_GOTO __LAB10
+__LAB18 :
+_PUSH_PAR TEMP_ARRAYFAULT
+_PUSH_PAR __CDINT00000009
+__TMPB1 := _CALL __ANARBIT
+_IF _NOT __TMPB1 _GOTO __LAB19
+__TMPM13 := STS_ARRAYFAULT + __TMPM22
+STS_ARRAYFAULT := __TMPM13
+_GOTO __LAB10
+__LAB19 :
+_PUSH_PAR TEMP_ARRAYFAULT
+_PUSH_PAR __CDINT0000000A
+__TMPB1 := _CALL __ANARBIT
+_IF _NOT __TMPB1 _GOTO __LAB1a
+__TMPM13 := STS_ARRAYFAULT + __TMPM23
+STS_ARRAYFAULT := __TMPM13
+_GOTO __LAB10
+__LAB1a :
+_PUSH_PAR TEMP_ARRAYFAULT
+_PUSH_PAR __CDINT0000000B
+__TMPB1 := _CALL __ANARBIT
+_IF _NOT __TMPB1 _GOTO __LAB1b
+__TMPM13 := STS_ARRAYFAULT + __TMPM24
+STS_ARRAYFAULT := __TMPM13
+_GOTO __LAB10
+__LAB1b :
+__LAB10 :
+_PUSH_PAR STS_ARRAYFAULT
+__TMPI1 := _CALL MLEN
+__TMPI1 := __TMPI1 - __CDINT00000002
+_PUSH_PAR STS_ARRAYFAULT
+_PUSH_PAR __TMPI1
+__TMPM13 := _CALL RIGHT
+STS_ARRAYFAULT := __TMPM13
+__LABe :
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SOLARPANELMB.rtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SOLARPANELMB.rtc
new file mode 100644
index 0000000..fcddf6b
Binary files /dev/null and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SOLARPANELMB.rtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SolarPanelMb.AcfMlge b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SolarPanelMb.AcfMlge
new file mode 100644
index 0000000..6c09cd5
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SolarPanelMb.AcfMlge
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SolarPanelMb.stf b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SolarPanelMb.stf
new file mode 100644
index 0000000..9f67791
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/SolarPanelMb.stf
@@ -0,0 +1,87 @@
+PROGRAM SolarPanelMb
+ModbusTimer(NOT ModbusTimer.Q, ModbusScanRate);
+
+(* ============== *)
+(* FLOW RATE *)
+(* ============== *)
+mbs_SolarPanel_TargetCfg.Addr := cfg_SolarPanel_Register;
+mbs_SolarPanel_TargetCfg.Node := cfg_SolarPanel_ModbusNode;
+
+mbs_SolarPanel_LocalCfg.Channel := 2;
+mbs_SolarPanel_LocalCfg.Cmd := READ_CMD;
+mbs_SolarPanel_LocalCfg.TriggerType := mbs_TriggerType;
+mbs_SolarPanel_LocalCfg.ElementCnt := 35;
+mbs_SolarPanel_MSG(ModbusTimer.Q, mbs_Cancel, mbs_SolarPanel_LocalCfg, mbs_SolarPanel_TargetCfg, mbs_SolarPanel_Data);
+
+IF mbs_SolarPanel_MSG.Q THEN
+ val_SolarArrayCurrent := WordToFloat16(mbs_SolarPanel_Data[18]);
+ val_SolarBatteryTerminalVoltage := WordToFloat16(mbs_SolarPanel_Data[19]);
+ val_SolarArrayVoltage := WordToFloat16(mbs_SolarPanel_Data[20]);
+ val_SolarLoadVoltage := WordToFloat16(mbs_SolarPanel_Data[21]);
+ val_SolarLoadCurrent := WordToFloat16(mbs_SolarPanel_Data[23]);
+ val_SolarBatteryTemperature := WordToFloat16(mbs_SolarPanel_Data[28]);
+ val_SolarAmbientTemperature := WordToFloat16(mbs_SolarPanel_Data[29]);
+ temp_ChargeState := ANY_TO_UINT(mbs_SolarPanel_Data[34]);
+ temp_ArrayFault := ANY_TO_UINT(mbs_SolarPanel_Data[35]);
+END_IF;
+
+sts_SolarModbusError := mbs_SolarPanel_MSG.Error;
+
+(* Map Charge State *)
+IF temp_ChargeState = 0 THEN
+ sts_ChargeState := 'Start';
+ELSIF temp_ChargeState = 1 THEN
+ sts_ChargeState := 'Night Check';
+ELSIF temp_ChargeState = 2 THEN
+ sts_ChargeState := 'Disconnect';
+ELSIF temp_ChargeState = 3 THEN
+ sts_ChargeState := 'Night';
+ELSIF temp_ChargeState = 4 THEN
+ sts_ChargeState := 'Fault';
+ELSIF temp_ChargeState = 5 THEN
+ sts_ChargeState := 'Bulk';
+ELSIF temp_ChargeState = 6 THEN
+ sts_ChargeState := 'Absorption';
+ELSIF temp_ChargeState = 7 THEN
+ sts_ChargeState := 'Float';
+ELSIF temp_ChargeState = 8 THEN
+ sts_ChargeState := 'Equalize';
+ELSE
+ sts_ChargeState := 'Unknown';
+END_IF;
+
+(* Map Array Fault *)
+IF temp_ArrayFault = 0 THEN
+ sts_ArrayFault := 'OK';
+ELSE
+ sts_ArrayFault := '';
+ IF temp_ArrayFault.0 THEN
+ sts_ArrayFault := sts_ArrayFault + ', Overcurrent Phase 1';
+ ELSIF temp_ArrayFault.1 THEN
+ sts_ArrayFault := sts_ArrayFault + ', FET(s) Shorted';
+ ELSIF temp_ArrayFault.2 THEN
+ sts_ArrayFault := sts_ArrayFault + ', Software Bug';
+ ELSIF temp_ArrayFault.3 THEN
+ sts_ArrayFault := sts_ArrayFault + ', Battery High Voltage Disconnect';
+ ELSIF temp_ArrayFault.4 THEN
+ sts_ArrayFault := sts_ArrayFault + ', Array High Voltage Disconnect';
+ ELSIF temp_ArrayFault.5 THEN
+ sts_ArrayFault := sts_ArrayFault + ', EEPROM Setting Edit (reset required)';
+ ELSIF temp_ArrayFault.6 THEN
+ sts_ArrayFault := sts_ArrayFault + ', RTS Shorted';
+ ELSIF temp_ArrayFault.7 THEN
+ sts_ArrayFault := sts_ArrayFault + ', RTS was valid, now disconnected';
+ ELSIF temp_ArrayFault.8 THEN
+ sts_ArrayFault := sts_ArrayFault + ', Local temp sensor failed';
+ ELSIF temp_ArrayFault.9 THEN
+ sts_ArrayFault := sts_ArrayFault + ', Battery Low Voltage Disconnect';
+ ELSIF temp_ArrayFault.10 THEN
+ sts_ArrayFault := sts_ArrayFault + ', DIP Switch Changed';
+ ELSIF temp_ArrayFault.11 THEN
+ sts_ArrayFault := sts_ArrayFault + ', Processor Supply Fault';
+ END_IF;
+
+ sts_ArrayFault := RIGHT(sts_ArrayFault, MLEN(sts_ArrayFault) - 2);
+END_IF;
+
+END_PROGRAM
\ No newline at end of file
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WATCHDOG.rtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WATCHDOG.rtc
index a739d78..4d69976 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WATCHDOG.rtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WATCHDOG.rtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WORDSTOREAL.rtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WORDSTOREAL.rtc
index dc2dd52..7a604dc 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WORDSTOREAL.rtc and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WORDSTOREAL.rtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WORDTOFLOAT16.dop b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WORDTOFLOAT16.dop
new file mode 100644
index 0000000..49c7ad0
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WORDTOFLOAT16.dop
@@ -0,0 +1 @@
+WORDTOFLOAT16(153):F,REVERSEUINT(154);F,EXPT();F,POW();
\ No newline at end of file
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WORDTOFLOAT16.ic b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WORDTOFLOAT16.ic
new file mode 100644
index 0000000..b54dc5f
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WORDTOFLOAT16.ic
@@ -0,0 +1,221 @@
+_PUSH_PAR INP_INT
+__TMPUIN1 := _CALL ANY_TO_UINT
+_PUSH_PAR __TMPUIN1
+__TMPUIN2 := _CALL REVERSEUINT
+REVERSEDINPUT := __TMPUIN2
+SIGN := __TMPR1
+FRACTION := __TMPR2
+EXPONENT := __TMPR2
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __DINT_NULL
+__TMPB1 := _CALL __ANARBIT
+_IF _NOT __TMPB1 _GOTO __LAB1
+__TMPR3 := - __TMPR1
+SIGN := __TMPR3
+_GOTO __LAB2
+__LAB1 :
+__LAB2 :
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT00000005
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __DINT_NULL
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := EXPONENT + __TMPR3
+EXPONENT := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT00000004
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT00000001
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := EXPONENT + __TMPR3
+EXPONENT := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT00000003
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT00000002
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := EXPONENT + __TMPR3
+EXPONENT := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT00000002
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT00000003
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := EXPONENT + __TMPR3
+EXPONENT := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT00000001
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT00000004
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := EXPONENT + __TMPR3
+EXPONENT := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT0000000F
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __DINT_NULL
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := FRACTION + __TMPR3
+FRACTION := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT0000000E
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT00000001
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := FRACTION + __TMPR3
+FRACTION := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT0000000D
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT00000002
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := FRACTION + __TMPR3
+FRACTION := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT0000000C
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT00000003
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := FRACTION + __TMPR3
+FRACTION := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT0000000B
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT00000004
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := FRACTION + __TMPR3
+FRACTION := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT0000000A
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT00000005
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := FRACTION + __TMPR3
+FRACTION := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT00000009
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT00000006
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := FRACTION + __TMPR3
+FRACTION := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT00000008
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT00000007
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := FRACTION + __TMPR3
+FRACTION := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT00000007
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT00000008
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := FRACTION + __TMPR3
+FRACTION := __TMPR6
+_PUSH_PAR REVERSEDINPUT
+_PUSH_PAR __CDINT00000006
+__TMPB1 := _CALL __ANARBIT
+_PUSH_PAR __TMPB1
+__TMPR3 := _CALL ANY_TO_BOOL
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT00000009
+__TMPR5 := _CALL EXPT
+__TMPR3 := __TMPR3 * __TMPR5
+__TMPR6 := FRACTION + __TMPR3
+FRACTION := __TMPR6
+__TMPB1 := EXPONENT = __TMPR2
+_IF _NOT __TMPB1 _GOTO __LAB3
+__TMPI1 := - __CDINT0000000E
+_PUSH_PAR __TMPR4
+_PUSH_PAR __TMPI1
+__TMPR3 := _CALL EXPT
+__TMPR5 := SIGN * __TMPR3
+__TMPR5 := __TMPR5 * FRACTION
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT0000000A
+__TMPR6 := _CALL EXPT
+__TMPR5 := __TMPR5 / __TMPR6
+WORDTOFLOAT16 := __TMPR5
+_GOTO __LAB4
+__LAB3 :
+__TMPB1 := EXPONENT = __TMPR7
+_IF _NOT __TMPB1 _GOTO __LAB5
+__TMPB2 := FRACTION = __TMPR2
+_IF _NOT __TMPB2 _GOTO __LAB6
+WORDTOFLOAT16 := __TMPR2
+_GOTO __LAB7
+__LAB6 :
+WORDTOFLOAT16 := __TMPR2
+__LAB7 :
+_GOTO __LAB4
+__LAB5 :
+__TMPR3 := EXPONENT - __TMPR8
+_PUSH_PAR __TMPR4
+_PUSH_PAR __TMPR3
+__TMPR5 := _CALL POW
+__TMPR6 := SIGN * __TMPR5
+_PUSH_PAR __TMPR4
+_PUSH_PAR __CDINT0000000A
+__TMPR9 := _CALL EXPT
+__TMPR10 := FRACTION / __TMPR9
+__TMPR11 := __TMPR1 + __TMPR10
+__TMPR6 := __TMPR6 * __TMPR11
+WORDTOFLOAT16 := __TMPR6
+__LAB4 :
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WORDTOFLOAT16.rtc b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WORDTOFLOAT16.rtc
new file mode 100644
index 0000000..38dd1ff
Binary files /dev/null and b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WORDTOFLOAT16.rtc differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WordToFloat16.AcfMlge b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WordToFloat16.AcfMlge
new file mode 100644
index 0000000..6c09cd5
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WordToFloat16.AcfMlge
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WordToFloat16.stf b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WordToFloat16.stf
new file mode 100644
index 0000000..97d0d14
--- /dev/null
+++ b/Pioneer Ghost Meters/Controller/Controller/Micro820/Micro820/WordToFloat16.stf
@@ -0,0 +1,56 @@
+FUNCTION WordToFloat16
+(* WORD TO FLOAT 16 *)
+(* ================================ *)
+(* Developed by: Patrick McDonagh *)
+(* January 30, 2018 *)
+(* ================================ *)
+(* Converts a WORD data type, *)
+(* typically from a modbus data *)
+(* source, into a IEEE-754 Binary16 *)
+(* (also known as Float16) value. *)
+(* Returns a REAL data type. *)
+
+reversedInput := ReverseUINT(ANY_TO_UINT(inp_Int));
+
+sign := 1.0;
+fraction := 0.0;
+exponent := 0.0;
+
+IF reversedInput.0 THEN
+ sign := -1.0;
+END_IF;
+
+(* Calculate the exponent *)
+exponent := exponent + ANY_TO_REAL(reversedInput.5) * EXPT(2.0, 0);
+exponent := exponent + ANY_TO_REAL(reversedInput.4) * EXPT(2.0, 1);
+exponent := exponent + ANY_TO_REAL(reversedInput.3) * EXPT(2.0, 2);
+exponent := exponent + ANY_TO_REAL(reversedInput.2) * EXPT(2.0, 3);
+exponent := exponent + ANY_TO_REAL(reversedInput.1) * EXPT(2.0, 4);
+
+(* Calculate the fraction *)
+fraction := fraction + ANY_TO_REAL(reversedInput.15) * EXPT(2.0, 0);
+fraction := fraction + ANY_TO_REAL(reversedInput.14) * EXPT(2.0, 1);
+fraction := fraction + ANY_TO_REAL(reversedInput.13) * EXPT(2.0, 2);
+fraction := fraction + ANY_TO_REAL(reversedInput.12) * EXPT(2.0, 3);
+fraction := fraction + ANY_TO_REAL(reversedInput.11) * EXPT(2.0, 4);
+fraction := fraction + ANY_TO_REAL(reversedInput.10) * EXPT(2.0, 5);
+fraction := fraction + ANY_TO_REAL(reversedInput.9) * EXPT(2.0, 6);
+fraction := fraction + ANY_TO_REAL(reversedInput.8) * EXPT(2.0, 7);
+fraction := fraction + ANY_TO_REAL(reversedInput.7) * EXPT(2.0, 8);
+fraction := fraction + ANY_TO_REAL(reversedInput.6) * EXPT(2.0, 9);
+
+
+IF exponent = 0.0 THEN
+ WordToFloat16 := sign * EXPT(2.0, -14) * fraction / EXPT(2.0, 10);
+ELSIF exponent = 31.0 THEN
+ IF fraction = 0.0 THEN
+ (* THIS SHOULD RETURN sign * infinity *)
+ WordToFloat16 := 0.0;
+ ELSE
+ (*THIS SHOULD RETURN NaN *)
+ WordToFloat16 := 0.0;
+ END_IF;
+ELSE
+ WordToFloat16 := sign * POW(2.0, exponent - 15.0) * (1.0 + fraction / EXPT(2.0, 10));
+END_IF;
+END_FUNCTION
\ No newline at end of file
diff --git a/Pioneer Ghost Meters/Controller/Controller/PrjLibrary.mdb b/Pioneer Ghost Meters/Controller/Controller/PrjLibrary.mdb
index 72efade..5445f9a 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/PrjLibrary.mdb and b/Pioneer Ghost Meters/Controller/Controller/PrjLibrary.mdb differ
diff --git a/Pioneer Ghost Meters/Controller/Controller/RMD.info b/Pioneer Ghost Meters/Controller/Controller/RMD.info
index 6572d3c..3a98e98 100644
--- a/Pioneer Ghost Meters/Controller/Controller/RMD.info
+++ b/Pioneer Ghost Meters/Controller/Controller/RMD.info
@@ -1,2 +1,2 @@
[RMDManager]
-TASK=REBUILD
+TASK=BUILD
diff --git a/Pioneer Ghost Meters/Controller/Controller/persist.ccwx b/Pioneer Ghost Meters/Controller/Controller/persist.ccwx
index 7ccbf90..1764ecd 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller/persist.ccwx and b/Pioneer Ghost Meters/Controller/Controller/persist.ccwx differ
diff --git a/Pioneer Ghost Meters/Controller/Controller_Backup.zip b/Pioneer Ghost Meters/Controller/Controller_Backup.zip
index a28bd54..3faea47 100644
Binary files a/Pioneer Ghost Meters/Controller/Controller_Backup.zip and b/Pioneer Ghost Meters/Controller/Controller_Backup.zip differ
diff --git a/Pioneer Ghost Meters/Controller/LogicalValues/ExtendedInfo.xml b/Pioneer Ghost Meters/Controller/LogicalValues/ExtendedInfo.xml
index 853d103..7d5db6d 100644
--- a/Pioneer Ghost Meters/Controller/LogicalValues/ExtendedInfo.xml
+++ b/Pioneer Ghost Meters/Controller/LogicalValues/ExtendedInfo.xml
@@ -1,5 +1,6 @@
+
diff --git a/Pioneer Ghost Meters/Controller/MLGE/ExtendedInfo.xml b/Pioneer Ghost Meters/Controller/MLGE/ExtendedInfo.xml
index 4c55a03..73d32b4 100644
--- a/Pioneer Ghost Meters/Controller/MLGE/ExtendedInfo.xml
+++ b/Pioneer Ghost Meters/Controller/MLGE/ExtendedInfo.xml
@@ -1,11 +1,20 @@
+
+ ReverseUINT.AcfMlge
+
WordsToReal.AcfMlge
FlowTotalUnits.AcfMlge
+
+ SolarPanelMb.AcfMlge
+
+
+ WordToFloat16.AcfMlge
+
FlowRateUnits.AcfMlge
diff --git a/Pioneer Ghost Meters/Pioneer Ghost Meters.v12.ccwsuo b/Pioneer Ghost Meters/Pioneer Ghost Meters.v12.ccwsuo
index f3c3122..5b3ed6a 100644
Binary files a/Pioneer Ghost Meters/Pioneer Ghost Meters.v12.ccwsuo and b/Pioneer Ghost Meters/Pioneer Ghost Meters.v12.ccwsuo differ
diff --git a/README.md b/README.md
index 1484537..404b39c 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,16 @@
# Pioneer-GhostMeters
+
+## Modbus Parameters
+
+All devices need to be configured with the following Modbus Parameters:
+
+- Baud Rate: 19200
+- Parity: Even
+- Stop Bits: 1
+
+### Modbus Addresses
+
+| Device | Address |
+| -------------------- | ----------- |
+| Flowmeter | 1 |
+| Solar Panel Charger | 20 |
diff --git a/pioneerfracskid/python-driver/fracskid.py b/pioneerfracskid/python-driver/fracskid.py
index e59da5a..55f8714 100644
--- a/pioneerfracskid/python-driver/fracskid.py
+++ b/pioneerfracskid/python-driver/fracskid.py
@@ -35,7 +35,7 @@ logger.info("fracskid startup")
# GLOBAL VARIABLES
WATCHDOG_SEND_PERIOD = 3600 # Seconds, the longest amount of time before sending the watchdog status
-PLC_IP_ADDRESS = "10.20.4.40"
+PLC_IP_ADDRESS = "192.168.1.10"
CHANNELS = []
# PERSISTENCE FILE