<This page is currently under reviewactive development/revision. Please contact Alisha Babbitt (ababbitt@slaccontact Jesus Vasquez <jvasquez@slac.stanford.edu) > for more information or questions.>
...
- EtherCAT Resources & Reference Material
- linuxRT PC Set-up
- Configuring the $IOC/vioc-<>-<> Directorysioc-<area>-<subsystem##> Directory where ## is a 2-digit number 01-99.
- EtherCAT linuxRT Configuration
- EtherCAT Template for Creating Epics Application
- Configuring EtherCAT Epics Application
- Debugging Tips
...
- For new users, please reference the following page: Diskless Boot of LinuxRT or Centos7 - Quick Start-up For New UsersHighly Highly recommend viewing this diagram: LinuxRT_Diagram
Verification checks on linuxRT machines:
Table 1
Facility | LinuxRT Account | LinuxRT Group | Comment |
---|
Development | laci | lcls | |
LCLS | laci | lcls | |
LCLS-II | | | not yet available |
FACET | flaci | facet | linuxRT is built with laci as the default account, users must add facet group, user and password |
Test-Facility | acctf | ? | linuxRT is built with laci as the default account, users must add test-facility group, user and password |
Verification checks on linuxRT machines:
- Please see $IOC/Please see $IOC/cpu-<bld>-<name>/README on instructions on how to power cycle machines remotely through the use of ipmi commands
- Once you set-up your linuxRT machine and boot up on development for instance, log in as laci to into laci on your linuxRT system (ref: Table 1). ( ssh laci@cpu-<bld>-<name>)
- Test if your machine is running real-time linux using uname -a
...
# =============================================================== # Define kernel module driver location # =============================================================== PACKAGE_TOP=/afs/slac/g/lcls/package KERNEL_DRIVER_HOME=$PACKAGE_TOP/linuxKernel_Modules ETHERCAT_DRIVER=$KERNEL_DRIVER_HOME/ethercat/buildroot-2015.02-x86_64 |
---|
...
# ========================================= # Install EtherCat kernel drivers + Set-up # ========================================= # Need to configure another ethernet port on cpu-b084-hp03 for ethercat # MUST configure another ethernet port for ethercat # ifconfig eth1 192.168.1.10 netmask 255.255.252.0<insert_your_ethercat_ip_address> netmask <insert_your_netmask> # Recommend using the following logic to configure based on the port’s MAC Address EthCat_MAC_ADDR=00:0B:AB:39:3F:CB<insert_your_MAC_addresss_for_your_etherCAT_port> eth_cat=$(ifconfig -a | grep "HWaddr ${EthCat_MAC_ADDR}" | awk '{print $1}') ifconfig ${eth_cat} netmask 255.255.255.0<insert_your_ethercat_ip_address> netmask <insert_your_netmask>
# insert MAC address for eth1 after main_devices # the ethercat slaves/devices are connected at eth1 ${eth_cat} (for this specific configuration)
insmod $ETHERCAT_DRIVER/master/ec_master.ko main_devices=${EthCat_MAC_ADDR} insmod $ETHERCAT_DRIVER/devices/ec_generic.ko
/sbin/ifconfig eth1 ${eth_cat} up
ln -s $ETHERCAT_DRIVER/tool/ethercat /sbin/ethercat
sleep 5 chmod o+rw /dev/EtherCAT* # =========================================================== |
---|
...
$ ethercat version IgH EtherCAT master 1.5.2 2eff7c993a63 $ lsmod | grep ec ec_generic 3453 1 ec_master 240382 3 ec_generic |
---|
- If the slaves are connected with the setup, the ethercat command line tool can help visualize it.
$ ethercat slaves 0 0:0 OP + E1250-EC-UC V1.7b1 |
---|
- Another helpful ethercat command line took is ethercat master
Configuring the $IOC/vioc-<>-<> Directory
The $IOC/vioc-<>-<> directory created for this EtherCAT application needs the follow items:
- If the slaves are connected with the setup, the ethercat command line tool can help visualize it.
$ ethercat slaves 0 0:0 OP + E1250-EC-UC V1.7b1 |
---|
- Another helpful ethercat command line took is ethercat master
Configuring the $IOC/sioc-<>-<> Directory
The $IOC/vioc-<>-<> directory created for this EtherCAT application needs the follow items:
- scannerStartup.sh (where should we put a "master" scannerStartup.sh for people to copy/point to)
- Proposal: put generic scannerStartup.sh under $IOC/common/ethercat. Script has been modified to pass in the vioc name from when the script is called from the kernel-modules.cmd
- so vioc specific information (for vioc-ltu0-mc01) was moved to the kernel-modules.cmd => have to think about use case where multiple subsystems share cpu (see above solution)
- OR do we keep it in kernel-modules.cmd (this should be apart of the linuxRT discussion)
- Create a bin directory (currently under discussion to rename this "bin" directory to avoid confusion)
- scannerStartup.sh (where should we put a "master" scannerStartup.sh for people to copy)
- Create a bin directoryProposal: rename "bin" to "scanner" and use symbolic links to point to scanner binary and scanner.xml in epics application
- In the bin directory, create a symbolic link "scanner" that points to your scanner binary in your epics application (<top>/bin/linuxRT_glibc-x68_64/scanner)
OH! scanner binary is NOT specific to your application. Should point to the package area.
- In the bin directory, create a symbolic link "scanner.xml" that points to your scanner.xml in your epics application (<top>/etc/scanner.xml)
...
Generate a vioc for your application. We are using the following format for linuxRT IOC's: vioc-<area>-<subsystem>
Choose your target architecture:
...
The device name needs to match the name given by the xml device templates found here: $PACKAGE_TOP/ethercat/<ethercat_version_number>/etc/xml (need to confirm....).
To obtain the revision number for the device you will need to use the slaves ethercat command line tool on your linuxRT machine (aka the EtherCAT Master).
...
Any new devices should be integrated into the EtherCAT module. Please contact the EtherCAT module owners:owner:
- Who wants to be the EtherCAT module owner?
Jesus Vasquez: jvasquez@slac.stanford.edu
Now that the chain.xml file has been created to generate the scanner.xml file, the second part is to configure and clean-up your epics application to only include the elements that you need.
...