diff --git a/epics/README.md b/epics/README.md index b943dae..0e8498e 100644 --- a/epics/README.md +++ b/epics/README.md @@ -120,7 +120,8 @@ Process Value in this IOC Server: - 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).. * connected to raspberry Pi through I2C interface; @@ -136,7 +137,7 @@ 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-7.0 from epics [github](https://github.com/epics-base/) + * 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) @@ -240,6 +241,13 @@ Process Variables in this IOC Server: |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 + +|PV Name | PV Type | Bit | Relay NO/NC| +|:----------|-------|---:| +|ISTTOK:central:GasIS-Valves| bo | 0 | NO | + ### Vacuum Node (**Not used, backup server only**) - Vacuum Pfeiffer Sensors (RS485) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db index 3d51a03..220f6e3 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db @@ -401,10 +401,10 @@ 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") } ########################################## 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/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..0749574 --- /dev/null +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/seeed4relay.proto @@ -0,0 +1,29 @@ +Terminator = ""; +LockTimeout = 500; +ReplyTimeout = 100; +ReadTimeout = 100; +WriteTimeout = 100; +MaxInput = 1; +ExtraInput = Error; + +#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/iocBoot/iocISTTOKrpi/pvList.txt b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt index 5b503db..23cfce1 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:RELAY4: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:RELAY4: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/st.cmd b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd index d928e76..36c66f3 100755 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd @@ -23,6 +23,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") @@ -46,7 +48,7 @@ dbLoadRecords("db/sendmail.db", "P=ISTTOK:,PORT=L0,R=central:,L=0,A=0") # Uncomment to Debug STREAMDEVICE serial activity # 2021/12/14 13:11:50.019969 RS0 ISTTOK:central:P002:M: No reply within 200 ms to "0020074002=?107<0d> -var streamError 1 +#var streamError 1 #with this no errors on pfeiffer bus #var streamDebug 1 #streamSetLogfile("logfile.txt")