diff --git a/epics/README.md b/epics/README.md index 65e4af4..1abd8ff 100644 --- a/epics/README.md +++ b/epics/README.md @@ -114,15 +114,16 @@ Process Value in this IOC Server: ### Central Control/Vacuum Node - Vacuum Sensors -- Pffeifer rotatory vacuum pump +- Pffeifer rotatory vacuum pumpa (*RPump1*) - Edwards electro valve -- Seiko Seiki turbomolecular pump and control unit -- Main State Machine +- Seiko Seiki turbomolecular pump and control unit (model SCU-400) +- Main State Machine, see [source](https://git.ipfn.tecnico.ulisboa.pt/blob/ISTTOK.git/master/epics%2Fiocs%2FISTTOKrpi%2FISTTOKrpiApp%2Fsrc%2FIsttokSeqExec.stt) #### Hardware Platform -1. A Raspberry Pi 3, running a linux distribution.. +1. A Raspberry Pi running a linux distribution.. + * 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) -2. Two Interface Boards, Velleman Model [k8000](https://www.velleman.eu/products/view/?id=9383).. +2. Two Interface Boards, Velleman Model [k8000](https://www.velleman.eu/products/view/?id=9383).. * connected to raspberry Pi through I2C interface; * 8 isolated output connected to the relays (6 relays installed for the rotatory control) * 4 isolated outputs connected to SEIKO unit controller @@ -136,15 +137,16 @@ Process Value in this IOC Server: * IP addr:192.168.1.110 ( 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 v. base-3.15.5 (in /usr/local/epics) including modules: - * synApps_5_8 - * asyn-4-26 - * seq-2-2-1 - * autosave-5-6-1 - * IOC installed in '/opt/epics/iocs/' + * EPICS v7 base-7.0 from epics [github](https://github.com/epics-base) + * (in /home/pi/Apps/epics7/epics-base) including modules: + * asynDriver [asyn](https://github.com/epics-modules/asyn) + * [StreamDevice](https://paulscherrerinstitute.github.io/StreamDevice) + * State Notation Language and Sequence v.2.2 [seq](https://www-csr.bessy.de/control/SoftDist/sequencer) + * [autosave](https://github.com/epics-modules/autosave) + * IOC installed in '/home/pi/ISTTOK/epics/iocs/ISTTOKrpi' * Running in `screen deamon` (see `/etc/rc.local`) - For installation EPICS in Rpi see this [link](prjemian.github.io/epicspi) + 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 Process Variables in this IOC Server: @@ -161,6 +163,8 @@ Process Variables in this IOC Server: |ISTTOK:central:COUNTDOWN | mbbi | no | |ISTTOK:central:PULSE-NUMBER | longout | yes | |ISTTOK:central:OPSTATE |longout | yes | +|ISTTOK:central:UPS-OnBattery | bo | no | +|ISTTOK:central:UPS-Shutdown | bo | no | |ISTTOK:central:CurrentTime | stringin | no | |ISTTOK:central:TraceMessage | stringout | yes | |ISTTOK:central:LogMessage | stringout | yes | @@ -180,7 +184,7 @@ Process Variables in this IOC Server: |ISTTOK:central:TMPump1-NormalOperation | bi | 7 | ---------- -* Connected to PCF8574 I2C Address = 57 +* Connected to PCF8574 I2C Address = 57 (Bottom Valleman board) |PV Name | PV Type | Bit | |:----------|-------|---:| @@ -192,7 +196,7 @@ Process Variables in this IOC Server: |ISTTOK:central:TTSystem-tzero| bi | 7 | ---------- -* Connected to PCF8574 Address = 60 (Top Valleman) +* Connected to PCF8574 Address = 60 (Top Valleman Board) |PV Name | PV Type | Bit | Relay #/(NO/NC)| |:----------|-------|---:| @@ -205,7 +209,7 @@ Process Variables in this IOC Server: ---------- -* Connected to TDA8444 DAC @ address 0x20=d32 (Bottom Valleman) +* Connected to TDA8444 DAC @ address 0x20=d32 (Bottom Valleman Board) |PV Name |PV Type |Archive| |:----------|-------|---:| @@ -227,18 +231,28 @@ Process Variables in this IOC Server: | ISTTOK:central:Shot-TorPSCurrentImage"| ai | ch3 | no | ---------- -* Connected to RS485 Bus (Not yet) +* Connected to RS485 Bus (Using USB */dev/ttyUSB0*) -|PV Name |PV Type |Archive| -|:----------|-------|---:| -|ISTTOK:central:RPump1-Pressure | ai | yes | -|ISTTOK:central:RPump2-Pressure | ai | yes | -|ISTTOK:central:TMPump1-PressureAdmission | ai | yes | -|ISTTOK:central:VVessel-Pressure | ai | yes | +|PV Name |PV Type |Archive| RS485 request command| +|:----------|-------|---:|---| +|ISTTOK:central:VVessel-Pressure | ai | yes | out "0010074002=?106"| +|ISTTOK:central:RPump1-Pressure | ai | yes | out "0020074002=?107" | +|ISTTOK:central:RPump2-Pressure (Disabled) | ai | yes | | +|ISTTOK:central:TMPump1-PressureAdmission | ai | yes | out "0030074002=?108" | ---------- +* Connected to [Seeeduino](https://wiki.seeedstudio.com/Grove-4-Channel_SPDT_Relay) Grove - 4-Channel +SPDT Relay Address = 17 -### Vacuum Node (temporary) +|PV Name | PV Type | Bit | Relay NO/NC| +|:----------|-------|---:| +|ISTTOK:central:GasIS-Valves| bo | 0 | NO | +|ISTTOK:central:PrimPneuBreaker| bo | 1 | NO | +|ISTTOK:central:CapBank-Discharge| bo | 2 | NO | +|ISTTOK:central:Clean-TorPneuBreaker| bo | 3 | NO | + + +### Vacuum Node (**Not used, backup server only**) - Vacuum Pfeiffer Sensors (RS485) #### Hardware Platform @@ -252,10 +266,10 @@ Process Variables in this IOC Server: |PV Name |PV Type |Archive| |:----------|-------|---:| -| ISTTOK:vacuum:RPump1-Pressure | ai | yes | -|ISTTOK:vacuum:RPump2-Pressure | ai | yes | -|ISTTOK:vacuum:TMPump1-PressureAdmission | ai | yes | -|ISTTOK:vacuum:VVessel-Pressure | ai | yes | +| 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 @@ -290,7 +304,7 @@ openjdk-8-jre linux package ### EPICS Channel Access Configuration ``` -export EPICS_CA_ADDR_LIST="192.168.1.110 192.168.1.120 192.168.1.152" +export EPICS_CA_ADDR_LIST="192.168.1.110 192.168.1.152" export EPICS_CA_AUTO_ADDR_LIST="NO" ``` diff --git a/epics/html/wsgi/wsgi_isttok_status.py b/epics/html/wsgi/wsgi_isttok_status.py index 0f3ce00..d68db9b 100644 --- a/epics/html/wsgi/wsgi_isttok_status.py +++ b/epics/html/wsgi/wsgi_isttok_status.py @@ -1,38 +1,63 @@ -# https://tecadmin.net/install-apache-mod-wsgi-on-ubuntu-16-04-xenial -# Include in /etc/apache2/conf-available/mod-wsgi.conf : -# WSGIScriptAlias /isttok /var/www/html/wsgi_isttok_status.py -# and -# systemctl restart apache2 +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# if you change this script "touch" it to reload by apache +# e.g touch /var/www/html/wsgi_isttok_status.py +""" +Created on December 8 16:34:35 2019 + https://tecadmin.net/install-apache-mod-wsgi-on-ubuntu-16-04-xenial + + Install: + Include in /etc/apache2/conf-available/mod-wsgi.conf : + WSGIScriptAlias /isttok /var/www/html/wsgi_isttok_status.py + and do: + systemctl restart apache2 + +@author: bernardo carvalho@IPFN +""" # -#import epics from epics import caget, caput, cainfo import os +#os.environ['EPICS_CA_ADDR_LIST'] = 'localhost 192.168.1.110 192.168.1.120' os.environ['EPICS_CA_ADDR_LIST'] = 'localhost 192.168.1.110' os.environ['EPICS_CA_AUTO_ADDR_LIST'] = 'NO' def application(environ,start_response): status = '200 OK' - RPump1press = caget('ISTTOK:central:RPump1-Pressure') - RPump2press = caget('ISTTOK:central:RPump2-Pressure') - TMPump1press = caget('ISTTOK:central:TMPump1-PressureAdmission') - VVesselpress = caget('ISTTOK:central:VVessel-Pressure') - rpiCurrentTime = caget('ISTTOK:central:CurrentTime') - opState = caget('ISTTOK:central:OPSTATE.VAL') - pulseNum = caget('ISTTOK:central:PULSE-NUMBER') + RPump1press = caget('ISTTOK:central:RPump1-Pressure', as_string=True) +# RPump2press = caget('ISTTOK:central:RPump2-Pressure') + TMPump1press = caget('ISTTOK:central:TMPump1-PressureAdmission', as_string=True) + VVesselpress = caget('ISTTOK:central:VVessel-Pressure', as_string=True) +# RPump1press = caget('ISTTOK:vacuum:RPump1-Pressure') +# RPump2press = caget('ISTTOK:vacuum:RPump2-Pressure') +# TMPump1press = caget('ISTTOK:vacuum:TMPump1-PressureAdmission') +# VVesselpress = caget('ISTTOK:vacuum:VVessel-Pressure') + rpiCurrentTime = caget('ISTTOK:central:CurrentTime', as_string=True) + opState = caget('ISTTOK:central:OPSTATE.VAL', as_string=True) + pulseNum = caget('ISTTOK:central:PULSE-NUMBER', as_string=True) + OnBattery = caget('ISTTOK:central:UPS-OnBattery', as_string=True) +# cainfo not working + RPump1Info = cainfo("ISTTOK:central:RPump1-Pressure", print_out=False) html = '\n' \ - '\n' \ - '

ISTTOK Present Condition

\n' - html += '

RPump1-Pressure: ' + str(RPump1press) + ' mBar

' - html += '

RPump2-Pressure: ' + str(RPump2press) + ' mBar

' - html += '

TMPump1-PressureAdmission: ' + str(TMPump1press) + ' mBar

' - html += '

VVessel-Pressure: ' + str(VVesselpress) + ' mBar

' - html += '

OPSTATE: ' + str(opState) + '

' - html += '

PULSE-NUMBER: ' + str(pulseNum) + '

' - html += '

Rpi CurrentTime: ' + str(rpiCurrentTime) + '

' + ' ISTTOK Status page' \ + ' ' \ + '\n

ISTTOK Present Condition

\n' +# html += '

RPump1-Pressure: ' + str(RPump1press) + ' mBar

' + html += '

RPump1-Pressure: ' + RPump1press + ' mBar

' + # html += '

RPump2-Pressure: ' + str(RPump2press) + ' mBar

' + html += '

TMPump1-PressureAdmission: ' + TMPump1press + ' mBar

' + html += '

VVessel-Pressure: ' + VVesselpress + ' mBar

' + html += '

OPSTATE: ' + opState + ', UPS-OnBattery: '+ OnBattery+ '

' + html += '

Note: you can try to login to rpi-isttok machine and do: ' + html += '

caput ISTTOK:central:OPREQ START

' + html += '

PULSE-NUMBER: ' + pulseNum + '

' + html += '

Rpi CurrentTime: ' + rpiCurrentTime + '

' + html += '
 ' + RPump1Info + '
