Let's step back a second as you came in with one problem, we tested it elsewhere and it worked fine and you're now looking at other ways of solving the problem and not really getting anywhere.
Can you start from the beginning with a blank project and do this.
Link input 0.0 to OB40 in the hardware config.
Link input 0.1 to OB41 in the hardware config.
Create a Global DB with the following variables:
TimeIn - DTL
TimeOut - DTL
TimeDiff - Time
TimeInActive - Bool
TimeOutActive - Bool.
In OB40, place the RD_LOC_T instruction without any condition.
Map the RET_VAL to MW100 (not important now).
Map the Output to TimeIn.
Place a Set instruction for the bit TimeInActive.
In OB41, place the RD_LOC_T instruction without any condition.
Map the RET_VAL to MW200 (not important now).
Map the Output to TimeOut.
Place a Set instruction for the bit TimeOutActive.
In OB1, make an AND condition with TimeInActive and TimeOutActive and a T_DIFF block.
In the T_DIFF block, put TimeIn and TimeOut as the inputs and put TimeDiff as the output.
In the next rung place a reset condition for the TimeInActive and TimeOutActive bits. These don't quite matter, but are good for debugging.
This is literally all I did to have this functionality work in my program.
Test this first and worry about the rest or different way of doing it later.