andyf Posted October 10, 2014 Share Posted October 10, 2014 I am running firmware version 1.6.1.1 and noticed that when a motor hits a soft plus/minus limit there motor stops, but the motor status word bits do not go high. As a result the Motor[x].SoftPlusLimit and Motor[x].SoftMinusLimit do not go high. This also impacts geterrors Please advise Link to comment Share on other sites More sharing options...
curtwilson Posted October 13, 2014 Share Posted October 13, 2014 The soft overtravel limits work in several different ways at different points in the process, and it is important to understand these different modes. At move calculation time, a move's final destination can be checked against the soft limits, and if past a limit, the destination changed to equal the limit. This is not necessarily an error, but if this happens, the motor status bit SoftLimit is set (at the start of the move) and the SoftLimitDir status bit indicates which limit caused the destination to be changed. There are also checks done at move execution time. If the instantaneous commanded position goes past a soft limit, motion will be aborted and the appropriate error bit (SoftPlusLimit or SoftMinusLimit) will be set. The limits at execution time are (MaxPos + SoftLimitOffset) and (MinPos - SoftLimitOffset). If SoftLimitOffset is at its default value of 0, a move altered at calculation time to stop at the soft limit will not trip on the error and set the bit when it gets there, because some do not want this to be an error. If you set SoftLimitOffset to a small negative value, it will trip on the error and set the bit when it reaches the end. If you want this behavior, set SoftLimitOffset to a small negative value, such as -1 (feedback count). Link to comment Share on other sites More sharing options...
curtwilson Posted October 13, 2014 Share Posted October 13, 2014 The soft overtravel limits work in several different ways at different points in the process, and it is important to understand these different modes. At move calculation time, a move's final destination can be checked against the soft limits, and if past a limit, the destination changed to equal the limit. This is not necessarily an error, but if this happens, the motor status bit SoftLimit is set (at the start of the move) and the SoftLimitDir status bit indicates which limit caused the destination to be changed. There are also checks done at move execution time. If the instantaneous commanded position goes past a soft limit, motion will be aborted and the appropriate error bit (SoftPlusLimit or SoftMinusLimit) will be set. The limits at execution time are (MaxPos + SoftLimitOffset) and (MinPos - SoftLimitOffset). If SoftLimitOffset is at its default value of 0, a move altered at calculation time to stop at the soft limit will not trip on the error and set the bit when it gets there, because some do not want this to be an error. If you set SoftLimitOffset to a small negative value, it will trip on the error and set the bit when it reaches the end. If you want this behavior, set SoftLimitOffset to a small negative value, such as -1 (feedback count). Link to comment Share on other sites More sharing options...
andyf Posted October 13, 2014 Author Share Posted October 13, 2014 Thanks Curt, that did the trick. Link to comment Share on other sites More sharing options...
andyf Posted October 13, 2014 Author Share Posted October 13, 2014 Thanks Curt, that did the trick. Link to comment Share on other sites More sharing options...
Recommended Posts