Document update

This commit is contained in:
Bernardo Brotas de Carvalho
2023-08-16 11:12:56 +01:00
parent 443eb8857c
commit 8cce3ee00b

View File

@@ -1,329 +1,415 @@
# New ISTTOK Slow Control System # New ISTTOK Slow Control System
## Intro
## Intro
The new ISTTOK slow control system is designed to replace the former vacuum/power/slow timing system based is the EDWARDS controller.
The new ISTTOK slow control system is designed to replace the former vacuum/power/slow timing system based is the EDWARDS controller.
The new system uses the [EPICS](https://epics-controls.org) framework and the [Control System Studio](http://controlsystemstudio.org), below there is a detailed description of the used software.
In the next figure is depicted the system structure. The new system uses the [EPICS](https://epics-controls.org) framework and the [Control System Studio](http://controlsystemstudio.org), below there is a detailed description of the used software.
![Kiku](images/isttokepicssystem.png) In the next figure is depicted the system structure.
![Kiku](images/isttokepicssystem.png)
At the present the software are installed in two IOC servers with the exception of the Control System Studio that is also used for the GUI management.
At the present the software are installed in two IOC servers with the exception of the Control System Studio that is also used for the GUI management.
All software stored in IPFN GIT [server](https://git.ipfn.tecnico.ulisboa.pt/summary/ISTTOK.git)
All software stored in IPFN GIT [server](https://git.ipfn.tecnico.ulisboa.pt/summary/ISTTOK.git)
## Team and responsabilities
- **Horácio Fernandes** (ISTTOK Leader) ## Team and responsabilities
- **Bernardo Carvalho** (Project Leader)
- **Humberto Figueiredo** (ISTTOK Session Leader) * **Horácio Fernandes** (ISTTOK Leader)
- **Hugo Alves** (ISTTOK Session Leader, State Machine development)
- **Tiago Pereira** (dsPIC development, RS232 protocol/ Sensor Interface/ Wiring) * **Bernardo Carvalho** (Project Leader)
## System description * **Humberto Figueiredo** (ISTTOK Session Leader)
Presently there are two/three instances of EPICS IOC Server implemented.
One responsible for the Temperature Node. * **Hugo Alves** (ISTTOK Session Leader, State Machine development)
And a second one, installed in a Raspberry Pi, implemented in the new control unit launched at ISTTOK for the remote control of the vacuum pumps, named Central Node.
A third one is dedicated for readind the Vacuum Sensore through the RS484 Interface * **Tiago Pereira** (dsPIC development, RS232 protocol/ Sensor Interface/ Wiring)
### Temperature/Vacuum Node: Temperature Sensors and ELCO Voltage Measurement Systems ## System description
- Thermocouple Sensor
- ELCO voltage measurement Presently there are two/three instances of EPICS IOC Server implemented.
- For communication was used a fiber optic One responsible for the Temperature Node.
And a second one, installed in a Raspberry Pi, implemented in the new control unit launched at ISTTOK for the remote control of the vacuum pumps, named Central Node.
The dsPic uses the internal ADC to read the voltage signal from the thermocouple. A third one is dedicated for readind the Vacuum Sensore through the RS484 Interface
To measure the ELCO's voltage it was developed two boards one to read the ELCO's voltage and another to connect the fiber optic to dsPIC.
### Temperature/Vacuum Node: Temperature Sensors and ELCO Voltage Measurement Systems
#### Hardware Platform * Thermocouple Sensor
- Thermocouple Sensor
- ELCO voltage measurement * ELCO voltage measurement
1. One PC Controller * For communication was used a fiber optic
* Intel(R) Atom(TM) CPU330 1.60GHz, Dual Core, 1 Gbyte RAM, 4 RAM The dsPic uses the internal ADC to read the voltage signal from the thermocouple.
* 4 Serial Ports To measure the ELCO's voltage it was developed two boards one to read the ELCO's voltage and another to connect the fiber optic to dsPIC.
* IP addr: 192.168.1.152 ( ISTTOK private network)
* Scientific [Linux CERN 6](http://linux.web.cern.ch/linux/scientific6) (SLC6) #### Hardware Platform
with MRG Realtime extensions
*Linux kernel 3.2.33-rt50.66.el6rt.x86_64 * Thermocouple Sensor
* NTP time conected to IPFN Gps NTP/PPS server IP:10.136.236.255 and
baco.ipfn.tecnico.ulisboa.pt (193.136.136.129) * ELCO voltage measurement
2. Local Control 1. One PC Controller
* One or more dsPic board running an embedded firmware
* Intel(R) Atom(TM) CPU330 1.60GHz, Dual Core, 1 Gbyte RAM, 4 RAM
Temperature Sensors and ELCO Voltage Measurement Systems
-For communication was used a fiber optic * 4 Serial Ports
The dsPic uses the internal ADC to read the voltage signal from the thermocouple. * IP addr: 192.168.1.152 ( ISTTOK private network)
To measure the ELCO's voltage it was developed two boards one to read the ELCO's voltage and another to connect the fiber optic to dsPIC.
* Scientific [Linux CERN 6](http://linux.web.cern.ch/linux/scientific6) (SLC6)
#### Protocol for communication between dspics and PC with MRG Realtime extensions
* all bytes are readable ASCII \*Linux kernel 3.2.33-rt50.66.el6rt.x86_64
* all messages all terminated with two bytes: \r\n (13 10)
* messages have variable length * NTP time conected to IPFN Gps NTP/PPS server IP:10.136.236.255 and
* framing character for fields inside message is space (32) baco.ipfn.tecnico.ulisboa.pt (193.136.136.129)
* individual fields inside each message have variable length
* the last three characters before the terminator are the ASCII representation of the checksum of all other bytes, excluding the terminator 1. Local Control
* Messages are sent periodically (1s)
* One or more dsPic board running an embedded firmware
Examples:
PIC -> PC Temperature Sensors and ELCO Voltage Measurement Systems
`VL01_1 VL02_1 VL03_0 TE01_150.9 TE02_80.1 UP_7200 PR01_1.3e-4 CKS\r\n` \-For communication was used a fiber optic
PC -> PIC The dsPic uses the internal ADC to read the voltage signal from the thermocouple.
`VL01_1 CKS\r\n` To measure the ELCO's voltage it was developed two boards one to read the ELCO's voltage and another to connect the fiber optic to dsPIC.
Table of word fields #### Protocol for communication between dspics and PC
| N | A | * all bytes are readable ASCII
|:------|-----|
| VLxx_| Valve| * all messages all terminated with two bytes: \\r\\n (13 10)
| TExx_| Temperature|
| UP_ | Uptime | * messages have variable length
| PRDxx_| Wave Period |
| PRxx_ | Pressure | * framing character for fields inside message is space (32)
#### Software Platform * individual fields inside each message have variable length
1. EPICS V3.15.7 (instaled in `/opt/epics/base-3.15.7`) * the last three characters before the terminator are the ASCII representation of the checksum of all other bytes, excluding the terminator
* IOC sources (versioned) in `/home/codac-dev/ISTTOK/epics/iocs/ISTTOKdsPIC`
* IOC binaries in `/opt/epics/apps/ISTTOK` * Messages are sent periodically (1s)
* Init IOC script in `/etc/rc.local`
2. Modules ( (instaled in `/opt/epics/modules`) Examples:
* ASYN [git package](https://github.com/epics-modules/asyn.git) PIC -> PC
* STREAM [git](https://github.com/paulscherrerinstitute/StreamDevice.git) `VL01_1 VL02_1 VL03_0 TE01_150.9 TE02_80.1 UP_7200 PR01_1.3e-4 CKS\r\n`
3. CS-Studio
* Archive [Engine] (http://cs-studio.sourceforge.net/docbook/ch11.html) PC -> PIC
* Init script in `/etc/init.d/isttok-archive-engine` `VL01_1 CKS\r\n`
* MySQL server (user: report )
* ArchiveConfigTool in `/home/bernardo/css/ArchiveConfigTool` Table of word fields
Process Value in this IOC Server: | N | A |
|:------|-----|
|PV Name |PV Type |Archive| | VLxx_| Valve|
|:----------|-------|---:| | TExx_| Temperature|
|ISTTOK:temperature:Uptime |longin| no| | UP_ | Uptime |
|ISTTOK:temperature:Last_Uptime | ai | no | | PRDxx_| Wave Period |
|ISTTOK:temperature:Temperature_0 |ai |yes | PRxx_ | Pressure |
|ISTTOK:temperature:Temperature_1 |ai | no |
|ISTTOK:temperature:Temperature_2 |ai | no | #### Software Platform
|ISTTOK:temperature:Temperature_3 |ai | no |
|ISTTOK:temperature:Capbank_Voltage | ai| no | 1. EPICS V3.15.7 (instaled in `/opt/epics/base-3.15.7`)
|ISTTOK:temperature:VVessel-Temperature | ai | yes |
---------- * IOC sources (versioned) in `/home/codac-dev/ISTTOK/epics/iocs/ISTTOKdsPIC`
### Central Control/Vacuum Node * IOC binaries in `/opt/epics/apps/ISTTOK`
- Vacuum Sensors
- Pffeifer rotatory vacuum pumpa (*RPump1*) * Init IOC script in `/etc/rc.local`
- Edwards electro valve
- Seiko Seiki turbomolecular pump and control unit (model SCU-400) 2. Modules ( (instaled in `/opt/epics/modules`)
- Main State Machine, see [source](https://git.ipfn.tecnico.ulisboa.pt/blob/ISTTOK.git/master/epics%2Fiocs%2FISTTOKrpi%2FISTTOKrpiApp%2Fsrc%2FIsttokSeqExec.stt)
* ASYN [git package](https://github.com/epics-modules/asyn.git)
#### Hardware Platform
1. A Raspberry Pi running a linux distribution.. * STREAM [git](https://github.com/paulscherrerinstitute/StreamDevice.git)
* Raspberry Pi 2 Model B Rev 1.1 hardware. `# cat /proc/cpuinfo | grep Model`
* Has a USB/RS485 port for monitoring pressure (to be connected soon) 3. CS-Studio
2. Two Interface Boards, Velleman Model [k8000](https://www.velleman.eu/products/view/?id=9383)..
* connected to raspberry Pi through I2C interface; * Archive \[Engine\] (http://cs-studio.sourceforge.net/docbook/ch11.html)
* 8 isolated output connected to the relays (6 relays installed for the rotatory control)
* 4 isolated outputs connected to SEIKO unit controller * Init script in `/etc/init.d/isttok-archive-engine`
* Indicator leds for the relays in the front panel
* 24 V power supply * MySQL server (user: report )
#### Software Platform * ArchiveConfigTool in `/home/bernardo/css/ArchiveConfigTool`
[//]: # (This may be the most platform independent comment)
Process Value in this IOC Server:
1. Linux Raspian "Stretch" (user :pi):
* IP addr:192.168.1.110 ( ISTTOK private network) |PV Name |PV Type |Archive|
* NTP/timedatectl time conected to IPFN Gps NTP/PPS server IP:10.136.227.237 193.136.136.129 |:----------|-------|---:|
(this is mandatory, Rpi does not have a Real Time clock see https://www.raspberrypi.org/forums/viewtopic.php?t=178763) |ISTTOK:temperature:Uptime |longin| no|
* EPICS v7 base-7.0 from epics [github](https://github.com/epics-base) |ISTTOK:temperature:Last_Uptime | ai | no |
* (in /home/pi/Apps/epics7/epics-base) including modules: |ISTTOK:temperature:Temperature_0 |ai |yes
* asynDriver [asyn](https://github.com/epics-modules/asyn) |ISTTOK:temperature:Temperature_1 |ai | no |
* [StreamDevice](https://paulscherrerinstitute.github.io/StreamDevice) |ISTTOK:temperature:Temperature_2 |ai | no |
* State Notation Language and Sequence v.2.2 [seq](https://www-csr.bessy.de/control/SoftDist/sequencer) |ISTTOK:temperature:Temperature_3 |ai | no |
* [autosave](https://github.com/epics-modules/autosave) |ISTTOK:temperature:Capbank_Voltage | ai| no |
* IOC installed in '/home/pi/ISTTOK/epics/iocs/ISTTOKrpi' |ISTTOK:temperature:VVessel-Temperature | ai | yes |
* Running in `screen deamon` (see `/etc/rc.local`)
---
For installation EPICS in Linux/raspian see this [link](https://docs.epics-controls.org/projects/how-tos/en/latest/getting-started/installation.html)
### Central Control/Vacuum Node
#### Process Variables
Process Variables in this IOC Server: * Vacuum Sensors
* State machine PVs * Pffeifer rotatory vacuum pumpa (*RPump1*)
|PV Name |PV Type |Archive| * Edwards electro valve
|:----------|-------|---:|
|ISTTOK:central:AUTHORISATION | bo | no | * Seiko Seiki turbomolecular pump and control unit (model SCU-400)
|ISTTOK:central:OPREQ | bo | no |
|ISTTOK:central:PROCESS-MODE | bo | no | * Main State Machine, see [source](https://git.ipfn.tecnico.ulisboa.pt/blob/ISTTOK.git/master/epics%2Fiocs%2FISTTOKrpi%2FISTTOKrpiApp%2Fsrc%2FIsttokSeqExec.stt)
|ISTTOK:central:PROCESS-REQ | bo | no |
|ISTTOK:central:COUNTER | calc | no | #### Hardware Platform
|ISTTOK:central:COUNTDOWN | mbbi | no |
|ISTTOK:central:PULSE-NUMBER | longout | yes | 1. A Raspberry Pi running a linux distribution..
|ISTTOK:central:OPSTATE |longout | yes |
|ISTTOK:central:UPS-OnBattery | bo | no | * Raspberry Pi 2 Model B Rev 1.1 hardware. `# cat /proc/cpuinfo | grep Model`
|ISTTOK:central:UPS-Shutdown | bo | no |
|ISTTOK:central:CurrentTime | stringin | no | * Has a USB/RS485 port for monitoring pressure (to be connected soon)
|ISTTOK:central:TraceMessage | stringout | yes |
|ISTTOK:central:LogMessage | stringout | yes | 1. Two Interface Boards, Velleman Model [k8000](https://www.velleman.eu/products/view/?id=9383)..
----------
* connected to raspberry Pi through I2C interface;
* Connected to PCF8574 I2C Address = 56 (Bottom Valleman)
* 8 isolated output connected to the relays (6 relays installed for the rotatory control)
|PV Name | PV Type | Bit |
|:----------|-------|---:| * 4 isolated outputs connected to SEIKO unit controller
| ISTTOK:central:TMPump1-ControllerOn | bo | 0 |
|ISTTOK:central:TMPump1-ControllerOff | bo | 1 | * Indicator leds for the relays in the front panel
|ISTTOK:central:TMPump1-MotorOn | bo | 2 |
|ISTTOK:central:TMPump1-MotorOff | bo | 3 | * 24 V power supply
|ISTTOK:central:TMPump1-Power | bi | 4 |
|ISTTOK:central:TMPump1-Acceleration | bi | 5 | #### Software Platform
|ISTTOK:central:TMPump1-Emergency | bi | 6 |
|ISTTOK:central:TMPump1-NormalOperation | bi | 7 | 1. Linux Raspian "Stretch" (user :pi):
----------
* IP addr:192.168.1.110 ( ISTTOK private network)
* Connected to PCF8574 I2C Address = 57 (Bottom Valleman board)
* NTP/timedatectl time conected to IPFN Gps NTP/PPS server IP:10.136.227.237 193.136.136.129
|PV Name | PV Type | Bit | (this is mandatory, Rpi does not have a Real Time clock see https://www.raspberrypi.org/forums/viewtopic.php?t=178763)
|:----------|-------|---:|
|ISTTOK:central:TMPump2-Emergency | bi | 0 | * EPICS v7 base-7.0 from epics [github](https://github.com/epics-base)
|ISTTOK:central:TMPump2-Acceleration | bi | 1 |
|ISTTOK:central:TMPump2-MotorOn | bo | 2 | * (in /home/pi/Apps/epics7/epics-base) including modules:
|ISTTOK:central:Emergency-PhysButton| bi | 4 |
|ISTTOK:central:TTSystem-tzero| bi | 7 | * asynDriver [asyn](https://github.com/epics-modules/asyn)
----------
* [StreamDevice](https://paulscherrerinstitute.github.io/StreamDevice)
* Connected to PCF8574 Address = 60 (Top Valleman Board)
* State Notation Language and Sequence v.2.2 [seq](https://www-csr.bessy.de/control/SoftDist/sequencer)
|PV Name | PV Type | Bit | Relay #/(NO/NC)|
|:----------|-------|---:| * [autosave](https://github.com/epics-modules/autosave)
|ISTTOK:central:RPump1-Motor| bo | 0 | 5 / NC |
|ISTTOK:central:RPump1-Valve| bo | 1 | 4 / NC | * IOC installed in '/home/pi/ISTTOK/epics/iocs/ISTTOKrpi'
|ISTTOK:central:RPump2-Motor (Not Used/Disabled)| bo | 2 | |
|ISTTOK:central:RPump2-Valve (Not Used/Disabled| bo | 3 | | * Running in `screen deamon` (see `/etc/rc.local`)
|ISTTOK:central:VVessel-Filament| bo | 4 | 1 / NO|
---------- For installation EPICS in Linux/raspian see this [link](https://docs.epics-controls.org/projects/how-tos/en/latest/getting-started/installation.html)
#### Process Variables
* Connected to TDA8444 DAC @ address 0x20=d32 (Bottom Valleman Board)
Process Variables in this IOC Server:
|PV Name |PV Type |Archive|
|:----------|-------|---:| * State machine PVs
| ISTTOK:central:TDA8444:32:DAC_CH0| longout | no |
| ISTTOK:central:TDA8444:32:DAC_CH1| longout | no | |PV Name |PV Type |Archive|
| ISTTOK:central:TDA8444:32:DAC_CH2| longout | no | |:----------|-------|---:|
| ISTTOK:central:TDA8444:32:DAC_CH3| longout | no | |ISTTOK:central:AUTHORISATION | bo | no |
| ISTTOK:central:TDA8444:32:DAC_CH5| longout | no | |ISTTOK:central:OPREQ | bo | no |
| ISTTOK:central:TDA8444:32:DAC_CH6| longout | no | |ISTTOK:central:PROCESS-MODE | bo | no |
---------- |ISTTOK:central:PROCESS-REQ | bo | no |
|ISTTOK:central:COUNTER | calc | no |
* Connected to PCF8591 ADC / DAC register @ address 0x48=d72 |ISTTOK:central:COUNTDOWN | mbbi | no |
|ISTTOK:central:PULSE-NUMBER | longout | yes |
|PV Name |PV Type | CH |Archive| |ISTTOK:central:OPSTATE |longout | yes |
|:----------|-------|---:| |ISTTOK:central:UPS-OnBattery | bo | no |
| ISTTOK:central:TMPump2-Speed| ai | ch1 | no | |ISTTOK:central:UPS-Shutdown | bo | no |
| ISTTOK:central:TMPump2-Current| ai | ch2 | no | |ISTTOK:central:CurrentTime | stringin | no |
| ISTTOK:central:Shot-TorPSCurrentImage"| ai | ch3 | no | |ISTTOK:central:TraceMessage | stringout | yes |
---------- |ISTTOK:central:LogMessage | stringout | yes |
* Connected to RS485 Bus (Using USB */dev/ttyUSB0*) ---
|PV Name |PV Type |Archive| RS485 request command| * Connected to PCF8574 I2C Address = 56 (Bottom Valleman)
|:----------|-------|---:|---|
|ISTTOK:central:VVessel-Pressure | ai | yes | out "0010074002=?106"| |PV Name | PV Type | Bit |
|ISTTOK:central:RPump1-Pressure | ai | yes | out "0020074002=?107" | |:----------|-------|---:|
|ISTTOK:central:RPump2-Pressure (Disabled) | ai | yes | | | ISTTOK:central:TMPump1-ControllerOn | bo | 0 |
|ISTTOK:central:TMPump1-PressureAdmission | ai | yes | out "0030074002=?108" | |ISTTOK:central:TMPump1-ControllerOff | bo | 1 |
---------- |ISTTOK:central:TMPump1-MotorOn | bo | 2 |
|ISTTOK:central:TMPump1-MotorOff | bo | 3 |
* Connected to [Seeeduino](https://wiki.seeedstudio.com/Grove-4-Channel_SPDT_Relay) Grove - 4-Channel |ISTTOK:central:TMPump1-Power | bi | 4 |
SPDT Relay Address = 17 |ISTTOK:central:TMPump1-Acceleration | bi | 5 |
|ISTTOK:central:TMPump1-Emergency | bi | 6 |
|PV Name | PV Type | Bit | Relay NO/NC| |ISTTOK:central:TMPump1-NormalOperation | bi | 7 |
|:----------|-------|---:|
|ISTTOK:central:GasIS-Valves| bo | 0 | NO | ---
|ISTTOK:central:PrimPneuBreaker| bo | 1 | NO |
|ISTTOK:central:CapBank-Discharge| bo | 2 | NO | * Connected to PCF8574 I2C Address = 57 (Bottom Valleman board)
|ISTTOK:central:Clean-TorPneuBreaker| bo | 3 | NO |
|PV Name | PV Type | Bit |
* Connected to Seeeduino- 4-Channel SPDT Relay Address = 18 |:----------|-------|---:|
|ISTTOK:central:TMPump2-Emergency | bi | 0 |
|PV Name | PV Type | Bit | Relay NO/NC| |ISTTOK:central:TMPump2-Acceleration | bi | 1 |
|:----------|-------|---:| |ISTTOK:central:TMPump2-MotorOn | bo | 2 |
|ISTTOK:central:Clean-PrimContactor| bo | 0 | Relay NO/NC| |ISTTOK:central:Emergency-PhysButton| bi | 4 |
|ISTTOK:central:Clean-TorContactor| bo | 1 | Relay NO/NC| |ISTTOK:central:TTSystem-tzero| bi | 7 |
|ISTTOK:central:CapBank-Charge| bo | 2 | Relay NO/NC|
|ISTTOK:central:Buzzer| bo | 3 | Relay NO/NC| ---
* Connected to PCF8574 Address = 60 (Top Valleman Board)
* Connected to Seeeduino- 4-Channel SPDT Relay Address = 19
|PV Name | PV Type | Bit | Relay #/(NO/NC)|
|PV Name | PV Type | Bit | Relay NO/NC| |:----------|-------|---:|
|:----------|-------|---:| |ISTTOK:central:RPump1-Motor| bo | 0 | 5 / NC |
| ISTTOK:central:Shot-TorPSDisable| bo | 0 | NO | |ISTTOK:central:RPump1-Valve| bo | 1 | 4 / NC |
| ISTTOK:central:Lab-WarningLight| bo |1 | NO | |ISTTOK:central:RPump2-Motor (Not Used/Disabled)| bo | 2 | |
|ISTTOK:central:RPump2-Valve (Not Used/Disabled| bo | 3 | |
|ISTTOK:central:VVessel-Filament| bo | 4 | 1 / NO|
### Vacuum Node (**Not used, backup server only**)
- Vacuum Pfeiffer Sensors (RS485) ---
#### Hardware Platform * Connected to TDA8444 DAC @ address 0x20=d32 (Bottom Valleman Board)
1. A Raspberry Pi 2, running a raspian Buster distribution..
* Has a USB/RS485 interface for monitoring pressure sensors |PV Name |PV Type |Archive|
|:----------|-------|---:|
#### Process Variables | ISTTOK:central:TDA8444:32:DAC_CH0| longout | no |
Process Variables in this IOC Server: | ISTTOK:central:TDA8444:32:DAC_CH1| longout | no |
| ISTTOK:central:TDA8444:32:DAC_CH2| longout | no |
* Connected to RS485 Bus | ISTTOK:central:TDA8444:32:DAC_CH3| longout | no |
| ISTTOK:central:TDA8444:32:DAC_CH5| longout | no |
|PV Name |PV Type |Archive| | ISTTOK:central:TDA8444:32:DAC_CH6| longout | no |
|:----------|-------|---:|
| ISTTOK:vacuum:RPump1-Pressure (not used)| ai | yes | ---
|ISTTOK:vacuum:RPump2-Pressure (not used) | ai | yes |
|ISTTOK:vacuum:TMPump1-PressureAdmission (not used)| ai | yes | * Connected to PCF8591 ADC / DAC register @ address 0x48=d72
|ISTTOK:vacuum:VVessel-Pressure (not used) | ai | yes |
---------- |PV Name |PV Type | CH |Archive|
|:----------|-------|---:|
#### Software Platform | ISTTOK:central:TMPump2-Speed| ai | ch1 | no |
[//]: # (This may be the most platform independent comment) | ISTTOK:central:TMPump2-Current| ai | ch2 | no |
| ISTTOK:central:Shot-TorPSCurrentImage"| ai | ch3 | no |
1. Linux Raspian "buster" (user :pi):
* IP addr: 192.168.1.120 ( ISTTOK private network) ---
* NTP/timedatectl time conected to IPFN Gps NTP/PPS server IP:10.136.227.237 193.136.136.129
(this is mandatory, Rpi does not have a Real Time clock see https://www.raspberrypi.org/forums/viewtopic.php?t=178763) * Connected to RS485 Bus (Using USB */dev/ttyUSB0*)
* EPICS 7. To install follow [EPICS Docs](https://docs.epics-controls.org/projects/how-tos/en/latest/getting-started/installation.html)
|PV Name |PV Type |Archive| RS485 request command|
|:----------|-------|---:|---|
## Download and configure CS-Studio |ISTTOK:central:VVessel-Pressure | ai | yes | out "0010074002=?106"|
|ISTTOK:central:RPump1-Pressure | ai | yes | out "0020074002=?107" |
* Install JAVA JDK (version Java SE Development Kit 8) or |ISTTOK:central:RPump2-Pressure (Disabled) | ai | yes | |
openjdk-8-jre linux package |ISTTOK:central:TMPump1-PressureAdmission | ai | yes | out "0030074002=?108" |
* Download ISTTOK EPICS Files to a working folder
* `git clone https://bernardo@git.ipfn.tecnico.ulisboa.pt/r/ISTTOK.git` ---
* Goto site [CS-Studio](http://download.controlsystemstudio.org/release/4.5/) and download latest version to your OS
* Uncompress folder * Connected to [Seeeduino](https://wiki.seeedstudio.com/Grove-4-Channel_SPDT_Relay) Grove - 4-Channel
* Run `cs-studio` executable SPDT Relay Address = 17
* Choose a workplace folder
* Goto to Menu EDIT->Preferences->CSS Core->Data Sources->Channel Access |PV Name | PV Type | Bit | Relay NO/NC|
* On Address List replace `localhost` with `epics.ipfn.tecnico.ulisboa.pt` |:----------|-------|---:|
* Uncheck `Auto Address List` |ISTTOK:central:GasIS-Valves| bo | 0 | NO |
* Restart CS-Studio |ISTTOK:central:PrimPneuBreaker| bo | 1 | NO |
* Run File -> Import -> General-> Projects from folder |ISTTOK:central:CapBank-Discharge| bo | 2 | NO |
* point to cloned folder |ISTTOK:central:Clean-TorPneuBreaker| bo | 3 | NO |
* Navigate to `ISTTOK/epics/css/sys-mng-opi/CSS`
* Open `SystemManagerIsttok.opi` with "OPI Display" * Connected to Seeeduino- 4-Channel SPDT Relay Address = 18
|PV Name | PV Type | Bit | Relay NO/NC|
### EPICS Channel Access Configuration |:----------|-------|---:|
``` |ISTTOK:central:Clean-PrimContactor| bo | 0 | Relay NO/NC|
export EPICS_CA_ADDR_LIST="192.168.1.110 192.168.1.152" |ISTTOK:central:Clean-TorContactor| bo | 1 | Relay NO/NC|
export EPICS_CA_AUTO_ADDR_LIST="NO" |ISTTOK:central:CapBank-Charge| bo | 2 | Relay NO/NC|
``` |ISTTOK:central:Buzzer| bo | 3 | Relay NO/NC|
### References * Connected to Seeeduino- 4-Channel SPDT Relay Address = 19
*"EPICS IOC module development and implementation for the ISTTOK machine subsystem operation and control"*
Paulo Carvalho, André Duarte, Tiago Pereira, Bernardo Carvalho, Jorge Sousa, Horácio Fernandes, Carlos Correia, Bruno Gonçalves, Carlos Varandas |PV Name | PV Type | Bit | Relay NO/NC|
|:----------|-------|---:|
Fusion Engineering and Design 86 (2011) 10851090 | ISTTOK:central:Shot-TorPSDisable| bo | 0 | NO |
| ISTTOK:central:Lab-WarningLight| bo |1 | NO |
### Vacuum Node (**Not used, backup server only**)
* Vacuum Pfeiffer Sensors (RS485)
#### Hardware Platform
1. A Raspberry Pi 2, running a raspian Buster distribution..
* Has a USB/RS485 interface for monitoring pressure sensors
#### Process Variables
Process Variables in this IOC Server:
* Connected to RS485 Bus
|PV Name |PV Type |Archive|
|:----------|-------|---:|
| ISTTOK:vacuum:RPump1-Pressure (not used)| ai | yes |
|ISTTOK:vacuum:RPump2-Pressure (not used) | ai | yes |
|ISTTOK:vacuum:TMPump1-PressureAdmission (not used)| ai | yes |
|ISTTOK:vacuum:VVessel-Pressure (not used) | ai | yes |
---
#### Software Platform
1. Linux Raspian "buster" (user :pi):
* IP addr: 192.168.1.120 ( ISTTOK private network)
* NTP/timedatectl time conected to IPFN Gps NTP/PPS server IP:10.136.227.237 193.136.136.129
(this is mandatory, Rpi does not have a Real Time clock see https://www.raspberrypi.org/forums/viewtopic.php?t=178763)
* EPICS 7. To install follow [EPICS Docs](https://docs.epics-controls.org/projects/how-tos/en/latest/getting-started/installation.html)
## Download and configure CS-Studio
* Install JAVA JDK (version Java SE Development Kit 8) or
openjdk-8-jre linux package
* Download ISTTOK EPICS Files to a working folder
* `git clone https://bernardo@git.ipfn.tecnico.ulisboa.pt/r/ISTTOK.git`
* Goto site [CS-Studio](http://download.controlsystemstudio.org/release/4.5/) and download latest version to your OS
* Uncompress folder
* Run `cs-studio` executable
* Choose a workplace folder
* Goto to Menu EDIT->Preferences->CSS Core->Data Sources->Channel Access
* On Address List replace `localhost` with `epics.ipfn.tecnico.ulisboa.pt`
* Uncheck `Auto Address List`
* Restart CS-Studio
* Run File -> Import -> General-> Projects from folder
* point to cloned folder
* Navigate to `ISTTOK/epics/css/sys-mng-opi/CSS`
* Open `SystemManagerIsttok.opi` with "OPI Display"
### EPICS Channel Access Configuration
export EPICS_CA_ADDR_LIST="192.168.1.110 192.168.1.152"
export EPICS_CA_AUTO_ADDR_LIST="NO"
EPICS TOMCAT Channel Access
http://epics.ipfn.tecnico.ulisboa.pt:8080/dbwr/view.jsp?display=http://localhost/displays/isttok.bob
### References
*"EPICS IOC module development and implementation for the ISTTOK machine subsystem operation and control"*
Paulo Carvalho, André Duarte, Tiago Pereira, Bernardo Carvalho, Jorge Sousa, Horácio Fernandes, Carlos Correia, Bruno Gonçalves, Carlos Varandas
Fusion Engineering and Design 86 (2011) 10851090