EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Unknown error with an equipment
From: Mark Rivers via Tech-talk <tech-talk at aps.anl.gov>
To: TONY YU <tonyyucom at gmail.com>
Cc: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Tue, 22 Mar 2022 02:41:12 +0000
Can you also include the asynTrace output in that?  It looks like StreamDevice says it is sending the string it should.  What is the evidence that it is not working?

Mark



From: TONY YU <tonyyucom at gmail.com>
Sent: Monday, March 21, 2022 11:58 AM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: Andrew Johnson <anj at anl.gov>; tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: Re: Unknown error with an equipment
 
Hi Mark,

I tried to set DRVH to 200 in SetEpass and the asynTrace output of HSA still shows 1638.4000. Also I use caput in another terminal and the value of the Epass is still 858.475, which is equal to 1638.4000 in HSA.

Then I enabled StreamDebug and here is the partial report for setting the Epass I believe. In this case, I tried to set Epass to be 100 so that the HSA value is equal to 190.850002, but there is no response to the change.

2022/03/21 16:27:13.813582 IDEA AsynDriverInterface.cc:1438: AsynDriverInterface::handleRequest(ImpMik:IDEA:SetEpass) Lock
2022/03/21 16:27:13.813598 IDEA AsynDriverInterface.cc:565: AsynDriverInterface::lockHandler(ImpMik:IDEA:SetEpass)
2022/03/21 16:27:13.813615 IDEA AsynDriverInterface.cc:503: AsynDriverInterface::connectToAsynPort(ImpMik:IDEA:SetEpass)
2022/03/21 16:27:13.813589 cbLow StreamEpics.cc:896: streamRecordProcessCallback(ImpMik:IDEA:SetRange) processing record
2022/03/21 16:27:13.813638 IDEA AsynDriverInterface.cc:536: AsynDriverInterface::connectToAsynPort(ImpMik:IDEA:SetEpass) is already connected
2022/03/21 16:27:13.813663 cbLow StreamEpics.cc:699: Stream::process(ImpMik:IDEA:SetRange) ready. don't convert
2022/03/21 16:27:13.813697 IDEA 2022/03/21 16:27:13.813718 cbLow StreamEpics.cc:901: streamRecordProcessCallback(ImpMik:IDEA:SetRange) processing record done
StreamCore.cc:817: StreamCore::lockCallback(ImpMik:IDEA:SetEpass, status=Success)
2022/03/21 16:27:13.813753 IDEA AsynDriverInterface.cc:588: AsynDriverInterface::writeRequest(ImpMik:IDEA:SetEpass, "Set hsa 190.850002<0d><0a>", 100 msec)
2022/03/21 16:27:13.813779 IDEA AsynDriverInterface.cc:1438: AsynDriverInterface::handleRequest(ImpMik:IDEA:SetEpass) Write
2022/03/21 16:27:13.813801 IDEA AsynDriverInterface.cc:616: AsynDriverInterface::writeHandler(ImpMik:IDEA:SetEpass)
2022/03/21 16:27:13.814939 IDEA AsynDriverInterface.cc:667: AsynDriverInterface::writeHandler(ImpMik:IDEA:SetEpass): write(..., outputSize=20, written=20) [timeout=0.1 sec] = asynSuccess
2022/03/21 16:27:13.814975 IDEA AsynDriverInterface.cc:676: AsynDriverInterface::writeHandler(ImpMik:IDEA:SetEpass): device is connected
2022/03/21 16:27:13.814994 IDEA StreamCore.cc:849: StreamCore::writeCallback(ImpMik:IDEA:SetEpass, status=Success)
2022/03/21 16:27:13.815008 IDEA StreamCore.cc:552: StreamCore::evalCommand(ImpMik:IDEA:SetEpass): activeCommand = in
2022/03/21 16:27:13.815026 IDEA AsynDriverInterface.cc:752: AsynDriverInterface::readRequest(ImpMik:IDEA:SetEpass, 1000 msec reply, 5000 msec read, expect 0 bytes, async=no)
2022/03/21 16:27:13.815053 IDEA AsynDriverInterface.cc:777: AsynDriverInterface::readRequest ImpMik:IDEA:SetEpass: queueRequest(..., priority=0, queueTimeout=1 sec) = asynSuccess [async=false]
2022/03/21 16:27:13.815088 IDEA AsynDriverInterface.cc:1438: AsynDriverInterface::handleRequest(ImpMik:IDEA:SetEpass) Read
2022/03/21 16:27:13.815104 IDEA AsynDriverInterface.cc:837: AsynDriverInterface::readHandler(ImpMik:IDEA:SetEpass) input EOS set to <0d><0a>
2022/03/21 16:27:13.815118 IDEA AsynDriverInterface.cc:896: AsynDriverInterface::readHandler(ImpMik:IDEA:SetEpass): ioAction=Read read(..., bytesToRead=1, ...) [timeout=1 sec]
2022/03/21 16:27:13.824096 IDEA AsynDriverInterface.cc:903: AsynDriverInterface::readHandler(ImpMik:IDEA:SetEpass): read returned asynSuccess: ioAction=Read received=1, eomReason=CNT, buffer="#"
2022/03/21 16:27:13.824142 IDEA AsynDriverInterface.cc:910: AsynDriverInterface::readHandler(ImpMik:IDEA:SetEpass): device is now connected
2022/03/21 16:27:13.824160 IDEA AsynDriverInterface.cc:948: AsynDriverInterface::readHandler(ImpMik:IDEA:SetEpass): received 1 of 1 bytes "#" eomReason=CNT
2022/03/21 16:27:13.824184 IDEA StreamCore.cc:938: StreamCore::readCallback(ImpMik:IDEA:SetEpass, status=StreamIoSuccess input="#", size=1)
2022/03/21 16:27:13.824207 IDEA StreamCore.cc:994: StreamCore::readCallback(ImpMik:IDEA:SetEpass) inputBuffer="#", size 1
2022/03/21 16:27:13.824229 IDEA StreamCore.cc:1039: StreamCore::readCallback(ImpMik:IDEA:SetEpass) inTerminator <0d><0a> not found
2022/03/21 16:27:13.824247 IDEA StreamCore.cc:1075: StreamCore::readCallback(ImpMik:IDEA:SetEpass) wait for more input
2022/03/21 16:27:13.824263 IDEA AsynDriverInterface.cc:1074: AsynDriverInterface::readHandler(ImpMik:IDEA:SetEpass) readMore=-1 bytesToRead=63
2022/03/21 16:27:13.824284 IDEA AsynDriverInterface.cc:896: AsynDriverInterface::readHandler(ImpMik:IDEA:SetEpass): ioAction=Read read(..., bytesToRead=63, ...) [timeout=5 sec]
2022/03/21 16:27:13.824770 IDEA AsynDriverInterface.cc:903: AsynDriverInterface::readHandler(ImpMik:IDEA:SetEpass): read returned asynSuccess: ioAction=Read received=9, eomReason=EOS, buffer="0E HSA ok"
2022/03/21 16:27:13.824822 IDEA AsynDriverInterface.cc:910: AsynDriverInterface::readHandler(ImpMik:IDEA:SetEpass): device is now connected
2022/03/21 16:27:13.824848 IDEA AsynDriverInterface.cc:948: AsynDriverInterface::readHandler(ImpMik:IDEA:SetEpass): received 9 of 63 bytes "0E HSA ok" eomReason=EOS
2022/03/21 16:27:13.824873 IDEA StreamCore.cc:938: StreamCore::readCallback(ImpMik:IDEA:SetEpass, status=StreamIoEnd input="0E HSA ok", size=9)
2022/03/21 16:27:13.824897 IDEA StreamCore.cc:994: StreamCore::readCallback(ImpMik:IDEA:SetEpass) inputBuffer="#0E HSA ok", size 10
2022/03/21 16:27:13.824922 IDEA StreamCore.cc:1039: StreamCore::readCallback(ImpMik:IDEA:SetEpass) inTerminator <0d><0a> not found
2022/03/21 16:27:13.824946 IDEA StreamCore.cc:1046: StreamCore::readCallback(ImpMik:IDEA:SetEpass) end flag received
2022/03/21 16:27:13.824966 IDEA StreamCore.cc:1104: StreamCore::readCallback(ImpMik:IDEA:SetEpass) input line: "#0E HSA ok"
2022/03/21 16:27:13.824988 IDEA StreamCore.cc:552: StreamCore::evalCommand(ImpMik:IDEA:SetEpass): activeCommand = end
2022/03/21 16:27:13.825010 IDEA StreamCore.cc:517: StreamCore::finishProtocol(ImpMik:IDEA:SetEpass, status=Success) bus owner
2022/03/21 16:27:13.825033 IDEA AsynDriverInterface.cc:576: AsynDriverInterface::unlock(ImpMik:IDEA:SetEpass)
2022/03/21 16:27:13.825057 IDEA AsynDriverInterface.cc:1417: AsynDriverInterface::finish(ImpMik:IDEA:SetEpass) start
2022/03/21 16:27:13.825078 IDEA AsynDriverInterface.cc:1427: AsynDriverInterface::finish(ImpMik:IDEA:SetEpass) done
2022/03/21 16:27:13.825125 cbLow StreamEpics.cc:896: streamRecordProcessCallback(ImpMik:IDEA:SetEpass) processing record
2022/03/21 16:27:13.825175 cbLow StreamEpics.cc:699: Stream::process(ImpMik:IDEA:SetEpass) ready. don't convert
2022/03/21 16:27:13.825199 cbLow StreamEpics.cc:901: streamRecordProcessCallback(ImpMik:IDEA:SetEpass) processing record done


