Differences between revisions 12 and 13
Revision 12 as of 2017-12-18 19:48:31
Size: 2378
Comment:
Revision 13 as of 2017-12-18 20:25:56
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")

CDS/SlowControls (last edited 2023-06-12 19:42:12 by AnchalguptaATligoDOTorg)