' html += '\n' \ '\n' - response_header = [('Content-type','text/html')] + response_header = [('Content-type','text/html'), + ('Content-Length', str(len(html)))] start_response(status,response_header) - html = bytes(html, encoding= 'utf-8') - return [html] + return [html.encode('UTF-8')] +# html = bytes(html, encoding= 'utf-8') +# return [html] diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db index 8165284..d705ea7 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db @@ -27,7 +27,8 @@ record(bo, "$(P)$(R)TMPump1-ControllerOn" ) { field(ZNAM, "Off" ) field(ONAM, "Pulse" ) field(HIGH, "2.5") - field(FLNK, "$(P)$(R)TMPump1-ControllerOnInv" ) +# Disabled until further notice +# field(FLNK, "$(P)$(R)TMPump1-ControllerOnInv" ) field(VAL,"0") } record(calcout, "$(P)$(R)TMPump1-ControllerOnInv") { @@ -43,7 +44,8 @@ record(bo, "$(P)$(R)TMPump1-ControllerOff" ) { field(ZNAM, "Off" ) field(ONAM, "Pulse" ) field(HIGH, "2.5") - field(FLNK, "$(P)$(R)TMPump1-ControllerOffInv" ) +# Disabled until further notice +# field(FLNK, "$(P)$(R)TMPump1-ControllerOffInv" ) field(VAL,"0") } @@ -321,17 +323,6 @@ record(bo, "$(P)$(R)Clean-TorContactor" ) { ############### ############### -############################ -# TOR CLEAN BREAKER ON/OFF # -############################ -record(bo, "$(P)$(R)Clean-TorPneuBreaker" ) { -## field(DESC," Interruptor de ar comprimido do transformador para a fonte de campo toroidal das descargas de limpeza (500 A)") - field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B0 PP" ) - field( ZNAM, "On" ) - field( ONAM, "Off" ) - field(VAL,"1") -} - record(bo, "$(P)$(R)Shot-TorPSDisable" ) { # field(DESC," É desligado na emergência e em qualquer estado que não seja Process ou Wait Shot.") field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B1 PP" ) @@ -381,17 +372,6 @@ record(bo, "$(P)$(R)Clean-PrimContactor" ) { field(VAL,"1") } -#################################### -### PRIMARY CLEAN BREAKER ON/OFF ### -#################################### -record(bo, "$(P)$(R)Clean-PrimPneuBreaker"){ -#record(bo, "$(P)$(R)PrimaryCleanBreakerOnOff"){ - field( DESC, "Primary Cleaning OnOff") - field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B5 PP" ) - field( ZNAM, "On") - field( ONAM, "Off") - field(VAL,"1") -} ################################## # GIS VALVES ON/OFF # @@ -399,23 +379,12 @@ record(bo, "$(P)$(R)Clean-PrimPneuBreaker"){ record(bo, "$(P)$(R)GasIS-Valves" ) { # field(DESC," 2 válvulas pneumáticas de corte do sistema de injecção de H/D/Ne/He no TOK, 24V out = deixa passar") # record(bo, "$(P)$(R)GISValvesOnOff" ) { - field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B6 PP" ) - field( ZNAM, "On" ) - field( ONAM, "Off" ) - field(VAL,"1") + field( OUT, "$(P)$(R)SEEED4RELAY:17:REGISTER.B0 PP" ) + field( ZNAM, "OFF" ) + field( ONAM, "ON" ) + field(VAL,"0") } -########################################## -# CAP BANK DISCHARGE ON/OFF # -########################################## -record(bo, "$(P)$(R)CapBank-Discharge" ) { - field(DESC," Liga o circuito de descarga do ELCO ") -# record(bo, "$(P)$(R)CapBankDischargeOnOff" ) { - field(OUT, "$(P)$(R)PCF8574:61:REGISTER.B7 PP" ) - field(ZNAM, "On" ) - field(ONAM, "Off" ) - field(VAL,"1") -} #record(bo,"$(P)$(R)Primary-PressureCondition"){ # field(ZNAM, "OFF" ) @@ -442,3 +411,57 @@ record(bo, "$(P)$(R)TMPump1-ManualValve"){ field( ZNAM, "Closed") field( ONAM, "Open") } + +### SEEED 4 RELAY BOARD +# +# + +################################## +# GIS VALVES ON/OFF # +################################## +record(bo, "$(P)$(R)GasIS-Valves" ) { +# field(DESC," 2 válvulas pneumáticas de corte do sistema de injecção de H/D/Ne/He no TOK, 24V out = deixa passar") +# record(bo, "$(P)$(R)GISValvesOnOff" ) { + field( OUT, "$(P)$(R)SEEED4RELAY:17:REGISTER.B0 PP" ) + field( ZNAM, "OFF" ) + field( ONAM, "ON" ) + field(VAL,"0") + field(OSV,"MINOR") +} + +#################################### +### PRIMARY CLEAN BREAKER ON/OFF ### +#################################### +record(bo, "$(P)$(R)Clean-PrimPneuBreaker"){ +#record(bo, "$(P)$(R)PrimaryCleanBreakerOnOff"){ + field( DESC, "Primary Cleaning OnOff") + field( OUT, "$(P)$(R)SEEED4RELAY:17:REGISTER.B1 PP" ) + field( ZNAM, "OFF" ) + field( ONAM, "ON" ) + field(VAL,"0") + field(OSV,"MAJOR") +} +########################################## +# CAP BANK DISCHARGE ON/OFF # +########################################## +record(bo, "$(P)$(R)CapBank-Discharge" ) { + field(DESC,"Liga o circuito de descarga do ELCO ") + field( OUT,"$(P)$(R)SEEED4RELAY:17:REGISTER.B2 PP" ) + field( ZNAM,"OFF" ) + field( ONAM,"ON" ) + field( VAL,"0") + field(OSV,"MINOR") +} +############################ +# TOR CLEAN BREAKER ON/OFF # +############################ +record(bo, "$(P)$(R)Clean-TorPneuBreaker" ) { +## field(DESC," Interruptor de ar comprimido do transformador para a fonte de campo toroidal das descargas de limpeza (500 A)") + field(OUT,"$(P)$(R)SEEED4RELAY:17:REGISTER.B3 PP" ) + field(ZNAM,"OFF" ) + field(ONAM, "ON" ) + field(VAL,"0") + field(OSV,"MAJOR") +} + + diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db index 304a697..d6bb322 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db @@ -94,6 +94,8 @@ record(ai, "$(P)$(R)Shot-TorPSCurrentImage" ) { field(DTYP, "Raw Soft Channel" ) field(INP, "$(P)$(R)PCF8591:72:BYTE2_CH3 PP NMS") field(SCAN, ".2 second") +#Scan Disable Input Link Value + field(DISA, "1") field(ASLO, "39.215686275" ) field(AOFF, "0.0" ) field(EGU, "A" ) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpfeiffer.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpfeiffer.db index 1abf55e..997e6aa 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpfeiffer.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpfeiffer.db @@ -1,121 +1,133 @@ +# vim: sta:et:sw=4:ts=4:sts=4 # 8/5/2021 Only sensor 2 is working. Running with dspIC # 20/9/2021 sensors 1,2,3 are working. Running with dspIC # 20/9/2021 sensors 1,2,3 are working. Running with tty USB record (longin, "$(P)$(R)P001:M") { - field (DESC, "getPressure001 $(bus)") - field (DTYP, "stream") - field (INP, "@pfeiffer.proto getPressure001($(P)$(R)P001:E) $(bus)") -# field (SCAN, "I/O Intr") - field (SCAN, "1 second") - field (FLNK, "$(P)$(R)TMPump1-PressureAdmission") + field (DESC, "getPressure001 $(bus)") + field (DTYP, "stream") + field (INP, "@pfeiffer.proto getPressure001($(P)$(R)P001:E) $(bus)") +# field (SCAN, "I/O Intr") + field (SCAN, "1 second") + field(PHAS, "1") + field (FLNK, "$(P)$(R)VVessel-Pressure") } record (longin, "$(P)$(R)P001:E") { - field (DESC, "Pressure001 exponent $(bus)") + field (DESC, "Pressure001 exponent $(bus)") } -record (calc, "$(P)$(R)TMPump1-PressureAdmission") +record (calc, "$(P)$(R)VVessel-Pressure") { - field(DESC, "ISTTOK:central:TMPump1-PressureAdmission") - field(INPA, "$(P)$(R)P001:M") - field(INPB, "$(P)$(R)P001:E") - field(CALC, "(A*0.001)* 10.0**(B-20)") - field(PREC, "3") - field(EGU, "mBar") - field(HIHI,"1.0e-2") - field(HIGH,"1.0e-3") + field (DESC, "ISTTOK:central:VVessel-Pressure") + # Maximize Status and Severity, MSS propagate all alarms + field(INPA, "$(P)$(R)P001:M MSS") + field(INPB, "$(P)$(R)P001:E") + field(CALC, "(A*0.001)* 10.0**(B-20)") + field(PREC, "3") + field(EGU, "mBar") + field(HIHI,"1.0e-2") + field(HIGH,"1.0e-3") + field(LOW,"1.0e-9") + field(LOLO,"0.5e-9") # field(LOW, "20.0") # field(LOLO,"0.0") field(HHSV,"MAJOR") field(HSV, "MINOR") -# field(LSV, "MINOR") -# field(LLSV,"MAJOR") + field(LSV, "MINOR") + field(LLSV,"MAJOR") } # out "0020074002=?107"; record (longin, "$(P)$(R)P002:M") { - field (DESC, "getPressure002 $(bus)") - field (DTYP, "stream") - field (INP, "@pfeiffer.proto getPressure002($(P)$(R)P002:E) $(bus)") -# field (SCAN, "I/O Intr") - field (SCAN, "1 second") - field (FLNK, "$(P)$(R)RPump1-Pressure") + field (DESC, "getPressure002 $(bus)") + field (DTYP, "stream") + field (INP, "@pfeiffer.proto getPressure002($(P)$(R)P002:E) $(bus)") +# field (SCAN, "I/O Intr") + field (SCAN, "1 second") + field(PHAS, "0") + field (FLNK, "$(P)$(R)RPump1-Pressure") } record (longin, "$(P)$(R)P002:E") { - field (DESC, "Pressure002 exponent $(bus)") + field (DESC, "Pressure002 exponent $(bus)") } record (calc, "$(P)$(R)RPump1-Pressure") { - field (DESC, "ISTTOK:central:RPump1-Pressure") - field(INPA, "$(P)$(R)P002:M") - field(INPB, "$(P)$(R)P002:E") - field(CALC, "(A*0.001)*10.0**(B-20)") - field(PREC, "3") - field(EGU, "mBar") - field(HIHI,"1.0e-1") - field(HIGH,"5.0e-2") + field (DESC, "ISTTOK:central:RPump1-Pressure") + field(INPA, "$(P)$(R)P002:M MSS") + field(INPB, "$(P)$(R)P002:E") + field(CALC, "(A*0.001)*10.0**(B-20)") + field(PREC, "3") + field(EGU, "mBar") + field(HIHI,"1.0e-1") + field(HIGH,"5.0e-2") # field(LOW, "20.0") # field(LOLO,"0.0") field(HHSV,"MAJOR") field(HSV, "MINOR") # field(LSV, "MINOR") -# field(LLSV,"MAJOR") +# field(LLSV,"MAJOR") } # out "0030074002=?108"; record (longin, "$(P)$(R)P003:M") { - field (DESC, "getPressure003 Mantissa $(bus)") - field (DTYP, "stream") - field (INP, "@pfeiffer.proto getPressure003($(P)$(R)P003:E) $(bus)") - field (SCAN, "1 second") -# field (SCAN, "I/O Intr") - field (FLNK, "$(P)$(R)VVessel-Pressure") + field (DESC, "getPressure003 Mantissa $(bus)") + field (DTYP, "stream") + field (INP, "@pfeiffer.proto getPressure003($(P)$(R)P003:E) $(bus)") + field (SCAN, "1 second") + field(PHAS, "2") +# field (SCAN, "I/O Intr") + field (FLNK, "$(P)$(R)TMPump1-PressureAdmission") } record (longin, "$(P)$(R)P003:E") { - field (DESC, "Pressure003 Exponent $(bus)") + field (DESC, "Pressure003 Exponent $(bus)") } -record (calc, "$(P)$(R)VVessel-Pressure") + +record (calc, "$(P)$(R)TMPump1-PressureAdmission") { - field (DESC, "ISTTOK:central:VVessel-Pressure") - field(INPA, "$(P)$(R)P003:M") - field(INPB, "$(P)$(R)P003:E") - field(CALC, "(A*0.001)*10.0**(B-20)") - field(PREC, "3") - field(EGU, "mBar") - field(HIHI,"1.0e-1") - field(HIGH,"1.0e-2") - field(HHSV,"MAJOR") - field(HSV, "MINOR") + field(DESC, "ISTTOK:central:TMPump1-PressureAdmission") + field(INPA, "$(P)$(R)P003:M MSS") + field(INPB, "$(P)$(R)P003:E") + field(CALC, "(A*0.001)*10.0**(B-20)") + field(PREC, "3") + field(EGU, "mBar") + field(HIHI,"1.0e-1") + field(HIGH,"1.0e-2") + field(LOW,"1.0e-9") + field(LOLO,"0.5e-9") + field(HHSV,"MAJOR") + field(HSV, "MINOR") + field(LSV, "MINOR") + field(LLSV,"MAJOR") } # out "0040074002=?109"; # NOT connected 26/10/2021 record (longin, "$(P)$(R)P004:M") { - field (DESC, "getPressure004 Mantissa $(bus)") - field (DTYP, "stream") - field (INP, "@pfeiffer.proto getPressure004($(P)$(R)P004:E) $(bus)") -# field (SCAN, "1 second") -# field (SCAN, "I/O Intr") - field (FLNK, "$(P)$(R)RPump2-Pressure") + field (DESC, "getPressure004 Mantissa $(bus)") + field (DTYP, "stream") + field (INP, "@pfeiffer.proto getPressure004($(P)$(R)P004:E) $(bus)") +# field (SCAN, "1 second") +# field (SCAN, "I/O Intr") + field (FLNK, "$(P)$(R)RPump2-Pressure") } record (longin, "$(P)$(R)P004:E") { - field (DESC, "Pressure004 Exponent $(bus)") + field (DESC, "Pressure004 Exponent $(bus)") } record (calc, "$(P)$(R)RPump2-Pressure") { - field(DESC, "ISTTOK:central:RPump2-Pressure") - field(INPA, "$(P)$(R)P004:M") - field(INPB, "$(P)$(R)P004:E") - field(CALC, "(A*0.001)* 10.0**(B-20)") - field(PREC, "3") - field(EGU, "mBar") + field(DESC, "ISTTOK:central:RPump2-Pressure") + field(INPA, "$(P)$(R)P004:M MSS") + field(INPB, "$(P)$(R)P004:E") + field(CALC, "(A*0.001)* 10.0**(B-20)") + field(PREC, "3") + field(EGU, "mBar") # field(HIHI,"1.0e-1") # field(HIGH,"5.0e-3") # field(LOW, "20.0") @@ -123,13 +135,13 @@ record (calc, "$(P)$(R)RPump2-Pressure") # field(HHSV,"MAJOR") # field(HSV, "MINOR") # field(LSV, "MINOR") -# field(LLSV,"MAJOR") +# field(LLSV,"MAJOR") } record(stringout,"$(P)$(R)RS485Debug") { - field(DESC, "") - field(DTYP, "stream") - field(OUT, "@pfeiffer.proto debug $(bus)") - field(VAL,"") + field(DESC, "") + field(DTYP, "stream") + field(OUT, "@pfeiffer.proto debug $(bus)") + field(VAL,"") } diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db index 02a55c6..1ce0a08 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db @@ -1,3 +1,4 @@ +# vim: sta:et:sw=4:ts=4:sts=4 # # Project : ISTTOK slow Control # @@ -13,257 +14,279 @@ ## record(mbbi, "$(P)$(R)OPSTATE") { - field(DESC, "Multiple Pulse Sequence State") - field(ZRVL, "0") - field(ONVL, "1") - field(TWVL, "2") - field(THVL, "3") - field(FRVL, "4") - field(FVVL, "5") - field(SXVL, "6") - field(SVVL, "7") - field(ZRST, "Stopped") - field(ONST, "Starting") - field(TWST, "Idle") - field(THST, "Clean") - field(FRST, "WaitShot") - field(FVST, "Stopping") - field(SXST, "Emergency") - field(SVST, "UPSEmergency") - field(VAL, "0") + field(DESC, "Multiple Pulse Sequence State") + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "2") + field(THVL, "3") + field(FRVL, "4") + field(FVVL, "5") + field(SXVL, "6") + field(SVVL, "7") + field(ZRST, "Stopped") + field(ONST, "Starting") + field(TWST, "Idle") + field(THST, "Clean") + field(FRST, "WaitShot") + field(FVST, "Stopping") + field(SXST, "Emergency") + field(SVST, "UPSEmergency") + field(VAL, "0") + field(FLNK, "$(P)$(R)OPCALCSTATE") + #field(PINI, "YES") } record(mbbo, "$(P)$(R)LASTOPSTATE") { - info(autosaveFields, "VAL") - field(DESC, "Pulse Sequence Last Saved State") - field(ZRVL, "0") - field(ONVL, "1") - field(TWVL, "2") - field(THVL, "3") - field(FRVL, "4") - field(FVVL, "5") - field(SXVL, "6") - field(SVVL, "7") - field(ZRST, "Stopped") - field(ONST, "Starting") - field(TWST, "Idle") - field(THST, "Clean") - field(FRST, "WaitShot") - field(FVST, "Stopping") - field(SXST, "Emergency") - field(SVST, "UPSEmergency") -# field(VAL, "0") + info(autosaveFields, "VAL") + field(DESC, "Pulse Sequence Last Saved State") + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "2") + field(THVL, "3") + field(FRVL, "4") + field(FVVL, "5") + field(SXVL, "6") + field(SVVL, "7") + field(ZRST, "Stopped") + field(ONST, "Starting") + field(TWST, "Idle") + field(THST, "Clean") + field(FRST, "WaitShot") + field(FVST, "Stopping") + field(SXST, "Emergency") + field(SVST, "UPSEmergency") + field(PINI, "YES") +# field(VAL, "0") } +# record for bit leds record(calc, "$(P)$(R)OPCALCSTATE") { - field(DESC, "Pulse Calculated State") - field(CALC,"2^A") - field(SCAN,"1 second") - field(INPA,"$(P)$(R)OPSTATE.VAL PP NMS") + field(DESC, "Pulse Calculated State") + field(CALC,"2^A") + #field(SCAN,"1 second") + field(INPA,"$(P)$(R)OPSTATE.VAL NPP NMS") } record(calc, "$(P)$(R)STARTCALCSTATE") { - field(DESC, "Start Calculated State") - field(CALC,"2^A") - field(SCAN,"1 second") - field(INPA,"$(P)$(R)STARTINGSTATE.VAL PP NMS") + field(DESC, "Start Calculated State") + field(CALC,"2^A") + field(SCAN,"1 second") + field(INPA,"$(P)$(R)STARTINGSTATE.VAL PP NMS") } record(calc, "$(P)$(R)STOPPINGCALCSTATE") { - field(DESC, "Stop Calculated State") - field(CALC,"2^A") - field(SCAN,"1 second") - field(INPA,"$(P)$(R)STOPPINGSTATE.VAL PP NMS") + field(DESC, "Stop Calculated State") + field(CALC,"2^A") + field(SCAN,"1 second") + field(INPA,"$(P)$(R)STOPPINGSTATE.VAL PP NMS") } record(calc, "$(P)$(R)CLEANCALCSTATE") { - field(DESC, "Clean Automatic Calculated State") - field(CALC,"(2^(A+1))-1") - field(SCAN,"1 second") - field(INPA,"$(P)$(R)CLEANINGSTATE.VAL PP NMS") + field(DESC, "Clean Automatic Calculated State") + field(CALC,"(2^(A+1))-1") + field(SCAN,"1 second") + field(INPA,"$(P)$(R)CLEANINGSTATE.VAL PP NMS") } record(calc, "$(P)$(R)WSHOTCALCSTATE") { - field(DESC, "WaitShot Calculated State") - field(CALC,"2^A") - field(SCAN,"1 second") - field(INPA,"$(P)$(R)WSHOTINGSTATE.VAL PP NMS") + field(DESC, "WaitShot Calculated State") + field(CALC,"2^A") + field(SCAN,"1 second") + field(INPA,"$(P)$(R)WSHOTINGSTATE.VAL PP NMS") } #record(ai, "$(P)$(R)Temperature_0") { -# field(DESC, "ISTTOK Temperature 0 Calculated") -# field(EGU, "C") -# field(SCAN,"1 second") +# field(DESC, "ISTTOK Temperature 0 Calculated") +# field(EGU, "C") +# field(SCAN,"1 second") #} record(bo, "$(P)$(R)UPS-OnBattery") { - info(autosaveFields, "VAL STAT") - field(DESC, "Main APC UPS On Battery status") - field(VAL, "0") - field(ZNAM, "OFF") - field(ONAM, "ON") + info(autosaveFields, "VAL STAT") + field(DESC, "Main APC UPS On Battery status") + field(VAL, "0") + field(PINI, "YES") + field(ZNAM, "OFF") + field(ONAM, "ON") field(OSV, "MAJOR") } record(bo, "$(P)$(R)UPS-Shutdown") { - info(autosaveFields, "VAL STAT") - field(DESC, "Main APC UPS Shutdown request") -# field(VAL, "0") - field(ZNAM, "OFF") - field(ONAM, "ON") + # info(autosaveFields, "VAL STAT") + field(DESC, "Main APC UPS Shutdown request") + field(VAL, "0") + field(ZNAM, "OFF") + field(ONAM, "ON") field(OSV, "MAJOR") + field(PINI, "YES") } record(bo, "$(P)$(R)OPREQ") { - info(autosaveFields, "VAL") - field(DESC, "Pulse Sequence Start/Stop") -# field(VAL, "0") - field(ZNAM, "STOP") - field(ONAM, "START") + info(autosaveFields, "VAL") + field(DESC, "Pulse Sequence Start/Stop") +# field(VAL, "0") + field(PINI, "YES") + field(ZNAM, "STOP") + field(ONAM, "START") } record(bo, "$(P)$(R)CLEANINGMANMODE") { - info(autosaveFields, "VAL") - field(DESC, "Cleaning Manual/Auto") - info(autosaveFields, "VAL") -# field(VAL, "1") - field(ZNAM, "M") - field(ONAM, "A") + info(autosaveFields, "VAL") + field(DESC, "Cleaning Manual/Auto") + info(autosaveFields, "VAL") +# field(VAL, "1") + field(ZNAM, "M") + field(ONAM, "A") } record(bo, "$(P)$(R)FSTriggerStart") { - field(DESC, "FireSignal Trigger Start") - field(VAL, "0") - field(ZNAM, "STOP") - field(ONAM, "START") + field(DESC, "FireSignal Trigger Start") + field(VAL, "0") + field(PINI, "YES") + field(ZNAM, "STOP") + field(ONAM, "START") } record(bo, "$(P)$(R)PROCESS-MODE") { - info(autosaveFields, "VAL") - field(DESC, "Plasma Process Mode") - #field(VAL, "0") - field(ZNAM, "CLEAN") - field(ONAM, "SHOT") + info(autosaveFields, "VAL") + field(DESC, "Plasma Process Mode") + #field(VAL, "0") + #field(PINI, "YES") + field(ZNAM, "CLEAN") + field(ONAM, "SHOT") } record(bo, "$(P)$(R)PROCESS-REQ") { - field(DESC, "Plasma Process sub-states Start/Stop") - field(VAL, "0") - field(ZNAM, "STOP") - field(ONAM, "START") + field(DESC, "Plasma Process sub-states Start/Stop") + field(VAL, "0") + field(PINI, "YES") + field(ZNAM, "STOP") + field(ONAM, "START") + field(SCAN,"Passive") + field(FLNK, "$(P)$(R)PULSE-NUMBER") } record(bo, "$(P)$(R)AUTHORISATION") { - field(DESC, "Pulse Sequence Authorisation Start/Abort") - field(ZNAM, "ABORT") - field(ONAM, "START") - field(VAL, "0") + field(DESC, "Pulse Sequence Authorisation Start/Abort") + field(ZNAM, "ABORT") + field(ONAM, "START") + field(VAL, "0") } -record(longout, "$(P)$(R)PULSE-NUMBER") { - info(autosaveFields, "VAL") - field(DESC, "Pulse Number") +record(calc, "$(P)$(R)PULSE-NUMBER") { + info(autosaveFields, "VAL") + field(DESC, "Pulse Number") + field(INPA, "$(P)$(R)PROCESS-REQ NPP") + field(INPB, "$(P)$(R)PULSE-NUMBER") + field(INPC, "$(P)$(R)PROCESS-MODE NPP") + field(CALC, "(A=1)? B+C :B") + field(SCAN,"Passive") +# field(PINI, "YES") } record(calc, "$(P)$(R)COUNTDOWN") { - field(DESC, "Countdown Increment") - field(INPA,"$(P)$(R)COUNTDOWN") - field(SCAN,"Passive") - field(CALC,"A+1") - field(VAL, "160") + field(DESC, "Countdown Increment") + field(INPA,"$(P)$(R)COUNTDOWN") + field(DISA,"1") + #field(SCAN,"Passive") + field(SCAN,"1 second") + field(CALC,"A+1") + field(VAL, "160") } record(calc, "$(P)$(R)COUNTER") { - field(DESC, "0.1 s counter") - field(INPA, "$(P)$(R)COUNTER") - field(SCAN, ".1 second") - field(CALC, "A + .1") + field(DESC, "0.1 s counter") + field(INPA, "$(P)$(R)COUNTER") + field(SCAN, ".1 second") + field(CALC, "A + .1") } record(stringin, "$(P)$(R)CurrentTime") { - field(DESC, "Current Date and Time of the IOC") - field(SCAN, "1 second") - field(DTYP, "Soft Timestamp") - field(PINI, "YES") - field(INP, "@%d/%m/%Y %H:%M:%S") + field(DESC, "Current Date and Time of the IOC") + field(SCAN, "1 second") + field(DTYP, "Soft Timestamp") + #field(PINI, "YES") + field(INP, "@%d/%m/%Y %H:%M:%S") } record(stringout, "$(P)$(R)TraceMessage") { - field(DESC, "Trace Message from IOC") - field(VAL, "Trace mode ON") + field(DESC, "Trace Message from IOC") + field(VAL, "Trace mode ON") } record(stringout, "$(P)$(R)LogMessage") { - field(DESC, "Log Message ") -# field(VAL, "Trace mode ON") + field(DESC, "Log Message ") +# field(VAL, "Trace mode ON") } record(mbbi, "$(P)$(R)STARTINGSTATE") { - field(DESC, "Starting State Sequence") - field(ZRVL, "0") - field(ONVL, "1") - field(TWVL, "2") - field(THVL, "3") - field(FRVL, "4") - field(FVVL, "5") - field(ZRST, "NonStarting") - field(ONST, "Starting1") - field(TWST, "WaitManV") - field(THST, "WaitPress") - field(FRST, "WaitTMP") - field(FVST, "StartEnd") - field(VAL, "0") + field(DESC, "Starting State Sequence") + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "2") + field(THVL, "3") + field(FRVL, "4") + field(FVVL, "5") + field(ZRST, "NonStarting") + field(ONST, "Starting1") + field(TWST, "WaitManV") + field(THST, "WaitPress") + field(FRST, "WaitTMP") + field(FVST, "StartEnd") + field(VAL, "0") } record(mbbi, "$(P)$(R)CLEANINGSTATE") { - field(DESC, "Cleaning State Sequence") - field(ZRVL, "0") - field(ONVL, "1") - field(TWVL, "2") - field(THVL, "3") - field(FRVL, "4") - field(FVVL, "5") - field(ZRST, "NonCleaning") - field(ONST, "Cleaning1") - field(TWST, "Cleaning2") - field(THST, "Cleaning3") - field(FRST, "Cleaning4") - field(FVST, "Cleaning5") - field(VAL, "0") + field(DESC, "Cleaning State Sequence") + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "2") + field(THVL, "3") + field(FRVL, "4") + field(FVVL, "5") + field(SXVL, "6") + field(ZRST, "NonCleaning") + field(ONST, "Cleaning1") + field(TWST, "Cleaning2") + field(THST, "Cleaning3") + field(FRST, "Cleaning4") + field(FVST, "Cleaning5") + field(SXST, "Cleaning6") + field(VAL, "0") } record(mbbi, "$(P)$(R)WSHOTINGSTATE") { - field(DESC, "Plasma Shot State Sequence") - field(ZRVL, "0") - field(ONVL, "1") - field(TWVL, "2") - field(THVL, "3") - field(FRVL, "4") - field(FVVL, "5") - field(SXVL, "6") - field(SVVL, "7") - field(EIVL, "8") - field(NIVL, "9") - field(TEVL, "10") - field(ELVL, "11") - field(TVVL, "12") - field(TTVL, "13") - field(ZRST, "NonShooting") - field(ONST, "ShotWTrig") - field(TWST, "Shooting2") - field(THST, "Shooting3") - field(FRST, "Shooting4") - field(FVST, "Shooting5") - field(SXST, "Shooting6") - field(SVST, "Shooting7") - field(EIST, "Shooting8") - field(NIST, "Shooting9") - field(TEST, "Shooting10") - field(ELST, "Shooting11") - field(TVST, "Shooting12") - field(TTST, "ShotEnd") - field(VAL, "0") + field(DESC, "Plasma Shot State Sequence") + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "2") + field(THVL, "3") + field(FRVL, "4") + field(FVVL, "5") + field(SXVL, "6") + field(SVVL, "7") + field(EIVL, "8") + field(NIVL, "9") + field(TEVL, "10") + field(ELVL, "11") + field(TVVL, "12") + field(TTVL, "13") + field(ZRST, "NonShooting") + field(ONST, "ShotWTrig") + field(TWST, "Shooting2") + field(THST, "Shooting3") + field(FRST, "Shooting4") + field(FVST, "Shooting5") + field(SXST, "Shooting6") + field(SVST, "Shooting7") + field(EIST, "Shooting8") + field(NIST, "Shooting9") + field(TEST, "Shooting10") + field(ELST, "Shooting11") + field(TVST, "Shooting12") + field(TTST, "ShotEnd") + field(VAL, "0") } record(mbbi, "$(P)$(R)STOPPINGSTATE") { diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/Makefile b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/Makefile index 642dba3..a6074c5 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/Makefile +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/Makefile @@ -11,11 +11,13 @@ DB += ISTTOKpcf8591.db DB += ISTTOKpfeiffer.db DB += ISTTOKtda8444.db DB += sendmail.db +DB += seeed4relay.db DB += pcf8591.proto DB += tda8444.proto DB += sendmail.proto DB += pcf8574.proto DB += pfeiffer.proto +DB += seeed4relay.proto # If .db template is not named *.template add # _TEMPLATE = diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pfeiffer.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pfeiffer.proto index 71ea537..bbc1bb8 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pfeiffer.proto +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pfeiffer.proto @@ -1,18 +1,18 @@ -Terminator=CR; +Terminator = CR; +inTerminator = CR; # CR and LF are control characters, respectively coded 0x0D (13 decimal) and 0x0A (10 decimal) -# CR and LF are control characters, respectively coded 0x0D (13 decimal) and 0x0A (10 decimal) -MaxInput = 30; +MaxInput = 20; ExtraInput = Ignore; # Values in millisecond -LockTimeout = 1000; +LockTimeout = 500; # Affects first out command in a protocol. # If other records currently use the device, how many milliseconds to wait for # exclusive access to the device before giving up? #ReadTimeout = 1500; -ReplyTimeout = 400; +ReplyTimeout = 300; #PollPeriod = $ReplyTimeout; #Integer. Affects first in command in I/O Intr mode (see chapter Record Processing). diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/seeed4relay.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/seeed4relay.db new file mode 100644 index 0000000..463d463 --- /dev/null +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/seeed4relay.db @@ -0,0 +1,19 @@ +############################################################## +# ### Read/Write SEEED Relay Board address 0x11=17 register ## +############################################################# +record( mbboDirect, "$(P)$(R)SEEED4RELAY:$(A):REGISTER") { +#record(longout, "$(P)$(R)SEEED4RELAY:$(A):REGISTER") { + field(DTYP, "stream") + field(OUT, "@seeed4relay.proto wReg($(A)) I2C") +# field(DRVH, "15" ) +# field(DRVL, "0" ) + field(SHFT, "0") + field(NOBT, "4") + field(VAL, 0) +# field(PINI,"YES") +} +record( mbbiDirect, "$(P)$(R)SEEED4RELAY:$(A):REGISTER:READ") { + field(DTYP, "stream") + field(INP, "@seeed4relay.proto rReg($(A)) I2C") +} + diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/seeed4relay.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/seeed4relay.proto new file mode 100644 index 0000000..902cc72 --- /dev/null +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/seeed4relay.proto @@ -0,0 +1,32 @@ +Terminator = ""; +LockTimeout = 500; +ReplyTimeout = 100; +ReadTimeout = 100; +WriteTimeout = 100; +MaxInput = 1; +ExtraInput = Error; + + +# IMPORTANT: Compile drvAsynI2C with flag STREAM_WORKAROUND = 1 + +#define CMD_CHANNEL_CTRL 0x10 +#define CMD_SAVE_I2C_ADDR 0x11 +#define CMD_READ_I2C_ADDR 0x12 +#define CMD_READ_FIRMWARE_VER 0x13 + +rReg { + out ${1} 16; + in "%01r"; +} + +rFw { + out ${1} 18; + in "%01r"; +} +## @init { rReg; } +## +wReg { + out ${1} 16 "%.1r"; +} + +# @init { out ${1}; in "%.1r"; } diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/sendmail.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/sendmail.proto index 3a7fe99..f4a0d63 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/sendmail.proto +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/sendmail.proto @@ -40,7 +40,7 @@ mail_end { send { mail_start; out "Problem is: %s\n"; - out "Please check: http://epics.ipfn.ist.utl.pt/isttok"; + out "Please check: http://epics.ipfn.tecnico.ulisboa.pt/isttok"; mail_end; } diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt index 921f625..0da37e1 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt @@ -27,6 +27,8 @@ short PCF_RELAY_OFF= 1; short PCF_INPUT_ON = 0; short PCF_INPUT_OFF= 1; short PCF_PULSE_ON = 1; +short SEEED_RELAY_OFF= 0; +short SEEED_RELAY_ON = 1; short STRST_NonStarting = 0; short STRST_Starting1 = 1; @@ -71,7 +73,7 @@ short POS_Clean =3; short POS_WaitShot=4; short POS_Stopping=5; short POS_Emergency=6; -short POS_UPSEmergency=7; +//short POS_UPSEmergency=7; short ON=1; short OFF=0; @@ -192,49 +194,52 @@ assign IsttokVVesselTemperature to "ISTTOK:temperature:VVessel-Temperature"; monitor IsttokVVesselTemperature; */ -short IsttokShotBuzzer; -assign IsttokShotBuzzer to "ISTTOK:central:Buzzer"; +short IsttokBuzzer; +assign IsttokBuzzer to "ISTTOK:central:Buzzer"; -short IsttokShotLab_WarningLight; -assign IsttokShotLab_WarningLight to "ISTTOK:central:Lab-WarningLight"; +short IsttokLab_WarningLight; +assign IsttokLab_WarningLight to "ISTTOK:central:Lab-WarningLight"; -short IsttokShotGasIS_Valves; -assign IsttokShotGasIS_Valves to "ISTTOK:central:GasIS-Valves"; +short IsttokGasIS_Valves; +assign IsttokGasIS_Valves to "ISTTOK:central:GasIS-Valves"; -short IsttokShotVVessel_Filament; -assign IsttokShotVVessel_Filament to "ISTTOK:central:VVessel-Filament"; +short IsttokVVessel_Filament; +assign IsttokVVessel_Filament to "ISTTOK:central:VVessel-Filament"; -short IsttokShotCapBank_Charge; -assign IsttokShotCapBank_Charge to "ISTTOK:central:CapBank-Charge"; +short IsttokCapBank_Charge; +assign IsttokCapBank_Charge to "ISTTOK:central:CapBank-Charge"; -short IsttokShotCapBank_Discharge; -assign IsttokShotCapBank_Discharge to "ISTTOK:central:CapBank-Discharge"; +short IsttokCapBank_Discharge; +assign IsttokCapBank_Discharge to "ISTTOK:central:CapBank-Discharge"; -short IsttokShotClean_TorContactor; -assign IsttokShotClean_TorContactor to "ISTTOK:central:Clean-TorContactor"; +short IsttokClean_TorContactor; +assign IsttokClean_TorContactor to "ISTTOK:central:Clean-TorContactor"; -short IsttokShotClean_TorPneuBreaker; -assign IsttokShotClean_TorPneuBreaker to "ISTTOK:central:Clean-TorPneuBreaker"; +short IsttokClean_TorPneuBreaker; +assign IsttokClean_TorPneuBreaker to "ISTTOK:central:Clean-TorPneuBreaker"; -short IsttokShotShot_TorPSTrigger; -assign IsttokShotShot_TorPSTrigger to "ISTTOK:central:Shot-TorPSTrigger"; -monitor IsttokShotShot_TorPSTrigger; +short Isttok_TorPSTrigger; +assign Isttok_TorPSTrigger to "ISTTOK:central:Shot-TorPSTrigger"; +monitor Isttok_TorPSTrigger; -short IsttokShotShot_TorPSDisable; -assign IsttokShotShot_TorPSDisable to "ISTTOK:central:Shot-TorPSDisable"; +short Isttok_TorPSDisable; +assign Isttok_TorPSDisable to "ISTTOK:central:Shot-TorPSDisable"; -short IsttokShotClean_PrimContactor; -assign IsttokShotClean_PrimContactor to "ISTTOK:central:Clean-PrimContactor"; +short IsttokClean_PrimContactor; +assign IsttokClean_PrimContactor to "ISTTOK:central:Clean-PrimContactor"; -short IsttokShotClean_PrimPneuBreaker; -assign IsttokShotClean_PrimPneuBreaker to "ISTTOK:central:Clean-PrimPneuBreaker"; +short IsttokClean_PrimPneuBreaker; +assign IsttokClean_PrimPneuBreaker to "ISTTOK:central:Clean-PrimPneuBreaker"; -short IsttokShotCountdown; -assign IsttokShotCountdown to "ISTTOK:central:COUNTDOWN"; -monitor IsttokShotCountdown; +short IsttokCountdown; +assign IsttokCountdown to "ISTTOK:central:COUNTDOWN"; +monitor IsttokCountdown; -string IsttokShotCountdownScan; -assign IsttokShotCountdownScan to "ISTTOK:central:COUNTDOWN.SCAN"; +//string IsttokCountdownScan; +//assign IsttokCountdownScan to "ISTTOK:central:COUNTDOWN.SCAN"; + +short IsttokCountdownDisa; +assign IsttokCountdownDisa to "ISTTOK:central:COUNTDOWN.DISA"; short IsttokEmergency; assign IsttokEmergency to "ISTTOK:central:Emergency"; @@ -248,9 +253,9 @@ short IsttokupsBatteryON; assign IsttokupsBatteryON "{unit}:central:UPS-OnBattery"; monitor IsttokupsBatteryON; -short IsttokShutdown; -assign IsttokShutdown "ISTTOK:central:UPS-Shutdown"; -monitor IsttokShutdown; +short IsttokUpsShutdown; +assign IsttokUpsShutdown "ISTTOK:central:UPS-Shutdown"; +monitor IsttokUpsShutdown; //string tmp1_stat; @@ -264,6 +269,7 @@ assign sendMail to "ISTTOK:central:sendmail"; /* Main Pulse State Set */ ss PulseSequence { +/*********** State: init ****************** */ state init { entry { strcpy(msg, "INIT: Sequence Entry"); @@ -274,47 +280,47 @@ ss PulseSequence { pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotCountdown = 160; - pvPut(IsttokShotCountdown); + IsttokCountdown = 160; + pvPut(IsttokCountdown); // IsttokProcMode = OFF; // UPON POWER-DOWN OR FAILURE PREVENT TO ENTER WAITSHOT ON POWER-UP! // pvPut(IsttokProcMode); - IsttokShotClean_PrimContactor = PCF_RELAY_OFF; - pvPut(IsttokShotClean_PrimContactor); + IsttokClean_PrimContactor = PCF_RELAY_OFF; + pvPut(IsttokClean_PrimContactor); - IsttokShotClean_PrimPneuBreaker = PCF_RELAY_OFF; - pvPut(IsttokShotClean_PrimPneuBreaker); + IsttokClean_PrimPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_PrimPneuBreaker); - IsttokShotBuzzer = PCF_RELAY_OFF; - pvPut(IsttokShotBuzzer); + IsttokBuzzer = PCF_RELAY_OFF; + pvPut(IsttokBuzzer); - IsttokShotCapBank_Charge = PCF_RELAY_OFF; - pvPut(IsttokShotCapBank_Charge); + IsttokCapBank_Charge = PCF_RELAY_OFF; + pvPut(IsttokCapBank_Charge); - IsttokShotCapBank_Discharge = PCF_RELAY_OFF; - pvPut(IsttokShotCapBank_Discharge); + IsttokCapBank_Discharge = SEEED_RELAY_OFF; + pvPut(IsttokCapBank_Discharge); - IsttokShotVVessel_Filament = PCF_RELAY_OFF; - pvPut(IsttokShotVVessel_Filament); + IsttokVVessel_Filament = PCF_RELAY_OFF; + pvPut(IsttokVVessel_Filament); - IsttokShotGasIS_Valves = PCF_RELAY_OFF; - pvPut(IsttokShotGasIS_Valves); + IsttokGasIS_Valves = SEEED_RELAY_OFF; + pvPut(IsttokGasIS_Valves); - IsttokShotLab_WarningLight = PCF_RELAY_OFF; - pvPut(IsttokShotLab_WarningLight); + IsttokLab_WarningLight = PCF_RELAY_OFF; + pvPut(IsttokLab_WarningLight); - IsttokShotClean_TorPneuBreaker = PCF_RELAY_OFF; - pvPut(IsttokShotClean_TorPneuBreaker); + IsttokClean_TorPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_TorPneuBreaker); - IsttokShotClean_TorContactor = PCF_RELAY_OFF; - pvPut(IsttokShotClean_TorContactor); + IsttokClean_TorContactor = PCF_RELAY_OFF; + pvPut(IsttokClean_TorContactor); - IsttokShotShot_TorPSDisable = PCF_RELAY_OFF; - pvPut(IsttokShotShot_TorPSDisable); + Isttok_TorPSDisable = PCF_RELAY_OFF; + pvPut(Isttok_TorPSDisable); - IsttokShotShot_TorPSTrigger= OFF; - pvPut(IsttokShotShot_TorPSTrigger); + Isttok_TorPSTrigger= OFF; + pvPut(Isttok_TorPSTrigger); IsttokTMPump1_ControllerOff = OFF; pvPut(IsttokTMPump1_ControllerOff); @@ -349,6 +355,7 @@ ss PulseSequence { // IsttokOPSTATE = POS_Stopping; // pvPut(IsttokOPSTATE); } state Stopping + when (delay(5) && IsttokOPREQ == START ) { strcpy(msg, "State to Starting"); pvPut(msg); @@ -359,7 +366,7 @@ ss PulseSequence { } state Starting } -/*********** State Stopped ****************** */ +/*********** State: Stopped ****************** */ state Stopped { entry{ IsttokLastOPSTATE = POS_Stopped; @@ -375,6 +382,7 @@ ss PulseSequence { } state Emergency when ((IsttokOPREQ == START) && (IsttokupsBatteryON != ON)) { +// && (pvStatus(IsttokRPump1_Pressure) == pvStatOK) && (pvStatus(IsttokTMPump1_Emergency) == pvStatOK)) { strcpy(msg, "State to Starting"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); @@ -382,18 +390,25 @@ ss PulseSequence { } state Starting } -/******** State Starting ***********************/ +/******** State: Starting ***********************/ state Starting { - entry{ + entry{ IsttokOPSTATE = POS_Starting; pvPut(IsttokOPSTATE); - } + } when(IsttokEmergency == ON) { strcpy(msg, "Emergency from Starting"); pvPut(msg); errlogSevPrintf(MAJOR, "%s\n",msg); /* Pulse state change to Emergency*/ } state Emergency + when (IsttokupsBatteryON == ON) { + strcpy(msg, "Power UPS OB, Starting to Stopping"); + pvPut(msg); + errlogSevPrintf(MAJOR, "%s\n",msg); + IsttokOPREQ = STOP; + pvPut(IsttokOPREQ); + } state Stopping when (IsttokOPREQ == STOP) { strcpy(msg, "State to Stopping"); pvPut(msg); @@ -409,27 +424,24 @@ ss PulseSequence { } state Idle } -/********** State Idle ****************************/ +/********** State: Idle ****************************/ state Idle { - entry{ + entry { IsttokOPSTATE = POS_Idle; pvPut(IsttokOPSTATE); IsttokLastOPSTATE = POS_Idle; pvPut(IsttokLastOPSTATE); - IsttokShotShot_TorPSDisable = PCF_RELAY_OFF; - pvPut(IsttokShotShot_TorPSDisable); + Isttok_TorPSDisable = PCF_RELAY_OFF; + pvPut(Isttok_TorPSDisable); IsttokProcReq = STOP; pvPut(IsttokProcReq); - } - when (IsttokupsBatteryON == ON) { - strcpy(msg, "Power Emergency, go to Stopping"); + } + when (IsttokUpsShutdown == ON) { + strcpy(msg, "Power Emergency SD, Idle to Stopping"); pvPut(msg); errlogSevPrintf(MAJOR, "%s\n",msg); IsttokOPREQ = STOP; pvPut(IsttokOPREQ); - /* State change to Stopping */ - IsttokOPSTATE = POS_UPSEmergency; - pvPut(IsttokOPSTATE); } state Stopping when(IsttokEmergency == ON){ @@ -439,14 +451,17 @@ ss PulseSequence { /* Pulse state change to Emergency*/ } state Emergency - when ( pvStatus(IsttokRPump1_Pressure) != pvStatOK || pvStatus(IsttokTMPump1_Emergency) != pvStatOK ) { + when ( (pvStatus(IsttokRPump1_Pressure) != pvStatOK) || (pvStatus(IsttokTMPump1_Emergency) != pvStatOK) ) { //when ( pvStatus(IsttokRPump1_Pressure) != pvStatOK || pvStatus(IsttokRPump2_Pressure) != pvStatOK || // pvStatus(IsttokTMPump1_Emergency) != pvStatOK || pvStatus(IsttokTMPump2_Emergency) != pvStatOK) { /* Vacuum emergency: Pulse state change to Stopping */ - IsttokOPREQ = STOP; - pvPut(IsttokOPREQ); + /*IsttokOPREQ = STOP; State should recover from */ + /*pvPut(IsttokOPREQ);*/ //strcpy(sendMail, "Vacuum Emergency while Idle"); - sprintf(sendMail, "Rpump1:%1.1e TMP1:%d",IsttokRPump1_Pressure,IsttokTMPump1_Emergency); + strcpy(msg, "State Idle to Stopping"); + pvPut(msg); + errlogSevPrintf(MINOR, "%s\n", msg); + sprintf(sendMail, "Rpump1 Pressure:%1.1e TMP1 Pressure:%d",IsttokRPump1_Pressure,IsttokTMPump1_Emergency); pvPut(sendMail); } state Stopping @@ -460,12 +475,14 @@ ss PulseSequence { errlogSevPrintf(MINOR, "%s\n",msg); /* Pulse state change to Stopping */ } state Stopping + when (IsttokProcReq==START && IsttokProcMode==CLEAN ) { strcpy(msg, "State to Clean"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); /* Pulse state change to Clean */ } state Clean + when (IsttokProcReq==START && IsttokProcMode==SHOT ) { strcpy(msg, "State to WaitShot"); pvPut(msg); @@ -474,7 +491,7 @@ ss PulseSequence { } state WaitShot } -/******* State Clean ***************************/ +/******* State: Clean ***************************/ state Clean { entry{ IsttokOPSTATE = POS_Clean; @@ -488,6 +505,17 @@ ss PulseSequence { when (IsttokOPREQ == STOP) {} state Stopping + when (IsttokupsBatteryON == ON) { + strcpy(msg, "Power UPS OB, Clean to Idle"); + pvPut(msg); + errlogSevPrintf(MAJOR, "%s\n",msg); + IsttokOPREQ = STOP; + pvPut(IsttokOPREQ); + /* State change to UPSEmergency */ + /*IsttokOPSTATE = POS_Idle;*/ + /*pvPut(IsttokOPSTATE);*/ + } state Idle + when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK) { //when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK || // pvStatus(IsttokTMPump2_Emergency) != pvStatOK) { @@ -507,27 +535,27 @@ ss PulseSequence { } state Emergency } -/******** State WaitShot *************************/ +/******** State: WaitShot *************************/ state WaitShot { entry{ strcpy(msg, "Toroidal Shot Enable"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotShot_TorPSDisable = PCF_RELAY_ON; - pvPut(IsttokShotShot_TorPSDisable); + Isttok_TorPSDisable = PCF_RELAY_ON; + pvPut(Isttok_TorPSDisable); IsttokOPSTATE = POS_WaitShot; pvPut(IsttokOPSTATE); } when (IsttokupsBatteryON == ON) { - strcpy(msg, "Power Emergency, go to UPSEmergency"); + strcpy(msg, "Power UPS OB, WaitShot to Idle"); pvPut(msg); errlogSevPrintf(MAJOR, "%s\n",msg); IsttokOPREQ = STOP; pvPut(IsttokOPREQ); /* State change to UPSEmergency */ - IsttokOPSTATE = POS_UPSEmergency; - pvPut(IsttokOPSTATE); - } state UpsEmergency + /*IsttokOPSTATE = POS_Idle;*/ + /*pvPut(IsttokOPSTATE);*/ + } state Idle when(IsttokEmergency == ON){ strcpy(msg, "Emergency from WaitShot"); @@ -557,36 +585,37 @@ ss PulseSequence { } state Stopping } - /* ************** State Stopping *********** */ + /* ************** State: Stopping *********** */ state Stopping { entry{ + IsttokOPSTATE = POS_Stopping; + pvPut(IsttokOPSTATE); /*Just to be sure */ - IsttokShotShot_TorPSDisable = PCF_RELAY_OFF; - pvPut(IsttokShotShot_TorPSDisable); + Isttok_TorPSDisable = PCF_RELAY_OFF; + pvPut(Isttok_TorPSDisable); - IsttokShotCapBank_Charge = PCF_RELAY_OFF; - pvPut(IsttokShotCapBank_Charge); + IsttokCapBank_Charge = PCF_RELAY_OFF; + pvPut(IsttokCapBank_Charge); - IsttokShotCapBank_Discharge = PCF_RELAY_OFF; - pvPut(IsttokShotCapBank_Discharge); + IsttokCapBank_Discharge = SEEED_RELAY_OFF; + pvPut(IsttokCapBank_Discharge); - IsttokShotGasIS_Valves = PCF_RELAY_OFF; - pvPut(IsttokShotGasIS_Valves); + IsttokGasIS_Valves = SEEED_RELAY_OFF; + pvPut(IsttokGasIS_Valves); - IsttokShotVVessel_Filament = PCF_RELAY_OFF; - pvPut(IsttokShotVVessel_Filament); + IsttokVVessel_Filament = PCF_RELAY_OFF; + pvPut(IsttokVVessel_Filament); IsttokProcReq = STOP; pvPut(IsttokProcReq); - IsttokOPSTATE = POS_Stopping; - pvPut(IsttokOPSTATE); IsttokLastOPSTATE = POS_Stopping; pvPut(IsttokLastOPSTATE); } when ((IsttokOPREQ == START) && (IsttokupsBatteryON != ON) ) { - strcpy(msg, "State to Starting"); + //&& (pvStatus(IsttokRPump1_Pressure) == pvStatOK) && (pvStatus(IsttokTMPump1_Emergency) == pvStatOK)) { + strcpy(msg, "State Stopping to Starting"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); /* State change to Starting */ @@ -600,38 +629,48 @@ ss PulseSequence { } state Stopped } - /*State Emergency*/ + /************* State: Emergency ******************/ state Emergency { entry { strcpy(msg, "Emergency Toroidal Shot Disable"); pvPut(msg); errlogSevPrintf(MAJOR, "%s\n",msg); - IsttokShotShot_TorPSDisable = PCF_RELAY_OFF; - pvPut(IsttokShotShot_TorPSDisable); + Isttok_TorPSDisable = PCF_RELAY_OFF; + pvPut(Isttok_TorPSDisable); strcpy(msg, "EMERGENCY: CAPBANK Charge OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotCapBank_Charge = PCF_RELAY_OFF; - pvPut(IsttokShotCapBank_Charge); + IsttokCapBank_Charge = PCF_RELAY_OFF; + pvPut(IsttokCapBank_Charge); strcpy(msg, "EMERGENCY: CAPBANK CrowBar Close"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotCapBank_Discharge = PCF_RELAY_OFF; - pvPut(IsttokShotCapBank_Discharge); + IsttokCapBank_Discharge = SEEED_RELAY_OFF; + pvPut(IsttokCapBank_Discharge); + + strcpy(msg, "Prim_Pneu_Breaker OFF"); + pvPut(msg); + IsttokClean_PrimPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_PrimPneuBreaker); + + strcpy(msg, "Tor_Pneu_Breaker OFF"); + pvPut(msg); + IsttokClean_TorPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_TorPneuBreaker); strcpy(msg, "EMERGENCY: GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotGasIS_Valves = PCF_RELAY_OFF; - pvPut(IsttokShotGasIS_Valves); + IsttokGasIS_Valves = SEEED_RELAY_OFF; + pvPut(IsttokGasIS_Valves); strcpy(msg, "EMERGENCY: Filament OFF"); pvPut(msg); errlogSevPrintf(MAJOR, "%s\n",msg); - IsttokShotVVessel_Filament = PCF_RELAY_OFF; - pvPut(IsttokShotVVessel_Filament); + IsttokVVessel_Filament = PCF_RELAY_OFF; + pvPut(IsttokVVessel_Filament); } when (delay(1.0) && (IsttokEmergency == OFF) && (IsttokOPSTATE == POS_WaitShot || IsttokOPSTATE==POS_Clean) ){ /* Pulse state change to Idle */ @@ -674,71 +713,59 @@ ss PulseSequence { } state Stopped } - /*State UpsEmergency*/ - state UpsEmergency { - entry { - strcpy(msg, "Emergency Toroidal Shot Disable"); - errlogSevPrintf(MAJOR, "%s\n",msg); - IsttokShotShot_TorPSDisable = PCF_RELAY_OFF; - pvPut(IsttokShotShot_TorPSDisable); - - strcpy(msg, "EMERGENCY: CAPBANK Charge OFF"); - errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotCapBank_Charge = PCF_RELAY_OFF; - pvPut(IsttokShotCapBank_Charge); - - strcpy(msg, "EMERGENCY: CAPBANK CrowBar Close"); - errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotCapBank_Discharge = PCF_RELAY_OFF; - pvPut(IsttokShotCapBank_Discharge); - - strcpy(msg, "EMERGENCY: GIS Valves CLOSE"); - errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotGasIS_Valves = PCF_RELAY_OFF; - pvPut(IsttokShotGasIS_Valves); - - strcpy(msg, "UPS EMERGENCY: Filament OFF"); - pvPut(msg); - errlogSevPrintf(MAJOR, "%s\n",msg); - IsttokShotVVessel_Filament = PCF_RELAY_OFF; - pvPut(IsttokShotVVessel_Filament); - } - when (IsttokupsBatteryON == ON) { - /* Pulse state change to Stopping */ - strcpy(msg, "State to Stopping"); - pvPut(msg); - errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokProcReq = STOP; - pvPut(IsttokProcReq); - IsttokOPSTATE = POS_Stopping; - pvPut(IsttokOPSTATE); - } state Stopping - when (delay(6.0) && (IsttokupsBatteryON == OFF) && (IsttokOPSTATE == POS_Idle)){ - /* Pulse state change to Idle */ - strcpy(msg, "State to Idle"); - pvPut(msg); - errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokOPSTATE = POS_Idle; - pvPut(IsttokOPSTATE); - } state Idle - /* - when (delay(6.0) && (IsttokupsBatteryON == OFF) && - ((IsttokOPSTATE == POS_Starting)) || (IsttokOPSTATE == POS_Stopping)){ - // TODO Check these 2 transictions - strcpy(msg, "State to Stopping"); - pvPut(msg); - errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokOPREQ = STOP; - pvPut(IsttokOPREQ); - // Pulse state change to Stopping - IsttokOPSTATE = POS_Stopping; - pvPut(IsttokOPSTATE); - } state Stopping - */ - } + /***** State: UpsEmergency *****/ +/* + * state UpsEmergency { + * entry { + * strcpy(msg, "Emergency Toroidal Shot Disable"); + * errlogSevPrintf(MAJOR, "%s\n",msg); + * Isttok_TorPSDisable = PCF_RELAY_OFF; + * pvPut(Isttok_TorPSDisable); + * + * strcpy(msg, "EMERGENCY: CAPBANK Charge OFF"); + * errlogSevPrintf(NO_ALARM, "%s\n",msg); + * IsttokCapBank_Charge = PCF_RELAY_OFF; + * pvPut(IsttokCapBank_Charge); + * + * strcpy(msg, "EMERGENCY: CAPBANK CrowBar Close"); + * errlogSevPrintf(NO_ALARM, "%s\n",msg); + * IsttokCapBank_Discharge = SEEED_RELAY_OFF; + * pvPut(IsttokCapBank_Discharge); + * + * strcpy(msg, "EMERGENCY: GIS Valves CLOSE"); + * errlogSevPrintf(NO_ALARM, "%s\n",msg); + * IsttokGasIS_Valves = SEEED_RELAY_OFF; + * pvPut(IsttokGasIS_Valves); + * + * strcpy(msg, "UPS EMERGENCY: Filament OFF"); + * pvPut(msg); + * errlogSevPrintf(MAJOR, "%s\n",msg); + * IsttokVVessel_Filament = PCF_RELAY_OFF; + * pvPut(IsttokVVessel_Filament); + * } + * when (IsttokupsBatteryON == ON) { + * [> Pulse state change to Stopping <] + * strcpy(msg, "State to Stopping"); + * pvPut(msg); + * errlogSevPrintf(NO_ALARM, "%s\n",msg); + * IsttokProcReq = STOP; + * pvPut(IsttokProcReq); + * [>IsttokOPSTATE = POS_Stopping;<] + * [>pvPut(IsttokOPSTATE);<] + * } state Stopping + * when (delay(6.0) && (IsttokupsBatteryON == OFF) && (IsttokOPSTATE == POS_Idle)){ + * [> Pulse state change to Idle <] + * strcpy(msg, "State to Idle"); + * pvPut(msg); + * errlogSevPrintf(NO_ALARM, "%s\n",msg); + * IsttokOPSTATE = POS_Idle; + * pvPut(IsttokOPSTATE); + y + * } + */ } -/*********** Starting SUB-State Set ************/ +/*********** SUB-State: StartingSequence Set ************/ ss StartingSequence { state NonStarting { entry { @@ -751,15 +778,16 @@ ss StartingSequence { errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokRPump1_Motor = PCF_RELAY_OFF; pvPut(IsttokRPump1_Motor); - strcpy(msg, "Rotary Pump2 ON"); - pvPut(msg); - errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokRPump2_Motor = PCF_RELAY_OFF; - pvPut(IsttokRPump2_Motor); +// strcpy(msg, "Rotary Pump2 ON"); +// pvPut(msg); +// errlogSevPrintf(NO_ALARM, "%s\n",msg); +// IsttokRPump2_Motor = PCF_RELAY_OFF; +// pvPut(IsttokRPump2_Motor); STARTINGSTATE = STRST_Starting1; pvPut(STARTINGSTATE); } state Starting1 } + state Starting1 { when (IsttokOPSTATE != POS_Starting ) { strcpy(msg, "Starting1 Out"); @@ -772,15 +800,16 @@ ss StartingSequence { errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokRPump1_Valve = PCF_RELAY_OFF; pvPut(IsttokRPump1_Valve); - strcpy(msg, "Rotary Valve2 OPEN"); - pvPut(msg); - errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokRPump2_Valve = PCF_RELAY_OFF; - pvPut(IsttokRPump2_Valve); +// strcpy(msg, "Rotary Valve2 OPEN"); +// pvPut(msg); +// errlogSevPrintf(NO_ALARM, "%s\n",msg); +// IsttokRPump2_Valve = PCF_RELAY_OFF; +// pvPut(IsttokRPump2_Valve); STARTINGSTATE = STRST_Starting2; pvPut(STARTINGSTATE); } state Starting2 } + state Starting2 { when (IsttokOPSTATE != POS_Starting ) { strcpy(msg, "Starting2 Out"); @@ -789,6 +818,7 @@ ss StartingSequence { STARTINGSTATE = STRST_NonStarting; pvPut(STARTINGSTATE); } state NonStarting + when (IsttokTMPump1_ManualValve == ON) { strcpy(msg, "Manual Valve Open Checked"); pvPut(msg); @@ -797,6 +827,7 @@ ss StartingSequence { pvPut(STARTINGSTATE); } state Starting3 } + state Starting3 { when (IsttokOPSTATE != POS_Starting) { strcpy(msg, "Starting3 Out"); @@ -813,15 +844,16 @@ ss StartingSequence { errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokTMPump1_MotorOn = ON; pvPut(IsttokTMPump1_MotorOn); - strcpy(msg, "TMP2 Motor ON" ); - pvPut(msg); - errlogSevPrintf(NO_ALARM, "%s\n",msg); +// strcpy(msg, "TMP2 Motor ON" ); +// pvPut(msg); +// errlogSevPrintf(NO_ALARM, "%s\n",msg); // IsttokTMPump2_Motor = PCF_RELAY_ON; // pvPut(IsttokTMPump2_Motor); - STARTINGSTATE = STRST_Starting4; - pvPut(STARTINGSTATE); + STARTINGSTATE = STRST_Starting4; + pvPut(STARTINGSTATE); } state Starting4 } + state Starting4 { when (IsttokOPSTATE != POS_Starting ) { strcpy(msg, "Starting4 Out"); @@ -838,6 +870,7 @@ ss StartingSequence { pvPut(STARTINGSTATE); } state StartingEnd } + state StartingEnd { when (IsttokOPSTATE != POS_Starting ) { STARTINGSTATE = STRST_NonStarting; @@ -846,50 +879,59 @@ ss StartingSequence { } } +/*********** SUB-State: CleaningSequence Set ************/ ss CleaningSequence{ - state NonCleaning{ + state NonCleaning { entry{ strcpy(msg, "GIS Valves CLOSE"); pvPut(msg); - IsttokShotGasIS_Valves = PCF_RELAY_OFF; - pvPut(IsttokShotGasIS_Valves); + IsttokGasIS_Valves = SEEED_RELAY_OFF; + pvPut(IsttokGasIS_Valves); strcpy(msg, "Filament OFF"); pvPut(msg); - IsttokShotVVessel_Filament = PCF_RELAY_OFF; - pvPut(IsttokShotVVessel_Filament); + IsttokVVessel_Filament = PCF_RELAY_OFF; + pvPut(IsttokVVessel_Filament); strcpy(msg, "Primary_CT OFF"); pvPut(msg); - IsttokShotClean_PrimContactor = PCF_RELAY_OFF; - pvPut(IsttokShotClean_PrimContactor); + IsttokClean_PrimContactor = PCF_RELAY_OFF; + pvPut(IsttokClean_PrimContactor); strcpy(msg, "Toroidal_BK OPEN"); pvPut(msg); - IsttokShotClean_TorPneuBreaker = PCF_RELAY_OFF; - pvPut(IsttokShotClean_TorPneuBreaker); + IsttokClean_TorPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_TorPneuBreaker); strcpy(msg, "Toroidal_CT OFF"); pvPut(msg); - IsttokShotClean_TorContactor = PCF_RELAY_OFF; - pvPut(IsttokShotClean_TorContactor); + IsttokClean_TorContactor = PCF_RELAY_OFF; + pvPut(IsttokClean_TorContactor); + + strcpy(msg, "Prim_Pneu_Breaker OFF"); + pvPut(msg); + IsttokClean_PrimPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_PrimPneuBreaker); CLEANINGSTATE = CLNST_NonCleaning; pvPut(CLEANINGSTATE); errlogSevPrintf(NO_ALARM, "%s\n",msg); - } + } when(delay(1.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean){ strcpy(msg, "Initiating Auto Cleaning..."); pvPut(msg); strcpy(msg, "GIS Valves OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotGasIS_Valves = PCF_RELAY_ON; - pvPut(IsttokShotGasIS_Valves); - CLEANINGSTATE = CLNST_Cleaning1; - pvPut(CLEANINGSTATE); + IsttokGasIS_Valves = SEEED_RELAY_ON; + pvPut(IsttokGasIS_Valves); + IsttokClean_PrimPneuBreaker = SEEED_RELAY_ON; + pvPut(IsttokClean_PrimPneuBreaker); + + CLEANINGSTATE = CLNST_Cleaning1; + pvPut(CLEANINGSTATE); } state Cleaning1 } state Cleaning1 { @@ -898,97 +940,99 @@ ss CleaningSequence{ strcpy(msg, "GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotGasIS_Valves = PCF_RELAY_OFF; - pvPut(IsttokShotGasIS_Valves); + IsttokClean_PrimPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_PrimPneuBreaker); + IsttokGasIS_Valves = SEEED_RELAY_OFF; + pvPut(IsttokGasIS_Valves); } state NonCleaning when (delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean ) { strcpy(msg, "Filament ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotVVessel_Filament = PCF_RELAY_ON; - pvPut(IsttokShotVVessel_Filament); + IsttokVVessel_Filament = PCF_RELAY_ON; + pvPut(IsttokVVessel_Filament); CLEANINGSTATE = CLNST_Cleaning2; pvPut(CLEANINGSTATE); } state Cleaning2 } - state Cleaning2{ + state Cleaning2 { when (delay(1.0) && IsttokProcReq==STOP) { // Reversing Cleaning strcpy(msg, "Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotVVessel_Filament = PCF_RELAY_OFF; - pvPut(IsttokShotVVessel_Filament); - CLEANINGSTATE = CLNST_Cleaning1; - pvPut(CLEANINGSTATE); + IsttokVVessel_Filament = PCF_RELAY_OFF; + pvPut(IsttokVVessel_Filament); + CLEANINGSTATE = CLNST_Cleaning1; + pvPut(CLEANINGSTATE); } state Cleaning1 when (delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean) { strcpy(msg, "Primary-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotClean_PrimContactor = PCF_RELAY_ON; - pvPut(IsttokShotClean_PrimContactor); - CLEANINGSTATE = CLNST_Cleaning3; - pvPut(CLEANINGSTATE); + IsttokClean_PrimContactor = PCF_RELAY_ON; + pvPut(IsttokClean_PrimContactor); + CLEANINGSTATE = CLNST_Cleaning3; + pvPut(CLEANINGSTATE); } state Cleaning3 } - state Cleaning3{ + state Cleaning3 { when(delay(1.0) && IsttokProcReq==STOP){ strcpy(msg, "Primary-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotClean_PrimContactor = PCF_RELAY_OFF; - pvPut(IsttokShotClean_PrimContactor); - CLEANINGSTATE = CLNST_Cleaning2; - pvPut(CLEANINGSTATE); + IsttokClean_PrimContactor = PCF_RELAY_OFF; + pvPut(IsttokClean_PrimContactor); + CLEANINGSTATE = CLNST_Cleaning2; + pvPut(CLEANINGSTATE); } state Cleaning2 when(delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean){ strcpy(msg, "Toroidal-BK CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotClean_TorPneuBreaker = PCF_RELAY_ON; - pvPut(IsttokShotClean_TorPneuBreaker); - CLEANINGSTATE = CLNST_Cleaning4; - pvPut(CLEANINGSTATE); + IsttokClean_TorPneuBreaker = SEEED_RELAY_ON; + pvPut(IsttokClean_TorPneuBreaker); + CLEANINGSTATE = CLNST_Cleaning4; + pvPut(CLEANINGSTATE); } state Cleaning4 } - state Cleaning4{ + state Cleaning4 { when(delay (1.0) && IsttokProcReq==STOP){ strcpy(msg, "Toroidal-BK OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotClean_TorPneuBreaker = PCF_RELAY_OFF; - pvPut(IsttokShotClean_TorPneuBreaker); - CLEANINGSTATE = CLNST_Cleaning3; - pvPut(CLEANINGSTATE); + IsttokClean_TorPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_TorPneuBreaker); + CLEANINGSTATE = CLNST_Cleaning3; + pvPut(CLEANINGSTATE); } state Cleaning3 when (delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean){ strcpy(msg, "Toroidal-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotClean_TorContactor = PCF_RELAY_ON; - pvPut(IsttokShotClean_TorContactor); - CLEANINGSTATE = CLNST_Cleaning5; - pvPut(CLEANINGSTATE); + IsttokClean_TorContactor = PCF_RELAY_ON; + pvPut(IsttokClean_TorContactor); + CLEANINGSTATE = CLNST_Cleaning5; + pvPut(CLEANINGSTATE); } state Cleaning5 } - state Cleaning5{ + state Cleaning5 { when (IsttokProcReq==STOP) { // } state Idle // when(delay(1.0) && IsttokOPSTATE != POS_Clean){ strcpy(msg, "Toroidal-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotClean_TorContactor = PCF_RELAY_OFF; - pvPut(IsttokShotClean_TorContactor); + IsttokClean_TorContactor = PCF_RELAY_OFF; + pvPut(IsttokClean_TorContactor); /* Close GIS to let Pressure down */ - IsttokShotGasIS_Valves = PCF_RELAY_OFF; - pvPut(IsttokShotGasIS_Valves); - CLEANINGSTATE = CLNST_Cleaning4; - pvPut(CLEANINGSTATE); + IsttokGasIS_Valves = SEEED_RELAY_OFF; + pvPut(IsttokGasIS_Valves); + CLEANINGSTATE = CLNST_Cleaning4; + pvPut(CLEANINGSTATE); } state Cleaning4 /* when (pvSeverity(IsttokVVesselTemperature) >= pvSevrMAJOR) { @@ -1003,22 +1047,28 @@ ss CleaningSequence{ } } +/*********** SUB-State: ShotSequence Set ************/ ss ShotSequence { state NonShoting { entry { WSHOTINGSTATE = WSHTST_NonShoting; pvPut(WSHOTINGSTATE); - strcpy(IsttokShotCountdownScan, "Passive"); - pvPut(IsttokShotCountdownScan); + IsttokCountdownDisa = 1; + pvPut(IsttokCountdownDisa); +// strcpy(IsttokCountdownScan, "Passive"); +// pvPut(IsttokCountdownScan); } when( IsttokOPSTATE == POS_WaitShot ){ //strcpy(msg, "Waiting for Trigger..."); // pvPut(msg); //errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotCountdown = 0; - pvPut(IsttokShotCountdown); - strcpy(IsttokShotCountdownScan, "1 second"); - pvPut(IsttokShotCountdownScan); + IsttokCountdown = 0; + pvPut(IsttokCountdown); + // Enable Counting + IsttokCountdownDisa = 0; + pvPut(IsttokCountdownDisa); +// strcpy(IsttokCountdownScan, "1 second"); +// pvPut(IsttokCountdownScan); WSHOTINGSTATE = WSHTST_ShotEnd; pvPut(WSHOTINGSTATE); //WSHOTINGSTATE = WSHTST_WaitTrg; @@ -1026,7 +1076,7 @@ ss ShotSequence { } state ShotEnd } state ShotWaitTrg { - when ((IsttokShotCountdown > 1800) || (IsttokOPSTATE != POS_WaitShot)) { + when ((IsttokCountdown > 1800) || (IsttokOPSTATE != POS_WaitShot)) { strcpy(msg, "Shooting Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); @@ -1039,8 +1089,8 @@ ss ShotSequence { when( IsttokTTSystem_tzero == 0 ){ strcpy(msg, "Trigger received..."); pvPut(msg); - IsttokShotCountdown = -70; - pvPut(IsttokShotCountdown); + IsttokCountdown = -70; + pvPut(IsttokCountdown); WSHOTINGSTATE = WSHTST_Shooting2; pvPut(WSHOTINGSTATE); PulseNumber +=1; @@ -1053,22 +1103,22 @@ ss ShotSequence { pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); } state ShotWaitTrg - when ((IsttokOPSTATE == POS_WaitShot) && (IsttokShotCountdown == -61)) { + when ((IsttokOPSTATE == POS_WaitShot) && (IsttokCountdown == -61)) { strcpy(msg, "Buzzer 1-Sound"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotBuzzer = 1; - pvPut(IsttokShotBuzzer); + IsttokBuzzer = 1; + pvPut(IsttokBuzzer); strcpy(msg, "CAPBANK Crowbar Open"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotCapBank_Discharge = PCF_RELAY_ON; - pvPut(IsttokShotCapBank_Discharge); + IsttokCapBank_Discharge = SEEED_RELAY_ON; + pvPut(IsttokCapBank_Discharge); strcpy(msg, "Lights ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotLab_WarningLight = PCF_RELAY_ON; - pvPut(IsttokShotLab_WarningLight); + IsttokLab_WarningLight = PCF_RELAY_ON; + pvPut(IsttokLab_WarningLight); WSHOTINGSTATE = WSHTST_Shooting3; pvPut(WSHOTINGSTATE); } state Shooting3 @@ -1079,12 +1129,12 @@ ss ShotSequence { pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); } state ShotWaitTrg - when (IsttokShotCountdown == -60) { + when (IsttokCountdown == -60) { strcpy(msg, "GIS Valves OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotGasIS_Valves = PCF_RELAY_ON; - pvPut(IsttokShotGasIS_Valves); + IsttokGasIS_Valves = SEEED_RELAY_ON; + pvPut(IsttokGasIS_Valves); WSHOTINGSTATE = WSHTST_Shooting4; pvPut(WSHOTINGSTATE); } state Shooting4 @@ -1097,7 +1147,7 @@ ss ShotSequence { WSHOTINGSTATE = WSHTST_NonShoting; pvPut(WSHOTINGSTATE); } state NonShoting - when (IsttokShotCountdown == -59) { + when (IsttokCountdown == -59) { WSHOTINGSTATE = WSHTST_Shooting5; pvPut(WSHOTINGSTATE); } state Shooting5 @@ -1110,12 +1160,12 @@ ss ShotSequence { WSHOTINGSTATE = WSHTST_NonShoting; pvPut(WSHOTINGSTATE); } state NonShoting - when (IsttokShotCountdown == -46) { + when (IsttokCountdown == -46) { strcpy(msg, "CAPBANK Charge ON" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotCapBank_Charge = PCF_RELAY_ON; - pvPut(IsttokShotCapBank_Charge); + IsttokCapBank_Charge = PCF_RELAY_ON; + pvPut(IsttokCapBank_Charge); WSHOTINGSTATE = WSHTST_Shooting6; pvPut(WSHOTINGSTATE); } state Shooting6 @@ -1128,12 +1178,12 @@ ss ShotSequence { WSHOTINGSTATE = WSHTST_NonShoting; pvPut(WSHOTINGSTATE); } state NonShoting - when (IsttokShotCountdown == -16) { + when (IsttokCountdown == -16) { strcpy(msg, "CAPBANK Charge OFF" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); - IsttokShotCapBank_Charge = PCF_RELAY_OFF; - pvPut(IsttokShotCapBank_Charge); + IsttokCapBank_Charge = PCF_RELAY_OFF; + pvPut(IsttokCapBank_Charge); WSHOTINGSTATE = WSHTST_Shooting7; pvPut(WSHOTINGSTATE); } state Shooting7 @@ -1146,17 +1196,17 @@ ss ShotSequence { WSHOTINGSTATE = WSHTST_NonShoting; pvPut(WSHOTINGSTATE); } state NonShoting - when (IsttokShotCountdown == -11) { + when (IsttokCountdown == -11) { strcpy(msg, "Buzzer 2-Sound" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); - IsttokShotBuzzer = 1; - pvPut(IsttokShotBuzzer); + IsttokBuzzer = 1; + pvPut(IsttokBuzzer); strcpy(msg, "Filament ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotVVessel_Filament = PCF_RELAY_ON; - pvPut(IsttokShotVVessel_Filament); + IsttokVVessel_Filament = PCF_RELAY_ON; + pvPut(IsttokVVessel_Filament); WSHOTINGSTATE = WSHTST_Shooting8; pvPut(WSHOTINGSTATE); } state Shooting8 @@ -1169,13 +1219,13 @@ ss ShotSequence { WSHOTINGSTATE = WSHTST_NonShoting; pvPut(WSHOTINGSTATE); } state NonShoting - when (IsttokShotCountdown == -4) { + when (IsttokCountdown == -4) { strcpy(msg, "Toroidal PS Trigger"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); // PS Trigger Pulse - IsttokShotShot_TorPSTrigger = ON; - pvPut(IsttokShotShot_TorPSTrigger); + Isttok_TorPSTrigger = ON; + pvPut(Isttok_TorPSTrigger); WSHOTINGSTATE = WSHTST_Shooting9; pvPut(WSHOTINGSTATE); } state Shooting9 @@ -1188,7 +1238,7 @@ ss ShotSequence { WSHOTINGSTATE = WSHTST_NonShoting; pvPut(WSHOTINGSTATE); } state NonShoting - when (IsttokShotCountdown == -2) { + when (IsttokCountdown == -2) { strcpy(msg, "Ready for SHOT" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); @@ -1204,12 +1254,12 @@ ss ShotSequence { WSHOTINGSTATE = WSHTST_NonShoting; pvPut(WSHOTINGSTATE); } state NonShoting - when (IsttokShotCountdown == 0) { + when (IsttokCountdown == 0) { strcpy(msg, "CAPBANK CrowBar Close" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); - IsttokShotCapBank_Discharge = PCF_RELAY_OFF; - pvPut(IsttokShotCapBank_Discharge); + IsttokCapBank_Discharge = SEEED_RELAY_OFF; + pvPut(IsttokCapBank_Discharge); WSHOTINGSTATE = WSHTST_Shooting11; pvPut(WSHOTINGSTATE); } state Shooting11 @@ -1222,17 +1272,17 @@ ss ShotSequence { WSHOTINGSTATE = WSHTST_NonShoting; pvPut(WSHOTINGSTATE); } state NonShoting - when (IsttokShotCountdown == 1) { + when (IsttokCountdown == 1) { strcpy(msg, "GIS Valves CLOSE" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); - IsttokShotGasIS_Valves = 1; - pvPut(IsttokShotGasIS_Valves); + IsttokGasIS_Valves = SEEED_RELAY_OFF; + pvPut(IsttokGasIS_Valves); strcpy(msg, "Filament OFF" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); - IsttokShotVVessel_Filament = 1; - pvPut(IsttokShotVVessel_Filament); + IsttokVVessel_Filament = 1; + pvPut(IsttokVVessel_Filament); WSHOTINGSTATE = WSHTST_Shooting12; pvPut(WSHOTINGSTATE); } state Shooting12 @@ -1245,18 +1295,18 @@ ss ShotSequence { WSHOTINGSTATE = WSHTST_NonShoting; pvPut(WSHOTINGSTATE); } state NonShoting - when (IsttokShotCountdown == 2) { + when (IsttokCountdown == 2) { strcpy(msg, "Lights OFF and Recovering..." ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); - IsttokShotLab_WarningLight = PCF_RELAY_OFF; - pvPut(IsttokShotLab_WarningLight); + IsttokLab_WarningLight = PCF_RELAY_OFF; + pvPut(IsttokLab_WarningLight); WSHOTINGSTATE = WSHTST_ShotEnd; pvPut(WSHOTINGSTATE); } state ShotEnd } state ShotEnd { - when (IsttokShotCountdown > 160 || IsttokOPSTATE != POS_WaitShot) { + when (IsttokCountdown > 160 || IsttokOPSTATE != POS_WaitShot) { strcpy(msg, "Terminated"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); @@ -1266,7 +1316,7 @@ ss ShotSequence { } } -/* Stopping Sub-State Set */ +/*********** SUB-State: StoppingSequence Set ************/ ss StoppingSequence { state NonStopping { entry { @@ -1278,9 +1328,15 @@ ss StoppingSequence { pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokTMPump1_MotorOff = ON; + IsttokClean_PrimPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_PrimPneuBreaker); + + IsttokTMPump1_MotorOff = ON; pvPut(IsttokTMPump1_MotorOff); + IsttokClean_TorPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_TorPneuBreaker); + // IsttokTMPump2_Motor = PCF_RELAY_OFF; // pvPut(IsttokTMPump2_Motor); STOPPINGSTATE = STPST_Stopping1; @@ -1298,46 +1354,44 @@ ss StoppingSequence { } state Stopping2 } state Stopping2 { - when (IsttokOPSTATE != POS_Stopping ) { - } state NonStopping - when (delay(5.0) && IsttokTMPump1_ManualValve==OFF) { + when (IsttokOPSTATE != POS_Stopping ) { } state NonStopping + when (delay(5.0) && (IsttokTMPump1_ManualValve == OFF)) { strcpy(msg, "Manual Valve Closed Checked"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokRPump1_Motor = PCF_RELAY_ON; - pvPut(IsttokRPump1_Motor); - strcpy(msg, "Rotary Pumps 1 & 2 OFF"); +// IsttokRPump2_Motor = PCF_RELAY_ON; +// pvPut(IsttokRPump2_Motor); + IsttokRPump1_Valve = PCF_RELAY_ON; // "NO" relay + pvPut(IsttokRPump1_Valve); + strcpy(msg, "Rotary Valve 1 CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokRPump2_Motor = PCF_RELAY_ON; - pvPut(IsttokRPump2_Motor); STOPPINGSTATE = STPST_Stopping3; pvPut(STOPPINGSTATE); } state Stopping3 } state Stopping3 { - when (IsttokOPSTATE != POS_Stopping ) { - } state NonStopping + when (IsttokOPSTATE != POS_Stopping ) { } state NonStopping when (delay(5)) { - IsttokRPump1_Valve = PCF_RELAY_ON; - pvPut(IsttokRPump1_Valve); - strcpy(msg, "Rotary Valves 1 & 2 CLOSE"); + // IsttokRPump2_Valve = PCF_RELAY_ON; + // pvPut(IsttokRPump2_Valve); + IsttokRPump1_Motor = PCF_RELAY_ON; // "NO" Relay + pvPut(IsttokRPump1_Motor); + strcpy(msg, "Rotary Pump 1 OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokRPump2_Valve = PCF_RELAY_ON; - pvPut(IsttokRPump2_Valve); STOPPINGSTATE = STPST_StoppingEnd; pvPut(STOPPINGSTATE); - } state StoppingEnd + } state StoppingEnd } state StoppingEnd { - when (IsttokOPSTATE != POS_Stopping ) { } state NonStopping + when (IsttokOPSTATE != POS_Stopping ) { } state NonStopping } } /**** END PROGRAM ***/ -/* when (IsttokShotCountdown > 159) { +/* when (IsttokCountdown > 159) { strcpy(msg, "Toroidal Field Recovered" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); @@ -1345,21 +1399,21 @@ ss StoppingSequence { pvPut(WSHOTINGSTATE); } state Shooting12 state Shooting12 { - when ((IsttokOPSTATE != POS_WaitShot ) && (IsttokShotCountdown == 160) ) { + when ((IsttokOPSTATE != POS_WaitShot ) && (IsttokCountdown == 160) ) { strcpy(msg, "Shooting12 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); WSHOTINGSTATE = WSHTST_NonShoting; pvPut(WSHOTINGSTATE); } state NonShoting - when (IsttokShotCountdown >= 160) { + when (IsttokCountdown >= 160) { strcpy(msg, "Terminated"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); -// strcpy(IsttokShotCountdownScan, "Passive"); -// pvPut(IsttokShotCountdownScan); -// IsttokShotCountdown = 0; -// pvPut(IsttokShotCountdown); +// strcpy(IsttokCountdownScan, "Passive"); +// pvPut(IsttokCountdownScan); +// IsttokCountdown = 0; +// pvPut(IsttokCountdown); } state ShotWaitTrg } diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req index 3463283..6609f2a 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req @@ -1,18 +1,19 @@ -ISTTOK:central:PULSE-NUMBER.VAL +# P=ISTTOK:,R=central: +$(P)$(R)PULSE-NUMBER.VAL ISTTOK:central:LogMessage.VAL ISTTOK:central:LASTOPSTATE.VAL -ISTTOK:central:OPREQ +ISTTOK:central:OPREQ.VAL ISTTOK:central:PROCESS-MODE.VAL ISTTOK:central:CLEANINGMANMODE.VAL ISTTOK:central:Emergency-UserButton.VAL ISTTOK:central:TMPump1-ManualValve.VAL ISTTOK:central:Shot-TorPSCurrent -ISTTOK:central:UPS-Shutdown +#ISTTOK:central:UPS-Shutdown #ALARM Limits -ISTTOK:central:RPump1-Pressure.HIGH +$(P)$(R)RPump1-Pressure.HIGH ISTTOK:central:RPump1-Pressure.HIHI #ISTTOK:central:RPump2-Pressure.HIGH #ISTTOK:central:RPump2-Pressure.HIHI diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt index 5b503db..d05bc21 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt @@ -1,3 +1,88 @@ +ISTTOK:central:PCF8591:72:ADC_CH1 +ISTTOK:central:PCF8591:72:ADC_CH2 +ISTTOK:central:PCF8591:72:ADC_CH3 +ISTTOK:central:P001:M +ISTTOK:central:P001:E +ISTTOK:central:P002:M +ISTTOK:central:P002:E +ISTTOK:central:P003:M +ISTTOK:central:P003:E +ISTTOK:central:P004:M +ISTTOK:central:P004:E +ISTTOK:central:OPCALCSTATE +ISTTOK:central:STARTCALCSTATE +ISTTOK:central:STOPPINGCALCSTATE +ISTTOK:central:CLEANCALCSTATE +ISTTOK:central:WSHOTCALCSTATE +ISTTOK:central:PULSE-NUMBER +ISTTOK:central:COUNTDOWN +ISTTOK:central:COUNTER +ISTTOK:central:PCF8591:72:BYTE2_CH1 +ISTTOK:central:PCF8591:72:BYTE2_CH2 +ISTTOK:central:PCF8591:72:BYTE2_CH3 +ISTTOK:central:Emergency +ISTTOK:central:VVessel-Pressure +ISTTOK:central:RPump1-Pressure +ISTTOK:central:TMPump1-PressureAdmission +ISTTOK:central:RPump2-Pressure +ISTTOK:central:PCF8591:72:DAC +ISTTOK:central:TDA8444:32:DAC_CH0 +ISTTOK:central:TDA8444:32:DAC_CH1 +ISTTOK:central:TDA8444:32:DAC_CH2 +ISTTOK:central:TDA8444:32:DAC_CH3 +ISTTOK:central:TDA8444:32:DAC_CH4 +ISTTOK:central:TDA8444:32:DAC_CH5 +ISTTOK:central:TDA8444:32:DAC_CH6 +ISTTOK:central:Shot-TorPSCurrent +ISTTOK:SR_0_State +ISTTOK:SR_1_State +ISTTOK:SR_2_State +ISTTOK:SR_3_State +ISTTOK:SR_4_State +ISTTOK:SR_5_State +ISTTOK:SR_6_State +ISTTOK:SR_7_State +ISTTOK:SR_disableMaxSecs +ISTTOK:central:PCF8574:56:REGISTER:READ:FNOUT +ISTTOK:central:PCF8574:57:REGISTER:READ:FNOUT +ISTTOK:central:TraceMessage +ISTTOK:central:LogMessage +ISTTOK:central:RS485Debug +ISTTOK:central:sendmail +ISTTOK:SR_recentlyStr +ISTTOK:SR_rebootStatusStr +ISTTOK:SR_rebootTime +ISTTOK:SR_statusStr +ISTTOK:SR_0_Name +ISTTOK:SR_0_StatusStr +ISTTOK:SR_0_Time +ISTTOK:SR_1_Name +ISTTOK:SR_1_StatusStr +ISTTOK:SR_1_Time +ISTTOK:SR_2_Name +ISTTOK:SR_2_StatusStr +ISTTOK:SR_2_Time +ISTTOK:SR_3_Name +ISTTOK:SR_3_StatusStr +ISTTOK:SR_3_Time +ISTTOK:SR_4_Name +ISTTOK:SR_4_StatusStr +ISTTOK:SR_4_Time +ISTTOK:SR_5_Name +ISTTOK:SR_5_StatusStr +ISTTOK:SR_5_Time +ISTTOK:SR_6_Name +ISTTOK:SR_6_StatusStr +ISTTOK:SR_6_Time +ISTTOK:SR_7_Name +ISTTOK:SR_7_StatusStr +ISTTOK:SR_7_Time +ISTTOK:central:TMPump1-ControllerOnInv +ISTTOK:central:TMPump1-ControllerOffInv +ISTTOK:central:TMPump1-MotorOnInv +ISTTOK:central:TMPump1-MotorOffInv +ISTTOK:central:BuzzerInv +ISTTOK:central:Shot-TorPSTriggerInv ISTTOK:central:TMPump1-Power ISTTOK:central:TMPump1-Emergency ISTTOK:central:TMPump1-Acceleration @@ -6,6 +91,26 @@ ISTTOK:central:TMPump2-Emergency ISTTOK:central:TMPump2-Acceleration ISTTOK:central:TTSystem-tzero ISTTOK:central:Emergency-PhysButton +ISTTOK:central:LASTOPSTATE +ISTTOK:SR_rebootStatus +ISTTOK:SR_status +ISTTOK:SR_0_Status +ISTTOK:SR_1_Status +ISTTOK:SR_2_Status +ISTTOK:SR_3_Status +ISTTOK:SR_4_Status +ISTTOK:SR_5_Status +ISTTOK:SR_6_Status +ISTTOK:SR_7_Status +ISTTOK:central:PCF8574:56:REGISTER:READ +ISTTOK:central:PCF8574:57:REGISTER:READ +ISTTOK:central:PCF8574:60:REGISTER:READ +ISTTOK:central:PCF8574:61:REGISTER:READ +ISTTOK:central:SEEED4RELAY:17:REGISTER:READ +ISTTOK:central:CurrentTime +ISTTOK:central:TMPump2-Speed +ISTTOK:central:TMPump2-Current +ISTTOK:central:Shot-TorPSCurrentImage ISTTOK:central:UPS-OnBattery ISTTOK:central:UPS-Shutdown ISTTOK:central:OPREQ @@ -41,117 +146,14 @@ ISTTOK:SR_heartbeat ISTTOK:SR_i_am_alive ISTTOK:SR_deadIfZero ISTTOK:SR_disable -ISTTOK:central:TMPump1-ControllerOnInv -ISTTOK:central:TMPump1-ControllerOffInv -ISTTOK:central:TMPump1-MotorOnInv -ISTTOK:central:TMPump1-MotorOffInv -ISTTOK:central:BuzzerInv -ISTTOK:central:Shot-TorPSTriggerInv -ISTTOK:central:PCF8574:56:REGISTER:READ:FNOUT -ISTTOK:central:PCF8574:57:REGISTER:READ:FNOUT -ISTTOK:central:PULSE-NUMBER -ISTTOK:central:PCF8591:72:DAC -ISTTOK:central:TDA8444:32:DAC_CH0 -ISTTOK:central:TDA8444:32:DAC_CH1 -ISTTOK:central:TDA8444:32:DAC_CH2 -ISTTOK:central:TDA8444:32:DAC_CH3 -ISTTOK:central:TDA8444:32:DAC_CH4 -ISTTOK:central:TDA8444:32:DAC_CH5 -ISTTOK:central:TDA8444:32:DAC_CH6 -ISTTOK:central:Shot-TorPSCurrent -ISTTOK:SR_0_State -ISTTOK:SR_1_State -ISTTOK:SR_2_State -ISTTOK:SR_3_State -ISTTOK:SR_4_State -ISTTOK:SR_5_State -ISTTOK:SR_6_State -ISTTOK:SR_7_State -ISTTOK:SR_disableMaxSecs -ISTTOK:central:OPCALCSTATE -ISTTOK:central:STARTCALCSTATE -ISTTOK:central:STOPPINGCALCSTATE -ISTTOK:central:CLEANCALCSTATE -ISTTOK:central:WSHOTCALCSTATE -ISTTOK:central:COUNTDOWN -ISTTOK:central:COUNTER -ISTTOK:central:PCF8591:72:BYTE2_CH1 -ISTTOK:central:PCF8591:72:BYTE2_CH2 -ISTTOK:central:PCF8591:72:BYTE2_CH3 -ISTTOK:central:Emergency -ISTTOK:central:TMPump1-PressureAdmission -ISTTOK:central:RPump1-Pressure -ISTTOK:central:VVessel-Pressure -ISTTOK:central:RPump2-Pressure -ISTTOK:central:TMPump2-Speed -ISTTOK:central:TMPump2-Current -ISTTOK:central:Shot-TorPSCurrentImage -ISTTOK:central:OPSTATE -ISTTOK:central:STARTINGSTATE -ISTTOK:central:CLEANINGSTATE -ISTTOK:central:WSHOTINGSTATE -ISTTOK:central:STOPPINGSTATE -ISTTOK:central:PCF8574:56:REGISTER:READ -ISTTOK:central:PCF8574:57:REGISTER:READ -ISTTOK:central:PCF8574:60:REGISTER:READ -ISTTOK:central:PCF8574:61:REGISTER:READ -ISTTOK:central:LASTOPSTATE -ISTTOK:SR_rebootStatus -ISTTOK:SR_status -ISTTOK:SR_0_Status -ISTTOK:SR_1_Status -ISTTOK:SR_2_Status -ISTTOK:SR_3_Status -ISTTOK:SR_4_Status -ISTTOK:SR_5_Status -ISTTOK:SR_6_Status -ISTTOK:SR_7_Status ISTTOK:central:PCF8574:56:REGISTER ISTTOK:central:PCF8574:57:REGISTER ISTTOK:central:PCF8574:60:REGISTER ISTTOK:central:PCF8574:61:REGISTER ISTTOK:central:PCF8591:72:CTRLREGISTER -ISTTOK:central:CurrentTime -ISTTOK:central:PCF8591:72:ADC_CH1 -ISTTOK:central:PCF8591:72:ADC_CH2 -ISTTOK:central:PCF8591:72:ADC_CH3 -ISTTOK:central:P001:M -ISTTOK:central:P001:E -ISTTOK:central:P002:M -ISTTOK:central:P002:E -ISTTOK:central:P003:M -ISTTOK:central:P003:E -ISTTOK:central:P004:M -ISTTOK:central:P004:E -ISTTOK:central:TraceMessage -ISTTOK:central:LogMessage -ISTTOK:central:RS485Debug -ISTTOK:central:sendmail -ISTTOK:SR_recentlyStr -ISTTOK:SR_rebootStatusStr -ISTTOK:SR_rebootTime -ISTTOK:SR_statusStr -ISTTOK:SR_0_Name -ISTTOK:SR_0_StatusStr -ISTTOK:SR_0_Time -ISTTOK:SR_1_Name -ISTTOK:SR_1_StatusStr -ISTTOK:SR_1_Time -ISTTOK:SR_2_Name -ISTTOK:SR_2_StatusStr -ISTTOK:SR_2_Time -ISTTOK:SR_3_Name -ISTTOK:SR_3_StatusStr -ISTTOK:SR_3_Time -ISTTOK:SR_4_Name -ISTTOK:SR_4_StatusStr -ISTTOK:SR_4_Time -ISTTOK:SR_5_Name -ISTTOK:SR_5_StatusStr -ISTTOK:SR_5_Time -ISTTOK:SR_6_Name -ISTTOK:SR_6_StatusStr -ISTTOK:SR_6_Time -ISTTOK:SR_7_Name -ISTTOK:SR_7_StatusStr -ISTTOK:SR_7_Time +ISTTOK:central:SEEED4RELAY:17:REGISTER +ISTTOK:central:OPSTATE +ISTTOK:central:STARTINGSTATE +ISTTOK:central:CLEANINGSTATE +ISTTOK:central:WSHOTINGSTATE +ISTTOK:central:STOPPINGSTATE diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav index b4f1cc0..7768bb5 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav @@ -1,14 +1,13 @@ -# autosave R5.3 Automatically generated - DO NOT MODIFY - 211214-141949 -ISTTOK:central:PULSE-NUMBER.VAL 0 +# autosave R5.3 Automatically generated - DO NOT MODIFY - 211215-181848 +ISTTOK:central:PULSE-NUMBER.VAL 49461 ISTTOK:central:LogMessage.VAL -ISTTOK:central:LASTOPSTATE.VAL 5 -ISTTOK:central:OPREQ 0 +ISTTOK:central:LASTOPSTATE.VAL 2 +ISTTOK:central:OPREQ.VAL 1 ISTTOK:central:PROCESS-MODE.VAL 0 ISTTOK:central:CLEANINGMANMODE.VAL 0 ISTTOK:central:Emergency-UserButton.VAL 0 ISTTOK:central:TMPump1-ManualValve.VAL 1 ISTTOK:central:Shot-TorPSCurrent 32 -ISTTOK:central:UPS-Shutdown 0 ISTTOK:central:RPump1-Pressure.HIGH 0.05 ISTTOK:central:RPump1-Pressure.HIHI 0.1 diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd index 5ff2d50..036fd57 100755 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd @@ -15,6 +15,7 @@ dbLoadDatabase "dbd/ISTTOKrpi.dbd" ISTTOKrpi_registerRecordDeviceDriver pdbbase ## Load I2C drivers +# *** IMPORTANT: Compile drvAsynI2C with flag STREAM_WORKAROUND = 1 drvAsynI2CConfigure( "I2C", "/dev/i2c-1", 1 ) ## Load record instances @@ -23,6 +24,8 @@ dbLoadRecords("db/ISTTOKpcf8574.db","P=ISTTOK:,R=central:,BUS=I2C") dbLoadRecords("db/ISTTOKpcf8591.db","P=ISTTOK:,R=central:,BUS=I2C") dbLoadRecords("db/ISTTOKtda8444.db","P=ISTTOK:,R=central:,BUS=I2C") dbLoadRecords("db/ISTTOKmachineControl.db","P=ISTTOK:,R=central:") +## SEEED RELAY BOARD +dbLoadRecords("db/seeed4relay.db","P=ISTTOK:,R=central:,A=17") ## Load Serial drivers #drvAsynSerialPortConfigure("RS0","/dev/ttyAMA0") @@ -48,8 +51,8 @@ dbLoadRecords("db/sendmail.db", "P=ISTTOK:,PORT=L0,R=central:,L=0,A=0") # 2021/12/14 13:11:50.019969 RS0 ISTTOK:central:P002:M: No reply within 200 ms to "0020074002=?107<0d> #var streamError 1 #with this no errors on pfeiffer bus -var streamDebug 1 -streamSetLogfile("logfile.txt") +#var streamDebug 1 +#streamSetLogfile("logfile.txt") ## Run this to trace the stages of iocInit #traceIocInit @@ -70,11 +73,11 @@ asSetFilename("${TOP}/iocBoot/${IOC}/access_security.acf") iocInit -#asInit +asInit # Create request file and start periodic 'save’ # makeAutosaveFileFromDbInfo("$(SAVE_DIR)/$(IOC).req", "autosaveFields") -create_monitor_set("$(IOC).req", 30) +create_monitor_set("$(IOC).req", 30, "P=ISTTOK:,R=central:") ## Start any sequence programs , use safe mode seq IsttokSeqExec "unit=ISTTOK"