Best regards,
Tony


Mark Rivers <rivers at cars.uchicago.edu> 於 2022年3月19日週六 上午1:59寫道:
You should set DRVH to 200 in SetEpass so the VAL filed cannot be set to more than 200.

Use caput to set SetEpass to 150 and see what happens in the asynTrace output. You can also enable StreamDebug if you still have problems.

Mark


Sent from my iPhone

On Mar 18, 2022, at 12:16 AM, TONY YU <tonyyucom at gmail.com> wrote:


Hi Mark and Andrew,

I added asynSetTraceMask("IDEA",-1,0x9) and asynSetTraceIOMask("IDEA",-1,0x2) in st.cmd to monitor the outputs from IDEA. Here is the first few lines from the output:

2022/03/18 10:45:52.753 terminal.chamber6:10002 write 10
Get ekin\r\n
2022/03/18 10:45:52.763 terminal.chamber6:10002 read 7
0.000\r\n
2022/03/18 10:45:52.765 terminal.chamber6:10002 write 9
Get hsa\r\n
2022/03/18 10:45:52.774 terminal.chamber6:10002 read 8
1638.400
2022/03/18 10:45:52.775 terminal.chamber6:10002 read 2
\r\n
2022/03/18 10:45:53.206 terminal.chamber6:10002 write 12
Get filter\r\n
2022/03/18 10:45:53.215 terminal.chamber6:10002 read 8
#07 filt
2022/03/18 10:45:53.216 terminal.chamber6:10002 read 7
er on\r\n
2022/03/18 10:45:53.297 terminal.chamber6:10002 write 11
Get range\r\n
2022/03/18 10:45:53.306 terminal.chamber6:10002 read 8
#06 rang
2022/03/18 10:45:53.307 terminal.chamber6:10002 read 7
e x10\r\n
2022/03/18 10:45:53.998 terminal.chamber6:10002 read 8
#01 ok\r\n
2022/03/18 10:45:53.999 terminal.chamber6:10002 write 5
ver\r\n
2022/03/18 10:45:54.010 terminal.chamber6:10002 read 24
EFC_for_NanoESCA V01.03
2022/03/18 10:45:54.012 terminal.chamber6:10002 read 7
B0115\r\n
2022/03/18 10:45:54.013 terminal.chamber6:10002 write 17
Set mode remote\r\n
2022/03/18 10:45:54.022 terminal.chamber6:10002 read 8
#04 remo

