|
Size: 2378
Comment:
|
Size: 4739
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 49: | Line 49: |
| {{{ # Use the following commands for TCP/IP # drvAsynIPPortConfigure(const char *portName, # user-defined: used for subsequent referencing, # const char *hostInfo, # format: "IP-Address:Port". Standard port for Modbus is 502 # unsigned int priority, # used for priority management with multiple devices, so far not tested # int noAutoConnect, # # int noProcessEos); # # # Example: # drvAsynIPPortConfigure("c1auxex_xt1221a","192.168.114.11:502",0,0,1) }}} {{{ # modbusInterposeConfig(const char *portName, # reference to portName created with drvAsynIPPortConfigure command # modbusLinkType linkType, # # int timeoutMsec, # define timeout for waiting for response from unit # int writeDelayMsec) # # # Example: # modbusInterposeConfig("c1auxex_xt1221a",0,5000,0) }}} {{{ #drvModbusAsynConfigure(portName, # used by channel definitions in .db file to reference this unit) # tcpPortName, # reference to portName created with drvAsynIPPortConfigure command # slaveAddress, # # modbusFunction, # defines driver function for the unit (read register = 4, write register = 6, write single coil = 5) - see examples in next section # modbusStartAddress, # ADC and binary channel numbering starts with 0, DAC channel numbering with 1 # modbusLength, # length in dataType units - see examples in next section # dataType, # 4 = 16-bit signed integers (for A/D and D/A), 0 = binary (for BIO, duh) # pollMsec, # how frequently to request a value in [ms] # plcType); # }}} |
|
| Line 50: | Line 86: |
{{{ drvModbusAsynConfigure("C1AUXEX_XT1221A_ADC","c1auxex_xt1221a",0,4,0,8,4,32,"Acromag") }}} |
|
| Line 53: | Line 93: |
| {{{ drvModbusAsynConfigure("C1AUXEX_XT1541A_DAC","c1auxex_xt1541a",0,6,1,8,4,32,"Acromag") drvModbusAsynConfigure("C1AUXEX_XT1541A_BIO","c1auxex_xt1541a",0,5,0,4,0,32,"Acromag") }}} |
|
| Line 54: | Line 99: |
{{{ drvModbusAsynConfigure("C1AUXEX_XT1111A_BIO","c1auxex_xt1111a",0,6,0,4,0,32,"Acromag") }}} |
Slow Controls
Old Slow Controls Machines (Pre-2017)
Slow DAQ Modules
The new uses the Acromag XT series DIN-rail mounted A/D, D/A and BIO moduels. The model numbers are in the format XTYYY1, where "XT" is a static prefix, "YYY" determines the function, and the "1" denotes the ModBus/TCP version of the model. The 1 at the end is important, as the other variations will not interface with CDS through EPICS properly.
Module |
Function |
# Channels |
Notes |
XT1111 |
Binary I/O |
16 |
Sinking outputs |
XT1121 |
Binary I/O |
16 |
Sourcing outputs |
XT1221 |
ADC |
8 |
Differential inputs |
XT1541 |
DAC |
8 |
4 additional sourcing output BIO channels |
Documentation
HowTo
Configure Acromag XT modules
Initial configuration via USB is required before the units can be used on the network. This requires a USB-to-miniUSB cable, a Microsoft Windows (Version?) (virtual) machine, and the configuration utilities which can be downloaded from the Acromag website (login required). Each model requires a different flavor of the utility to be run. Virtual machines work with USB2.0 ports, but have issues when using USB3.0+ ports. The to-be-configured device needs to be powered by a 12-32V DC voltage source.
Configure slow controls server machine
The following has proven to work with Debian Jessie running on a Supermicro SYS-5015A-H (Intel Atom processor without 64-bit support). This guide was written after-the-fact, so some steps may be missing. When configuring the next machine the gaps will be filled.
- Fresh install of Debian Jessie (x86) with lightweight desktop environment
- Set desired SSH privileges
- Set up remote file system access
- (Optional) Add LIGO repositories
Download EPICS-base distribution, Modbus package, and Asyn drivers, install & build (if not pre-built). The (only attempted) combination of EPICS base version 3.15.5 with ASyn 4-32 and Modbus R2-10-1 has been found to work (in combination with base 3.14.12.2_long on the rest of the machines)
- Set up systemd service for automatic start of the Modbus IOC
Configure XT unit Modbus driver
Define EPICS channels
# Use the following commands for TCP/IP
# drvAsynIPPortConfigure(const char *portName, # user-defined: used for subsequent referencing,
# const char *hostInfo, # format: "IP-Address:Port". Standard port for Modbus is 502
# unsigned int priority, # used for priority management with multiple devices, so far not tested
# int noAutoConnect, #
# int noProcessEos); #
#
# Example:
# drvAsynIPPortConfigure("c1auxex_xt1221a","192.168.114.11:502",0,0,1)# modbusInterposeConfig(const char *portName, # reference to portName created with drvAsynIPPortConfigure command
# modbusLinkType linkType, #
# int timeoutMsec, # define timeout for waiting for response from unit
# int writeDelayMsec) #
#
# Example:
# modbusInterposeConfig("c1auxex_xt1221a",0,5000,0)#drvModbusAsynConfigure(portName, # used by channel definitions in .db file to reference this unit) # tcpPortName, # reference to portName created with drvAsynIPPortConfigure command # slaveAddress, # # modbusFunction, # defines driver function for the unit (read register = 4, write register = 6, write single coil = 5) - see examples in next section # modbusStartAddress, # ADC and binary channel numbering starts with 0, DAC channel numbering with 1 # modbusLength, # length in dataType units - see examples in next section # dataType, # 4 = 16-bit signed integers (for A/D and D/A), 0 = binary (for BIO, duh) # pollMsec, # how frequently to request a value in [ms] # plcType); #
XT1221
drvModbusAsynConfigure("C1AUXEX_XT1221A_ADC","c1auxex_xt1221a",0,4,0,8,4,32,"Acromag")
XT1541
drvModbusAsynConfigure("C1AUXEX_XT1541A_DAC","c1auxex_xt1541a",0,6,1,8,4,32,"Acromag")
drvModbusAsynConfigure("C1AUXEX_XT1541A_BIO","c1auxex_xt1541a",0,5,0,4,0,32,"Acromag")
XT1111 & 1121
drvModbusAsynConfigure("C1AUXEX_XT1111A_BIO","c1auxex_xt1111a",0,6,0,4,0,32,"Acromag")