|
|
|
@ -44,12 +44,21 @@ void modbusGet(void) {
|
|
|
|
case fcReadInputRegisters:
|
|
|
|
case fcReadInputRegisters:
|
|
|
|
if(modbusRequestedAddress() < 100)
|
|
|
|
if(modbusRequestedAddress() < 100)
|
|
|
|
modbusExchangeRegisters((void *)inStates,0,nrOfInputs/16);
|
|
|
|
modbusExchangeRegisters((void *)inStates,0,nrOfInputs/16);
|
|
|
|
else if(modbusRequestedAddress() < 200)
|
|
|
|
else if(modbusRequestedAddress() < 200){
|
|
|
|
modbusExchangeRegisters((void *)inStatesBothEdges,100,nrOfInputs/16);
|
|
|
|
modbusExchangeRegisters((void *)&inputEdgesBoth,100,nrOfInputs/16);
|
|
|
|
else if(modbusRequestedAddress() < 300)
|
|
|
|
for(uint16_t i = modbusDataLocation - 100; i < modbusDataLocation-100+(modbusDataAmount*16); i++)
|
|
|
|
modbusExchangeRegisters((void *)inStatesFallingEdge,200,nrOfInputs/16);
|
|
|
|
inputEdgesBoth &= ~(1 << i);
|
|
|
|
else if(modbusRequestedAddress() < 400)
|
|
|
|
}
|
|
|
|
modbusExchangeRegisters((void *)inStatesRisingEdge,300,nrOfInputs/16);
|
|
|
|
else if(modbusRequestedAddress() < 300){
|
|
|
|
|
|
|
|
modbusExchangeRegisters((void *)&inputEdgesFalling,200,nrOfInputs/16);
|
|
|
|
|
|
|
|
for(uint16_t i = modbusDataLocation - 200; i < modbusDataLocation-200+(modbusDataAmount*16); i++)
|
|
|
|
|
|
|
|
inputEdgesFalling &= ~(1 << i);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else if(modbusRequestedAddress() < 400){
|
|
|
|
|
|
|
|
modbusExchangeRegisters((void *)&inputEdgesRising,300,nrOfInputs/16);
|
|
|
|
|
|
|
|
for(uint16_t i = modbusDataLocation - 300; i < modbusDataLocation-300+(modbusDataAmount*16); i++)
|
|
|
|
|
|
|
|
inputEdgesRising &= ~(1 << i);
|
|
|
|
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case fcReadInputStatus:
|
|
|
|
case fcReadInputStatus:
|
|
|
|
|