I realize that the default get and set voltage is exceed the range of the operation (terminal.chamber6:10002 read 8 1638.400), which can't be handled by the power supply. The maximum value in the DB file should be 200. The problem is that I cannot set the output voltage properly. When I try to set the voltage in CSS, there is no response from the changing. Below shows the logging.

2022/03/18 11:04:40.283 terminal.chamber6:10002 write 18
Set hsa 0.000000\r\n
2022/03/18 11:04:40.292 terminal.chamber6:10002 read 12
#0E HSA ok\r\n
2022/03/18 11:04:40.734 terminal.chamber6:10002 write 9
Get hsa\r\n
2022/03/18 11:04:40.744 terminal.chamber6:10002 read 8
1638.400
2022/03/18 11:04:41.228 terminal.chamber6:10002 write 9
Get hsa\r\n
2022/03/18 11:04:41.237 terminal.chamber6:10002 read 10
1638.400\r\n

I would like to know how to initialize the set values to the devices in the db file. Below the the corresponding db.

record(ai, "$(P):$(NAME):Epass") {
  field(SCAN, ".5 second")
  field(DTYP, "stream")
  field(INP, "@IDEA.proto Get_HSA $(interface)")
  field(PREC, "3")
  field(EGU, "V")
  field(HOPR, "200")
  field(LOPR, "0")
  field(AOFF, "0")
  field(ASLO, "0.5239717")
}

