Hi,
I would first try a direct TCP connection via telnet, not using EPICS, to see if the Moxa settings and the Lakeshore settings are correct.
A few things to check:
- The serial settings on the Lakeshore need to match what you have set on the Moxa.
- Are you sure it’s not 7 data bits? The manual says 7 data bits.
- In the st.cmd file you have set serial settings via asynSetOption, but these wouldn’t have any effect if the Moxa is in TCP/server mode. It’s the Moxa settings that will matter.
Cheers,
Matt
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Wlodek, Jakub via Tech-talk
Sent: Wednesday, February 2, 2022 12:31 PM
To: tech-talk at aps.anl.gov; Wlodek, Jakub <jwlodek at bnl.gov>
Subject: [EXTERNAL] Re: Configuring serial communication with Lakeshore 331 via Moxa
Apologies, sent the first message before attaching the below examples:
First, the standard *IDN? command gets us L\\xba%,s\\x8aEj\\x9b1:i\\xbb2&\\xd3b1&\\xa3\\ as a response
[jwlodek@xf06bm-ioc2 ioclakeshore331]$ caput XF:06BM-LS331:01:serial.AOUT "*IDN?"
Old : XF:06BM-LS331:01:serial.AOUT *IDN?
New : XF:06BM-LS331:01:serial.AOUT *IDN?
[jwlodek@xf06bm-ioc2 ioclakeshore331]$ caget XF:06BM-LS331:01:serial.TINP
XF:06BM-LS331:01:serial.TINP L\\xba%,s\\x8aEj\\x9b1:i\\xbb2&\\xd3b1&\\xa3\\
[jwlodek@xf06bm-ioc2 ioclakeshore331]$ caget -S XF:06BM-LS331:01:serial.ERRS
XF:06BM-LS331:01:serial.ERRS timeout nread 23 SOMEIP:SOMEPORT timeout: Resource temporarily unavailable
[jwlodek@xf06bm-ioc2 ioclakeshore331]$ caput XF:06BM-LS331:01:serial.AOUT "RANGE?"
Old : XF:06BM-LS331:01:serial.AOUT *IDN?
New : XF:06BM-LS331:01:serial.AOUT RANGE?
[jwlodek@xf06bm-ioc2 ioclakeshore331]$ caget XF:06BM-LS331:01:serial.TINP
XF:06BM-LS331:01:serial.TINP \\xb0C\\xf1
To start, I have the IOC just creating the asyn port pointing at the TCP Server on the appropriate port on the moxa, and I load the asynRecord database, so I can test sending/receiving
commands using the asynOctet interface. I configured the serial connection on the moxa, asyn, and the device to 9600 baud, 8 data bits, and one stop bit, and I can see that I am communicating with the device on some level, however, the responses I am seeing
don't seem correct; they are full for unexpected characters, and don't match the format listed in the manual. I am guessing there is still something I missed in the configuration of the serial connection.
[jwlodek@xf06bm-ioc2 ioclakeshore331]$ more st.cmd
#!../../bin/linux-x86_64/lakeshore331
epicsEnvSet("SYS", "XF:06BMB-CT")
epicsEnvSet("IOC_P", "$(SYS){IOC:LS1}")
epicsEnvSet("PREFIX", "XF:06BM-")
< envPaths
cd ${TOP}
## Register all support components
dbLoadDatabase("$(TOP)/dbd/lakeshore331.dbd",0,0)
lakeshore331_registerRecordDeviceDriver(pdbbase)
drvAsynIPPortConfigure("LAKE1", "SOMEIP:SOMEPORT")
asynOctetSetOutputEos("LAKE1", 0, "\r\n")
#asynOctetSetInputEos("LAKE1", 0, "\r\x8a")
asynSetOption("LAKE1", -1, "baud", "9600")
asynSetOption("LAKE1", -1, "bits", "8")
asynSetOption("LAKE1", -1, "parity", "odd")
asynSetOption("LAKE1", -1, "stop", "1")
dbLoadRecords("$(EPICS_BASE)/db/asynRecord.db", "P=$(PREFIX), R=LS331:01:serial, PORT=LAKE1, ADDR=0, OMAX=0, IMAX=0")
var streamDebug 2
iocInit()
Also, while every command I send gets some (different) response, I seem to get a timeout error for the asynOctet interface, indicating something is not quite right:
Has someone configured such a device that has run into a similar issue? Or alternatively, does anyone know what could the cause be?
|