Modbus logging with child component names, ver. 3.1.1606

This commit is contained in:
Milan Hanajik
2021-04-09 16:29:24 +02:00
parent f33bc4f167
commit 9724e8779a
16 changed files with 183 additions and 164 deletions
+36 -17
View File
@@ -23,7 +23,7 @@ namespace TBF.Rig.ControlBoard.Papouch
readonly PapouchCBCfg cbCfg;
GenericDevices.IModbus modbus;
TBF.Rig.Modbus.Common.Modbus modbus;
const int quidosCount = 4;
QuidoVariant[] quidoVariants;
@@ -74,8 +74,8 @@ namespace TBF.Rig.ControlBoard.Papouch
public override void Initialize()
{
modbus = (GenericDevices.IModbus)TbfComponents.FindComponent(cbCfg.ParentName);
if (modbus == null) throw new Exception("Cannot find " + Name + " parent");
modbus = TbfComponents.FindComponent(cbCfg.ParentName) as TBF.Rig.Modbus.Common.Modbus;
if (modbus == null) throw new Exception("Cannot find " + Name + " parent (Modbus)");
quidoVariants = new QuidoVariant[quidosCount] { cbCfg.Variant1, cbCfg.Variant2, cbCfg.Variant3, cbCfg.Variant4 };
modbusAddresses = new int[quidosCount] { cbCfg.ModbusAddress1, cbCfg.ModbusAddress2, cbCfg.ModbusAddress3, cbCfg.ModbusAddress4 };
@@ -85,6 +85,14 @@ namespace TBF.Rig.ControlBoard.Papouch
routeInputMasks = new UInt128[quidosCount] { 0, 0, 0, 0 };
lastStateMachineTimes = new int[quidosCount] { 0, 0, 0, 0 };
for (int quidoIx = 0; quidoIx < quidosCount; quidoIx++)
{
if (quidoVariants[quidoIx] != QuidoVariant.None)
{
modbus.ComponentNames[modbusAddresses[quidoIx]] = string.Format("{0}{1}", Name, quidoIx + 1);
}
}
for (int i = 0; i < 128; i++)
{
bool conflictAvoidanceFlag = false;
@@ -175,14 +183,17 @@ namespace TBF.Rig.ControlBoard.Papouch
{
for (int quidoIx = 0; quidoIx < quidosCount; quidoIx++)
{
if ((currentOutputs & routeOutputMasks[quidoIx]) != (benchModelRoute & routeOutputMasks[quidoIx]) ||
(StateMachine.Time - lastStateMachineTimes[quidoIx]) >= 5)
if (quidoVariants[quidoIx] != QuidoVariant.None)
{
SendOutputs(quidoIx, benchModelRoute, offsetsOutputs[quidoIx]);
}
else
{
RequestInputs(quidoIx);
if ((currentOutputs & routeOutputMasks[quidoIx]) != (benchModelRoute & routeOutputMasks[quidoIx]) ||
(StateMachine.Time - lastStateMachineTimes[quidoIx]) >= 5)
{
SendOutputs(quidoIx, benchModelRoute, offsetsOutputs[quidoIx]);
}
else
{
RequestInputs(quidoIx);
}
}
}
}
@@ -208,7 +219,10 @@ namespace TBF.Rig.ControlBoard.Papouch
{
for (int quidoIx = 0; quidoIx < quidosCount; quidoIx++)
{
RequestInputs(quidoIx);
if (quidoVariants[quidoIx] != QuidoVariant.None)
{
RequestInputs(quidoIx);
}
}
}
@@ -216,7 +230,7 @@ namespace TBF.Rig.ControlBoard.Papouch
{
byte addr = (byte)modbusAddresses[quidoIx];
byte cmd = (byte)Function.ReadSingleInput;
modbus.SendMessage(new byte[] { addr, cmd, 0, 0, 0, 2, 0, 0 });
modbus.SendMessage(new byte[] { addr, cmd, 0, 0, 0, 2, 0, 0 }, string.Format("{0}{1}", Name, quidoIx + 1));
}
/// <summary>
@@ -227,7 +241,10 @@ namespace TBF.Rig.ControlBoard.Papouch
{
for (int quidoIx = 0; quidoIx < quidosCount; quidoIx++)
{
SendOutputs(quidoIx, route, offsetsOutputs[quidoIx]);
if (quidoVariants[quidoIx] != QuidoVariant.None)
{
SendOutputs(quidoIx, route, offsetsOutputs[quidoIx]);
}
}
}
@@ -242,18 +259,20 @@ namespace TBF.Rig.ControlBoard.Papouch
switch (quidoVariants[quidoIx])
{
case QuidoVariant.QuidoRS_4_4:
modbus.SendMessage(new byte[] { addr, cmd, 0, 0, 0, 4, 1, loByte, 0, 0 });
modbus.SendMessage(new byte[] { addr, cmd, 0, 0, 0, 4, 1, loByte, 0, 0 }, string.Format("{0}{1}", Name, quidoIx + 1));
break;
case QuidoVariant.QuidoRS_8_8:
modbus.SendMessage(new byte[] { addr, cmd, 0, 0, 0, 8, 1, loByte, 0, 0 });
modbus.SendMessage(new byte[] { addr, cmd, 0, 0, 0, 8, 1, loByte, 0, 0 }, string.Format("{0}{1}", Name, quidoIx + 1));
break;
case QuidoVariant.QuidoRS_2_16:
modbus.SendMessage(new byte[] { addr, cmd, 0, 0, 0, 16, 2, loByte, (byte)(outputs >> (offset + 8)), 0, 0 });
modbus.SendMessage(new byte[] { addr, cmd, 0, 0, 0, 16, 2, loByte, (byte)(outputs >> (offset + 8)), 0, 0 },
string.Format("{0}{1}", Name, quidoIx + 1));
break;
case QuidoVariant.QuidoRS_2_32:
modbus.SendMessage(new byte[] { addr, cmd, 0, 0, 0, 32, 4, loByte, (byte)(outputs >> (offset + 8)),
(byte)(outputs >> (offset + 16)),
(byte)(outputs >> (offset + 24)), 0, 0 });
(byte)(outputs >> (offset + 24)), 0, 0 },
string.Format("{0}{1}", Name, quidoIx + 1));
break;
}
}