Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1d662ecd43 | |||
| bea68c807b | |||
| 01a04d3b24 | |||
| 76cc48a49c | |||
| a9f623ba1d | |||
| 791e74f82f | |||
| 2dc10fe869 |
36
README.md
36
README.md
@@ -94,3 +94,39 @@ repository is checked out AND the change is commited (`git status` shows no
|
|||||||
non-committed changes). Please see the section "Usage as static dependency" in
|
non-committed changes). Please see the section "Usage as static dependency" in
|
||||||
https://gitea.psi.ch/lin-epics-modules/sinqMotor/src/branch/main/README.md for
|
https://gitea.psi.ch/lin-epics-modules/sinqMotor/src/branch/main/README.md for
|
||||||
more details.
|
more details.
|
||||||
|
|
||||||
|
## FAQ
|
||||||
|
### Axis hardware error at startup
|
||||||
|
|
||||||
|
If at IOC startup you are met with the following errors:
|
||||||
|
```
|
||||||
|
2026/02/02 16:56:49.470 Controller "turboPmac1", axis 3 => asynStatus turboPmacAxis::handleError(int, char*, int), line 735
|
||||||
|
Driver hardware error triggered.
|
||||||
|
2026/02/02 16:56:49.485 Controller "turboPmac1", axis 7 => asynStatus turboPmacAxis::handleError(int, char*, int), line 735
|
||||||
|
Driver hardware error triggered.
|
||||||
|
2026/02/02 16:56:49.492 Controller "turboPmac1", axis 8 => asynStatus turboPmacAxis::handleError(int, char*, int), line 735
|
||||||
|
Driver hardware error triggered.
|
||||||
|
```
|
||||||
|
You may need to reset to do a axis reset. This can be done with
|
||||||
|
`utils/writeRead.py`. The following example does so for axis 3.
|
||||||
|
|
||||||
|
Confirm the hardware error:
|
||||||
|
```
|
||||||
|
utils/writeRead.py 172.28.87.24:1025 P0301 # 03 specifies axis 3, 01 is the command to read out the error.
|
||||||
|
# If it returns 13 it's a hardware error.
|
||||||
|
# For the full list of errors see TurboPMAC_manual.pdf or src/turboPmacAxis.cpp, function "handleError".
|
||||||
|
```
|
||||||
|
Reset the axis:
|
||||||
|
```
|
||||||
|
utils/writeRead.py 172.28.87.24:1025 P0301=0
|
||||||
|
```
|
||||||
|
Check if the error has appeared again:
|
||||||
|
```
|
||||||
|
utils/writeRead.py 172.28.87.24:1025 P0301
|
||||||
|
```
|
||||||
|
If the console output is not 0, the error has been deleted, but appeared
|
||||||
|
immediately again. In this case, the error cannot be reset remotely.
|
||||||
|
If it is an error such as 10 (limit switches hit), the motor needs to be
|
||||||
|
moved away from the limits, this resets the error automatically.
|
||||||
|
Other errors like 13 represent an actual issue on the hardware which
|
||||||
|
needs to be resolved by the electronics motion engineers.
|
||||||
|
|||||||
Submodule sinqMotor updated: 4e30331c92...95bc899114
@@ -218,7 +218,7 @@ asynStatus turboPmacAxis::init() {
|
|||||||
// here to mm/s^2.
|
// here to mm/s^2.
|
||||||
motorAccel = motorAccel * 1000;
|
motorAccel = motorAccel * 1000;
|
||||||
|
|
||||||
if (nvals != 8) {
|
if (nvals != 7) {
|
||||||
return pC_->couldNotParseResponse(command, response, axisNo_,
|
return pC_->couldNotParseResponse(command, response, axisNo_,
|
||||||
__PRETTY_FUNCTION__, __LINE__);
|
__PRETTY_FUNCTION__, __LINE__);
|
||||||
}
|
}
|
||||||
@@ -582,8 +582,10 @@ asynStatus turboPmacAxis::doPoll(bool *moving) {
|
|||||||
getAxisParamChecked(this, limFromHardware, &limFromHardware);
|
getAxisParamChecked(this, limFromHardware, &limFromHardware);
|
||||||
|
|
||||||
if (limFromHardware != 0) {
|
if (limFromHardware != 0) {
|
||||||
setAxisParamChecked(this, motorHighLimitFromDriver, highLimit);
|
status = setLimits(highLimit, lowLimit);
|
||||||
setAxisParamChecked(this, motorLowLimitFromDriver, lowLimit);
|
if (status != asynSuccess) {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
status = setMotorPosition(currentPosition);
|
status = setMotorPosition(currentPosition);
|
||||||
|
|||||||
Reference in New Issue
Block a user