Update README.md

Clearer explanations
This commit is contained in:
2024-08-06 12:54:43 -05:00
parent 03a93101c1
commit 3ecb9676c0

View File

@@ -11,28 +11,38 @@ motorDSM contains an example IOC that is built if ``configure/CONFIG_SITE.local`
# Running an example IOC
To run the example IOC, in the ``iocs/dsmIOC/iocBoot/iocDsm`` directory, run
To run the example IOC, build the packages listed below, then:
$ ../../bin/linux-x86_64/dsm st.cmd.md90
1. Follow the steps in "Configuring the system for attached controllers" below.
2. Set the "EPICS_CA_ADDR_LIST" environment variable to include the IP address of the server.
If it's running on the same computer, you can use the loopback IP address.
`export EPICS_CA_ADDR_LIST='127.0.0.1`
3. In the ``iocs/dsmIOC/iocBoot/iocDsm`` directory, run
```
$ ../../bin/linux-x86_64/dsm st.cmd.md90
```
for one attached MD-90 controller, or
```
$ ../../bin/linux-x86_64/dsm st.cmd.md90.multi
```
for eight attached MD-90 controllers. Edit this file to use more than one unit; simply comment out the ones you don't need.
$ ../../bin/linux-x86_64/dsm st.cmd.md90.multi
4. Test using the `caget` and `caput` arguments as described in the "Example usage" section below.
for eight attached MD-90 controllers.
# Configuring the system for attached controllers
-------------------------------------------------
You will need to set the path(s) for the serial port(s) in ``st.cmd.md90`` (for a single unit) or ``st.cmd.md90.multi`` (for multiple units).
You will also need to ensure they match the names used in ``motor.substitutions.md90`` (or ``motor.substitutions.md90.multi``).
By default, ports are assumed to be at ``/dev/ttyUSB0``, ``/dev/ttyUSB1``, etc.
You will also need to comment or uncomment lines depending on the number of drivers you have connected. For each driver, make sure you uncomment/call the following functions:
The following steps must be used in either st.cmd.md90 (for a single unit) or in st.cmd.md90.multiple (for multiple units).
st.cmd.md90.multiple includes 8 motors predefined on /dev/ttyUSB0 through /dev/ttyUSB7. Comment out all motors you don't need.
**1. Define a new serial port named "serial0"**
**1. Define a new serial port named "serial0" and set the location of the physical port**
`drvAsynSerialPortConfigure([serial name], [device location], 0, 0, 0)`
*e.g., `drvAsynSerialPortConfigure("serial0", "/dev/ttyUSB0", 0, 0, 0)`*
**2. Configure the port**
- Baud = 115200<br>
- Bits = 8<br>
- Baud = 115200
- Bits = 8
- Parity = none
- Stop bits = 1
- Input end of message: "\r"
@@ -64,7 +74,7 @@ asynOctetDisconnect('initConnection')
where `[controller name]` is the name of the motor to assign. Convention is to use "MD90n", starting with n=0.
**5. Intialize the IOC**
After calling `iocInit`, run the following lines for each motor. The example below uses `DSM:m0` but it should be run for each line described in motor.substitutions.md90 (or motor.substitutions.md90.multiple).
After the call to `iocInit` (still in the st.cmd.md90[.multiple] file), issue the following commands for each motor. The example below uses `DSM:m0` but it should be run for each line described in motor.substitutions.md90 (or motor.substitutions.md90.multiple).
````
dbpf("DSM:m0.RTRY", "0") #sets retries to 0; this is automatic on the MD90
dbpf("DSM:m0.TWV", "0.1") #Tweak distance
@@ -72,6 +82,13 @@ dbpf("DSM:m0.VMAX", "1.0") #Sets max velocity to 1 mm/s
dbpf("DSM:m0.HVEL", "1.0") #Sets max velocity to 1 mm/s
````
**6. Update the substitutions file**
Save and close the st.cmd file you've been configuring, then open the motor substitutions file (motor.substitutions.md90[.multiple]).
Ensure the values in the `pattern` block's `PORT` field match the names used in the std.cmd file.
Note that, despite this field being called "Port", they use the names of the MD90 Controller object defined above (by default, MD900, MD901, etc.
Do __not__ use the direct serial port names (by default, serial0, serial1, etc.).
# Compiling motorDSM
------------------------
@@ -185,4 +202,4 @@ Moving to a position target:
Setting a velocity target:
`./caput DSM:m0.VELO 0.5 #Sets velocity target to 0.5 mm/s`
Note that velocity targets are appropriate only. They adjust the step rate of the motor, and are not guaranteed to be exact.
(Note that velocity targets are appropriate only. They adjust the step rate of the motor and are not guaranteed to be exact.)