|
Kevin -
I retested this morning with asynSetTraceMask reset to your specified values, in addition to sending the controller an 'EF' command via screen before starting the IOC.
The output does indeed look different between the driver's communication and my manual transaction with caput:
Driver:
Starting iocInit
############################################################################
## EPICS R7.0.9
## Rev. 2025-11-28T09:00-0600
## Rev. Date build date/time:
############################################################################
2025/12/05 07:57:34.087 /dev/ttyS0 write 2
WY
2025/12/05 07:57:34.087 /dev/ttyS0 write 2
WY
2025/12/05 07:57:34.087 /dev/ttyS0 write 2
WY
recGblRecordError: motor_init_record_com(): card does not exist! Illegal field value PV: serial:m1
iocRun: All initialization complete
## Start any sequence programs
#seq sncserial,"user=necat"
epics>
caput:
2025/12/05 07:58:37.732 /dev/ttyS0 write 2
WY
2025/12/05 07:58:37.744 /dev/ttyS0 read 8
\n\rPC78 v
Invalid entry-card #0
2025/12/05 07:58:37.752 /dev/ttyS0 read 8
er 1.21-
Invalid entry-card #0
2025/12/05 07:58:37.761 /dev/ttyS0 read 8
46 S/N 0
Invalid entry-card #0
2025/12/05 07:58:37.769 /dev/ttyS0 read 8
00995 FP
Invalid entry-card #0
2025/12/05 07:58:37.777 /dev/ttyS0 read 8
GA:B4 -
Invalid entry-card #0
Thank you all for the assistance you've provided. As a newcomer to the EPICS world, I truly appreciate the patience and generosity of this community.
-Jim
Advanced Photon Source, Sector 24
9700 S. Cass Avenue, Building 436 E001
Lemont, IL 60439
Jim,
If the input terminator is incorrect and the read results in a timeout, that can sometimes cause the problems you're seeing (the driver thinks an error has occurred because of the asynTimeout status but the reply is still received when sending the command manually).
The following lines in the IOC's startup script should cause lots of information about the communication to be printed:
asynSetTraceIOMask("L0", 0, 2)
asynSetTraceMask("L0", 0, 255)
I would probably change the asynSetTraceMask call to this, since the driver output should be sufficient to see commands & replies:
asynSetTraceMask("L0", 0, "ERROR+DRIVER")
Does the asynTrace output look different when the WY command is sent during iocInit than it does when the command is sent manually?
The driver sends an "echo off" command (EF) *after* the WY command successfully queries the ID string:
https://nam12.safelinks.protection.outlook.com/?url="">
I don't know if the WY command succeeds if echo is on. Can you confirm the current echo state of the controller?
Kevin
________________________________________
From: James P. Withrow <[email protected]>
Sent: Thursday, December 4, 2025 3:19 PM
To: Peterson, Kevin M.; Tech Talk EPICS
Subject: Re: Further OMS PC78 questions
Yes, I do not receive a response from the controller when it is sending the three "WY" commands from the driver. I have seen the response before in this transaction, but I haven't been able to get it to reoccur so far. If I send "WY"
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.
ZjQcmQRYFpfptBannerEnd
Yes, I do not receive a response from the controller when it is sending the three "WY" commands from the driver. I have seen the response before in this transaction, but I haven't been able to get it to reoccur so far. If I send "WY" to the .AOUT field of the
asyn record for the port with caput, I do get back the expected response, and I can see the logging messages scroll past in the IOC.
Is there something different that the driver is doing to send the commands vs. caput/caget?
I've put the line 'var "drvOmsPC68debug", 10' in my st.cmd file, but it doesn't appear to be generating any additional output
Thanks!
-Jim
Jim Withrow, Research Support Specialist - [email protected]
NE-CAT, Cornell University - https://nam12.safelinks.protection.outlook.com/?url="">
Advanced Photon Source, Sector 24
9700 S. Cass Avenue, Building 436 E001
Lemont, IL 60439
________________________________
From: Peterson, Kevin M. <[email protected]>
Sent: Thursday, December 4, 2025 10:35 AM
To: James P. Withrow <[email protected]>; Tech Talk EPICS <[email protected]>
Subject: Re: Further OMS PC78 questions
Jim,
The "card does not exist" error means the driver didn't receive a response from the firmware very query of the controller in the motor_init function:
https://nam12.safelinks.protection.outlook.com/?url="">
There is a debug variable, drvOmsPC68debug, that can be set to a non-zero value before iocInit to enable debug messages to be printed:
var "drvOmsPC68debug", 10
That should give us more information about what is failing.
Kevin
|