PLUS+1 Software > Function Library

TSC1 Lost Messages

(1/3) > >>

Hello All,

I have a really weird problem.  I'm using the TSC1 Block from the Danfoss Function Block Library V4.00 to control the engine RPM.  Most of the time it works great, but occasionally I get a fault from the engine, a J1939 Network Abnormal Update error.  I have analyzed the CANBus with CANKing and have found that there are missing TSC1 messages.  The requested transmission rate in the block is 10ms, and the transmission rate does actually hold to this, most of the time.  There is the occasional instance where it's more than this, 30ms or 40ms.  Then, out of no where it goes to 1000ms and the engine throws the fault (I have found out from the engine manufacturer that it throws this fault when the transmission rate goes above 90ms).  The really weird thing is that after the instance where TSC1 is missing for 1000ms, it comes back but the actual transmission rate changes to about 0.6ms and it completely overloads the buss.  The requested transmission rate in the block is still fixed at 10ms (I'm using a 3-digit Autotype fixed value).  I'm baffled why the TSC1 message would go missing for 1000ms and then come back at a 0.6ms transmission rate.  Any insight will be greatly appreciated.



What is your bus load like?  General rule of thumb would be to keep it under 60%.  I am guessing it could be something else that is flooding the bus and the pending TSC1 messages build up a back log?

Also what is your loop time like? Is that more than 10ms?  Have you tried slowing down the messages to 50ms to see if that is more reliable?



Create your own CAN message instead of using the TS1 library block.  Set your exec time to 10ms.  Hold the send on the CAN message to "T". 

Assuming your exec time is currently less than 10ms, that should work. 

If you are sending out lots of other can messages, make sure they are not being sent on the same clock cycle.  Use different oscillators or stagger the transmit signals.

Hope that helps.

My buss load is about 22% according to CANKing.  My requested loop time is 5ms.  I had it at 1ms because that's how the template is set up by default.  When it was at 1ms the TSC1 transmission rate was at 17ms even though the requested rate is 10ms.  So I changed the requested loop time to 5ms and the TSC1 rate changed to 10ms as requested.  Should I try slowing down the loop time even more?  10 ms maybe?

I can also try slowing down the request transmission rate of TSC1, but doesn't J1939 state that it should be 10ms? 

It does state that it should be 10ms.  I'd keep the loop time at the default 1, so when you do that it just goes as fast as it can while still executing everything.  Is your program pretty big?  Maybe watch the loop time with these different settings and see if the TSC1 transmission rate matches up with the loop time.

Also, maybe try unplugging everything else from the CAN bus and then analyzing the transmission rate.  Does it change with nothing else plugged in?


[0] Message Index

[#] Next page

Go to full version