update x test scrittura string

This commit is contained in:
Samuele E. Locatelli
2022-07-29 16:07:26 +02:00
parent a200f1455e
commit 937fffb2c4
3 changed files with 16 additions and 32 deletions
+1 -1
View File
@@ -153,7 +153,7 @@
"name": "PPM",
"description": "Velocita espressa come Pacchi Per Minuto",
"memAddr": "41106",
"tipoMem": "Real",
"tipoMem": "RealLH",
"index": 1106,
"size": 2,
"unit": "#",
+14 -31
View File
@@ -540,15 +540,16 @@ namespace IOB_WIN_NEXT
/// </summary>
/// <param name="startAddr"></param>
/// <param name="currRegVal">Valore in formato INT da registri</param>
/// <param name="baseAddr">Indirizzo di base dei registri</param>
/// <returns></returns>
public bool writeInputReg(int startAddr, int[] currRegVal)
public bool writeInputReg(int startAddr, int[] currRegVal, int baseAddr)
{
bool answ = false;
if (currPLC.Connected)
{
try
{
currPLC.WriteMultipleRegisters(startAddr + deltaBase, currRegVal);
currPLC.WriteMultipleRegisters(startAddr + deltaBase + (40000 - baseAddr), currRegVal);
answ = true;
}
catch
@@ -797,13 +798,13 @@ namespace IOB_WIN_NEXT
CurrVal = ModbusClient.ConvertIntToRegisters(valInt);
}
fatto = writeInputReg(currMem.index, CurrVal);
fatto = writeInputReg(currMem.index, CurrVal, parametri.holdRegBaseAddr);
break;
case plcDataType.DInt:
valUInt = getScaledUInt(currMem, true);
CurrVal = ModbusClient.ConvertLongToRegisters(valInt);
fatto = writeInputReg(currMem.index, CurrVal);
fatto = writeInputReg(currMem.index, CurrVal, parametri.holdRegBaseAddr);
break;
//case plcDataType.Word:
@@ -820,19 +821,23 @@ namespace IOB_WIN_NEXT
case plcDataType.RealHL:
valDouble = getScaledDouble(currMem);
CurrVal = ModbusClient.ConvertFloatToRegisters((float)valDouble, ModbusClient.RegisterOrder.HighLow);
fatto = writeInputReg(currMem.index, CurrVal);
fatto = writeInputReg(currMem.index, CurrVal, parametri.holdRegBaseAddr);
break;
case plcDataType.FloatBADC:
case plcDataType.RealLH:
valDouble = getScaledDouble(currMem);
CurrVal = ModbusClient.ConvertFloatToRegisters((float)valDouble, ModbusClient.RegisterOrder.LowHigh);
fatto = writeInputReg(currMem.index, CurrVal);
fatto = writeInputReg(currMem.index, CurrVal, parametri.holdRegBaseAddr);
break;
case plcDataType.String:
CurrVal = ModbusClient.ConvertStringToRegisters(currMem.value);
fatto = writeInputReg(currMem.index, CurrVal);
CurrVal = ModbusClient.ConvertStringToRegisters(currMem.value.PadRight(currMem.size * 2));
var regLen = ModbusClient.ConvertIntToRegisters(currMem.size * 2 - 2);
Array.Copy(regLen, 0, CurrVal, CurrVal.Length - regLen.Length, regLen.Length);
//CurrVal[CurrVal.Length - 2] = regLen[1];
//CurrVal[CurrVal.Length - 1] = regLen[0];
fatto = writeInputReg(currMem.index, CurrVal, parametri.holdRegBaseAddr);
break;
default:
@@ -1348,14 +1353,6 @@ namespace IOB_WIN_NEXT
// valore string...
valString = ModbusClient.ConvertRegistersToString(listInt, 0, item.Value.size);
}
//else if (item.Value.unit == "EPOCH")
//{
// // devo prendere i dati come UInt quindi li metto insieme upper/lower
// UInt32 uint32 = (uint)listInt[0];
// uint32 <<= 16;
// uint32 |= (uint)listInt[1];
// valore = (double)uint32;
//}
else
{
// valori numerici...
@@ -1416,22 +1413,8 @@ namespace IOB_WIN_NEXT
{
// valore string...
valString = ModbusClient.ConvertRegistersToString(listInt, 0, item.Value.size);
valString = valString.Replace("\n", "").Replace("\r", "").Replace("\0", string.Empty).Trim();
}
//else if (item.Value.unit == "EPOCH")
//{
// // devo prendere i dati come UInt quindi li metto insieme upper/lower
// var hVal = BitConverter.ToUInt16(BitConverter.GetBytes(listInt[0]), 0);
// var lVal = BitConverter.ToUInt16(BitConverter.GetBytes(listInt[1]), 0);
// // ricostruisco da due Uint16 un Uint32
// UInt32 uint32 = hVal;
// uint32 <<= 16;
// uint32 |= lVal;
// valore = (double)uint32;
// //byte[] rawData = new byte[4];
// //Array.Copy(BitConverter.GetBytes(listInt[0]), 0, rawData, 2, 2);
// //Array.Copy(BitConverter.GetBytes(listInt[1]), 0, rawData, 0, 2);
// //var valTest = BitConverter.ToUInt32(rawData, 0);
//}
else
{
valore = convertFromReg(listInt, item.Value.size, item.Value.tipoMem);
+1
View File
@@ -222,5 +222,6 @@ namespace IOB_WIN_NEXT
}
#endregion Protected Methods
}
}