Ø
Let me clarify, we aren’t using the asyn record for the motor we are using the motor recoded with DTYP=asynMotor.
Ø
In the motor records, some fields are updated by a background task and not by the SCAN field, for example. So setting DISV to disable the record I don’t believe
quells the messages from the background task that has found an error during polling. We don’t want to change the logic of how the motor are controlled as this is a hug underrating, but I’d like quell the messages of a controller, or set it offline without
having to reboot an iocs remove db pvs.
I understand that perfectly. Neither Matt nor I was suggesting that you use the asyn record to control the motors. We were suggesting that you can use the asyn record
simply to control the debugging messages.
I also showed you how to turn off these messages from the iocsh command line in a previous message.
Mark
From: Luchini, Kristi L. <luchini at slac.stanford.edu>
Sent: Tuesday, March 2, 2021 2:34 PM
To: Mark Rivers <rivers at cars.uchicago.edu>; 'Pearson, Matthew R.' <pearsonmr at ornl.gov>
Cc: Balakrishnan, Namrata <namrata at slac.stanford.edu>; Oven, Ziga <zoven at slac.stanford.edu>; tech-talk at aps.anl.gov
Subject: RE: motor record - how to turn off asyn error messages for a single motor
Hi Mark,
>Just to clarify, you can actually use a single asyn record for any number of Asyn addresses
Let me clarify, we aren’t using the asyn record for the motor we are using the motor recoded with DTYP=asynMotor. In the motor records, some fields are updated by a background task and not by the SCAN field,
for example. So setting DISV to disable the record I don’t believe quells the messages from the background task that has found an error during polling. We don’t want to change the logic of how the motor are controlled as this is a hug underrating, but I’d
like quell the messages of a controller, or set it offline without having to reboot an iocs remove db pvs.
-kristi
Ø
Depending on the driver, you may need a separate record for each Asyn address.
Just to clarify, you can actually use a single asyn record for any number of Asyn addresses. The address field can be changed in the record GUI at run time, so you can first connect to one axis, then another axis. In fact the aysn PORT
can also be changed a run-time so a single asyn record can be used to control any asyn port and any asyn address in your IOC.
Mark
Hi,
Since the messages are coming from an Asyn driver, they are likely using the asynPrint function which uses a mask to control which messages are printed for that particular Asyn port. It’s possible to control this at the database level by
using the asynRecord. If you load one of these and connect it to the Asyn port in question, you can use the trace control fields to turn off and on error messages:
https://epics.anl.gov/modules/soft/asyn/R4-38/asynRecord.html#TraceControlFields
Depending on the driver, you may need a separate record for each Asyn address.
Cheers,
Matt
Hello,
We use the asyn to communicate to motor controllers in production user area, where motors may be unplugged due to the users need. For other application where we use asyn we use the SDIS/DISV field of a PV to set an asyn device online/offline,
thereby disabling messages from spewing to the console port. However, when the motor record is used, for a asyn motor controller it’s unclear how to turn off messages for a single device. Is there a method do this this, or is the only solution to shut off
all messages to the console port?
Regards,
-Kristi
record(bo, "$(ps):CommLink") {
field(DESC, "Communication Link Status")
field(ZNAM, "Offline")
field(ONAM, "Online")
field(FLNK, "$(ps):InitCommLinkCalc")
}
record(fanout, "$(ps):UpdateFast")
{
# Process State before Curr since State may change Curr limits.
field(DESC, "Fast Update")
field(LNK1, "$(ps):Volt.PROC")
field(LNK2, "$(ps):State.PROC")
field(LNK3, "$(ps):VoltSetptRbck.PROC")
field(LNK4, "$(ps):CurrSetptRbck.PROC")
field(LNK5, "$(ps):Curr.PROC")
field(LNK6, "$(ps):CurrAct.PROC")
field(SCAN, ".5 second")
field(DISV, "0")
field(SDIS, "$(ps):CommLink")
field(ASG, "Internal")
}
record(fanout, "$(ps):UpdateSlow")
{
field(DESC, "Slow Update")
field(LNK1, "$(ps):StatusEvent.PROC")
field(LNK2, "$(ps):OperStatus.PROC")
field(LNK3, "$(ps):FaultStatus.PROC")
field(LNK4, "$(ps):FaultEvent.PROC")
field(SCAN, "2 second")
field(DISV, "0")
field(SDIS, "$(ps):CommLink")
field(ASG, "Internal")
}
2021/03/02 08:29:30.419 Pico8742Driver:poll(): Communication Error
2021/03/02 08:29:30.429 Pico8742Driver:Pico8742::writeReadController(): error, status=3
2021/03/02 08:29:30.429 Pico8742Driver:poll(): Communication Error
2021/03/02 08:29:30.439 Pico8742Driver:Pico8742::writeReadController(): error, status=3
2021/03/02 08:29:30.439 Pico8742Driver:poll(): Communication Error
2021/03/02 08:29:30.449 Pico8742Driver:Pico8742::writeReadController(): error, status=3
2021/03/02 08:29:30.449 Pico8742Driver:poll(): Communication Error