Hello, Mark. Thank for the constant help!
Thats what seems weird to me: since the error only happens when we change the precision and ASLO, and since the exception indicates an incorrect command, can i just assume that the equipment is made to only accept commands that write the P parameter with a
certain precision? In a way that when the precision is changed the equipment refuses to accept the command?
Im sorry for forgetting the complete message. The error message is:
## Start any sequence programs
#seq sncxxx,"user=gabrielfedelHost"
2022/04/19 15:27:21.537 drvModbusAsyn::doModbusIO port Eurotherm_EMODBUS_1_1_Wr_P Modbus exception=3
2022/04/19 15:27:21.537 PNR:EU2408:P devAsynInt32::processCallbackOutput process error
epics>
I append the complete IOC initialization log in the end of this email. Also, i noticed something else that seems important: in the .db file, there is the following comment right next to the :P variable:
# Proportional gain term: address 351
# Note this must be set to operate engineering units (not %) for the precision to be correct
# otherwise it is a fixed precision of 1 decimal place
However, address 351 is not even mentioned in Eurotherm modbus communication manual and setting
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Wr_P", "EMODBUS", 1, 6, 351, 3, 0, 1000, "");
instead of
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Wr_P", "EMODBUS", 1, 6, 6, 3, 0, 1000, "");
results in
2022/04/19 15:54:43.225 drvModbusAsyn::doModbusIO port Eurotherm_EMODBUS_1_1_Wr_P Modbus exception=2
2022/04/19 15:54:43.226 PNR:EU2408:P devAsynInt32::processCallbackOutput process error
epics>
Which i think means that this address is not supposed to be accessed.
Best regards,
Marco
#!/usr/local/epics-nfs/apps/Eurotherm2408/1.0/bin/linux-x86_64/Eurotherm
< /usr/local/epics-nfs/apps/Eurotherm2408/1.0/iocBoot/iocEurotherm2408/envPaths
epicsEnvSet("IOC","iocEurotherm2408")
epicsEnvSet("TOP","/usr/local/epics-nfs/apps/Eurotherm2408/1.0")
epicsEnvSet("NFS","/usr/local/epics-nfs")
epicsEnvSet("SUPPORT","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support")
epicsEnvSet("ASYN","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/asyn-R4-33")
epicsEnvSet("STREAM","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/stream-R2-7-7c")
epicsEnvSet("MODBUS","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/modbus-R2-11")
epicsEnvSet("EPICS_BASE","/usr/local/epics-nfs/base/R3.15.6")
epicsEnvSet("ALIVE","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/alive-R1-1-0")
epicsEnvSet("AUTOSAVE","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/autosave-R5-9")
epicsEnvSet("BUSY","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/busy-R1-7")
epicsEnvSet("CALC","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/calc-R3-7-1")
epicsEnvSet("CAMAC","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/camac-R2-7-1")
epicsEnvSet("CAPUTRECORDER","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/caputRecorder-R1-7-1")
epicsEnvSet("DAC128V","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/dac128V-R2-9")
epicsEnvSet("DELAYGEN","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/delaygen-R1-2-0")
epicsEnvSet("DXP","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/dxp-R5-0")
epicsEnvSet("DXPSITORO","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/dxpSITORO-R1-1")
epicsEnvSet("DEVIOCSTATS","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/iocStats-3-1-15")
epicsEnvSet("IP","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/ip-R2-19-1")
epicsEnvSet("IPAC","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/ipac-2-15")
epicsEnvSet("IP330","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/ip330-R2-9")
epicsEnvSet("IPUNIDIG","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/ipUnidig-R2-11")
epicsEnvSet("LOVE","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/love-R3-2-6")
epicsEnvSet("LUA","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/lua-R1-2-2")
epicsEnvSet("MCA","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/mca-R7-7")
epicsEnvSet("MEASCOMP","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/measComp-R2-1")
epicsEnvSet("MODBUS_2_10_1","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/modbus-R2-10-1")
epicsEnvSet("MOTOR","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/motor-R6-10-1")
epicsEnvSet("OPTICS","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/optics-R2-13-1")
epicsEnvSet("QUADEM","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/quadEM-R9-1")
epicsEnvSet("SOFTGLUE","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/softGlue-R2-8-1")
epicsEnvSet("SOFTGLUEZYNQ","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/softGlueZynq-R2-0-1")
epicsEnvSet("SSCAN","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/sscan-R2-11-1")
epicsEnvSet("STD","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/std-R3-5")
epicsEnvSet("VAC","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/vac-R1-7")
epicsEnvSet("VME","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/vme-R2-9")
epicsEnvSet("YOKOGAWA_DAS","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/Yokogawa_DAS-R1-0-0")
epicsEnvSet("XXX","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/xxx-R6-0")
epicsEnvSet("AREA_DETECTOR","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/areaDetector-R3-3-1")
epicsEnvSet("ADCORE","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/areaDetector-R3-3-1/ADCore")
epicsEnvSet("ADSUPPORT","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/areaDetector-R3-3-1/ADSupport")
epicsEnvSet("ADSIMDETECTOR","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/areaDetector-R3-3-1/ADSimDetector")
epicsEnvSet("SNCSEQ","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/seq-2-2-5")
epicsEnvSet("ALLEN_BRADLEY","/usr/local/epics-nfs/modules/R3.15.6/synApps/R6.0/support/allenBradley-2-3")
epicsEnvSet("BL","PNR")
# Configuração da linha de luz
< /usr/local/epics-nfs/apps/Eurotherm2408/1.0/iocBoot/iocEurotherm2408/Eurotherm.config
epicsEnvSet("SERIAL_PORT","COM10")
epicsEnvSet("E_SHM","eurotherm")
epicsEnvSet("BAUD","9600")
epicsEnvSet("MBUS_SL_ADDR",1)
epicsEnvSet("MBUS_READ",3)
epicsEnvSet("MBUS_WRITE",6)
epicsEnvSet("MBUS_POLL",1000)
epicsEnvSet("STREAM_PROTOCOL_PATH","/usr/local/epics-nfs/apps/Eurotherm2408/1.0/db")
cd /usr/local/epics-nfs/apps/Eurotherm2408/1.0
## Register all support components
dbLoadDatabase "dbd/Eurotherm.dbd"
Eurotherm_registerRecordDeviceDriver pdbbase
## Configured by http://cars9.uchicago.edu/software/epics/modbusDoc.html
## Parameters to ModBus on /dev/ttyUSB0
## used to USB
#drvAsynSerialPortConfigure("EMODBUS","10.20.41.43:4001",0,0,0)
drvAsynIPPortConfigure("EMODBUS","10.20.41.43:4002",0,0,1)
###############################################################################
###############################################################################
# Set up ASYN HYPPIE ports
# pxiCreateSM(asyn, shared memory name)
# drvasynPXIConfig(port, COM port, shared memory name, serial type)
#asynSetOption("EMODBUS", 0, "${BAUD}", "9600")
#asynSetOption("EMODBUS", 0, "bits", "8")
#asynSetOption("EMODBUS", 0, "parity", "none")
#asynSetOption("EMODBUS", 0, "stop", "1")
## Configure
modbusInterposeConfig("EMODBUS",1,3000,0)
# drvModbusAsynConfigure(portName, => create a name
# tcpPortName, => defined before
# slaveAddress, => defined on equipament
# modbusFunction, => 3 : Read Holding Register (16-bit)
# modbusStartAddress, => adress of register
# modbusLength, => the length of data segment
# dataType, => default data type
# pollMsec,
# plcType); => Equipament name, not used
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_0_Rd_ATUNE", "EMODBUS", 1,3, 3072, 6,0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_0_Wr_ATUNE", "EMODBUS", 1,6, 3072, 6,0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Rd_PV", "EMODBUS", 1,3, 1, 3,0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Wr_PV", "EMODBUS", 1, 6, 1, 3, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Rd_WSP", "EMODBUS", 1,3, 5, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Rd_RR", "EMODBUS", 1, 3, 35, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Wr_RR", "EMODBUS", 1, 6, 35, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Rd_MAN", "EMODBUS", 1, 3, 273, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Wr_MAN", "EMODBUS", 1, 6, 273, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Rd_PID", "EMODBUS", 1, 3, 351, 3, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Wr_PID", "EMODBUS", 1, 6, 351, 3, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Rd_P", "EMODBUS", 1, 3, 6, 3, 0, 1000, "");
#####ADDED FOR DEBUG. ###
asynSetTraceIOMask Eurotherm_EMODBUS_1_1_Wr_P -1 HEX
PNR-Eurotherm2408-B-Eurotherm01.cmd line 73: Illegal integer 'HEX'
asynSetTraceMask Eurotherm_EMODBUS_1_1_Wr_P -1 ERROR|DRIVER
PNR-Eurotherm2408-B-Eurotherm01.cmd line 75: Illegal integer 'ERROR|DRIVER'
#####################################
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Rd_I", "EMODBUS", 1, 3, 8, 3, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Rd_D", "EMODBUS", 1, 3, 9, 3, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Wr_P", "EMODBUS", 1, 6, 6, 3, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Wr_I", "EMODBUS", 1, 6, 8, 3, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Wr_D", "EMODBUS", 1, 6, 9, 3, 0, 1000, "");
#############################################################################################################################
#Commands added 19/04/2022 by Marco Montevechi, Junior Cintra and Jo o Pedro Burle Ishida
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_0_Rd_PROG", "EMODBUS", 1, 3, 22, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_0_Wr_PROG", "EMODBUS", 1, 6, 22, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Rd_PSP", "EMODBUS", 1, 3, 163, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_1_Wr_PSP", "EMODBUS", 1, 6, 163, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_0_Rd_CYC", "EMODBUS", 1, 3, 59, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_0_Wr_CYC", "EMODBUS", 1, 6, 59, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_0_Rd_SEG", "EMODBUS", 1, 3, 56, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_0_Wr_SEG", "EMODBUS", 1, 6, 56, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_0_Rd_STYP", "EMODBUS", 1, 3, 29, 1, 0, 1000, "");
drvModbusAsynConfigure("Eurotherm_EMODBUS_1_0_Wr_STYP", "EMODBUS", 1, 6, 29, 1, 0, 1000, "");
#############################################################################################################################
## Load record instances
dbLoadRecords("db/dbEurotherm2408.db", "BL=PNR")
Error: syntax error
at or before "Readback" in file "db/dbEurotherm2408.db" line 423
## Load record instances
#dbLoadRecords("db/xxx.db","user=gabrielfedelHost")
cd /usr/local/epics-nfs/apps/Eurotherm2408/1.0/iocBoot/iocEurotherm2408
iocInit
Starting iocInit
############################################################################
## EPICS R3.15.6
## EPICS Base built Sep 27 2021
############################################################################
iocRun: All initialization complete
## Start any sequence programs
#seq sncxxx,"user=gabrielfedelHost"
2022/04/19 15:47:39.215 drvModbusAsyn::doModbusIO port Eurotherm_EMODBUS_1_1_Wr_P Modbus exception=3
2022/04/19 15:47:39.215 PNR:EU2408:P devAsynInt32::processCallbackOutput process error
epics>