Modbus logging with child component names, ver. 3.1.1606
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user