record(ao, "$(P):$(NAME):SetEpass") {
  field(DTYP, "stream")
  field(OUT, "@IDEA.proto Set_HSA $(interface)")
  field(PREC, "3")
  field(EGU, "V")
  field(HOPR, "200")
  field(LOPR, "0")
  field(AOFF, "0")
  field(ASLO, "0.5239717")
  field(HIHI, "200")
  field(LOLO, "30")
  field(HIGH, "200")
  field(LOW, "30")
}

Best,
Tony


Andrew Johnson <anj at anl.gov> 於 2022年3月17日週四 下午9:12寫道:
Hi Tony,

The error messages you posted ought to be self-explanatory if you read them in order:

> error:
> IDEA ImpMik:IDEA:Status: Input "#31 hv error detect" mismatch after 4 bytes
> IDEA ImpMik:IDEA:Status: got "hv error detect" where "ok" was expected
> IDEA ImpMik:IDEA:SetFilterOn: Input "#2E impossible, erro" mismatch after 1 byte
> IDEA ImpMik:IDEA:SetFilterOn: got "2E impossible, error" where "0" was expected

Your protocol for reading the status from the device says:

> #
> # Get_Status
> #
> Get_Status {
>     out "Get status";
>     in  "#%2i ok";
>     out "ver";
>     in "EFC_for_NanoESCA V01.03 B0115";
>     out "Set mode remote";
>     in "#04 remote mode";
> }

Thus you're telling StreamDevice that after it sends a "Get status" string, it will get back "#" followed by a 2-digit integer and the word "ok". The first two error message lines explain that instead of "ok" it's seeing the string "hv error detect". Have you looked at the instrument that it's talking to? I would guess there's a problem with some high voltage signal that it isn't seeing. You should probably fix the protocol file so it can accept error strings like that from the device and make them available in a stringin record instead of always assuming that the instrument is working and will never give you an error, but you might be able to resolve your immediate issue by fixing whatever the instrument is complaining about.

Always fix your first error first, then look at any error messages you get in that state — later errors are often caused by earlier ones and may go away once you've fixed the first problem.

HTH,

- Andrew
-- 
Complexity is free, it's Simplicity that takes work.

Replies:
Re: Unknown error with an equipment TONY YU via Tech-talk
References:
Unknown error with an equipment TONY YU via Tech-talk
Re: Unknown error with an equipment Mark Rivers via Tech-talk
Re: Unknown error with an equipment TONY YU via Tech-talk
Re: Unknown error with an equipment Andrew Johnson via Tech-talk
Re: Unknown error with an equipment TONY YU via Tech-talk
Re: Unknown error with an equipment Mark Rivers via Tech-talk
Re: Unknown error with an equipment TONY YU via Tech-talk

Navigate by Date:
Prev: Re: Unknown error with an equipment TONY YU via Tech-talk
Next: Only one network interface of three NF CA5351 Current Amplifiers is accessible Chiang, Liang-Chih [江良志] via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024 
Navigate by Thread:
Prev: Re: Unknown error with an equipment TONY YU via Tech-talk
Next: Re: Unknown error with an equipment TONY YU via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024 
ANJ, 14 Sep 2022 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·