diff --git a/6-asyn-troubleshooting.md b/6-asyn-troubleshooting.md index 983a9fcba8411ede7756b1268ac8799f457d7976..0ce0e25fc3122165986800b3ea9598fe47f1777c 100644 --- a/6-asyn-troubleshooting.md +++ b/6-asyn-troubleshooting.md @@ -52,7 +52,7 @@ This launches **my-xxx.ui**: This launches **asynOctet.ui**: - + 4. From the **More...** menu of **asynOctet.ui**, choose **Record Parameters** @@ -90,7 +90,23 @@ Do the following and observe the commands on the IOC's console: * Move a motor and look for the MV command * Stop a motor and look for the AB command -### 6.4 Manually send a command to the controller +### 6.4 Synchronize the terminators on asynOctet.ui + +The terminator fields on **asynOctet.ui** appear to be blank, but we have evidence that they are not actually blank (we just saw successful communication between the IOC and virtual motor controller). + +We can read the terminator values and see that they have the same values that were set in **vmc.cmd**: +``` +kmp> asynOctetGetOutputEos VMC_ETH +"\r" +kmp> asynOctetGetInputEos VMC_ETH +"\r\n" +``` + +Set the output terminator to **\r** on **asynOctet.ui** and the input terminator will update automatically: + + + +### 6.5 Manually send a command to the controller The asynOctet screen allows commands to be sent to the controller manually. @@ -98,7 +114,7 @@ Send the **1 POS?** command to the controller to query m1's position (in control  -### 6.5 Stop the IOC +### 6.6 Stop the IOC Exit the IOC from the IOC shell: @@ -120,13 +136,13 @@ $ ./softioc/xxx.sh stop ``` </details> -### 6.6 "Upgrade" the Virtual Motor Controller to a newer firmware. +### 6.7 "Upgrade" the Virtual Motor Controller to a newer firmware. -#### 6.6.1 Kill server.py +#### 6.7.1 Kill server.py Type `ctrl+c` in the xterm window or click the `X` in the corner of the window. -#### 6.6.2 Run server-new-fw.py +#### 6.7.2 Run server-new-fw.py ``` $ xterm -e "${SUPPORT_DIR}/motorVMC/python/server-new-fw.py -p 33333" & @@ -139,7 +155,7 @@ Listening on port 33333 ``` </details> -### 6.7 Run the IOC +### 6.8 Run the IOC Run the IOC @@ -147,7 +163,7 @@ Run the IOC $ ./softioc/xxx.sh run ``` -### 6.8 Observe the motor behavior with the new firmware +### 6.9 Observe the motor behavior with the new firmware What is the first error that occurs when the IOC starts? @@ -183,7 +199,7 @@ Other questions to answer: * Yes, but you can't tell from the motor screen. A controller error appears when a move is attempted, but the asyn trace shows that the MV command does get sent to the controller and the queried position is correct. The motor record does retries because the position query is not returning asynSuccess to the EPICS motor driver. </details> -### 6.9 Enable traceIOEscape +### 6.10 Enable traceIOEscape Sometimes communication problems are caused by the characters you can't see. Enable **traceIOEscape** instead of (or in addition to) **traceIOASCII** @@ -191,7 +207,7 @@ Sometimes communication problems are caused by the characters you can't see. En Both the printable and unprintable characters that are sent to/from the controller should now be visible on the IOC's shell. -### 6.10 Manually send a command to the controller +### 6.11 Manually send a command to the controller Send the **1 POS?** command to the controller to query m1's position (in controller units) using **asynOctet.ui**. @@ -209,7 +225,7 @@ How does the controller's response differ from [before the firmware upgrade](6-a </details> -### 6.11 Diagnose the communication problem +### 6.12 Diagnose the communication problem Why doesn't the controller communicate properly with EPICS after the firmware upgrade? @@ -219,7 +235,7 @@ Why doesn't the controller communicate properly with EPICS after the firmware up The firmware upgrade changed the message terminator of the controller's replies. The asyn port's input terminator, `IEOS`, is set to **\r\n** but the controller now responds with only **\r**. </details> -### 6.12 Confirm the communication problem +### 6.13 Confirm the communication problem Correct the `IEOS` in on asynOctet.ui @@ -234,7 +250,7 @@ When the position is queried manually, the I/O status and severity return to `NO </details> -### 6.13 Solve the communication problem +### 6.14 Solve the communication problem IOC's configuration needs to be modified so the change to the input terminator persists across IOC restarts.