Mark Rivers wrote:
Actually I use Linux, Windows and Cygwin IOCs in addition to vxWorks. I have never had a problem with the transform record on any of these platforms, and others report no problems on RTEMS.
As what I have mentioned, we had no problems in the past either.
I agree that the dfanout can be used instead of the transform in this particular application, but there are many applications where this is not true, the transform record provides unique capabilities.
The truth is that "dfanout" is the correct way to implement
the function to stop all motors. It is a standard record that
comes with the EPICS release.
It is obvious a wrong approach to apply a special record which
has undesirable special capabilities to stop all motors. I noticed that the
transformRecord.c file got updated frequently in the release that I
advise one
to use the standard records for any application, if possible.
Thus, if you are convinced that you have found a bug in the transform record it would be most helpful if you could track it down.
I would worry only if the bug occurred when the special capabilities in the
transform record are truly needed. However, this is not the case.
Of course it is possible that the bug is elsewhere in your application and the use of the transform record just happens to expose it.
I have given my advise.....
Kate
Martk
________________________________
From: Kate Feng [mailto:[email protected]]
Sent: Tue 1/13/2009 12:49 PM
To: Mark Rivers
Cc: [email protected]
Subject: Re: stop all motors
Mark Rivers wrote:
Can you figure out why the transform record is causing the crash? It is widely used with no other problems that I know of.
You use vxWorks. We use RTEMS.
A generic record such as "dfanout" works very well for the purpose.
In fact, I do not think a custom record such as a "transform" record is
needed.
Kate
Mark
________________________________
From: [email protected] on behalf of Kate Feng
Sent: Tue 1/13/2009 11:00 AM
To: [email protected]
Subject: stop all motors
Hi,
If the "all_com_32.db" is loaded in the database, it triggered system
crash while we were running one of our RTEMS applications.
I traced down that the bugs were caused by the "transform" record
(e.g. transformRecord.c) for the motor "allstop" function. However,
a generic record "dfanout" can replace it to function correctly.
The attached all_com_32.db is what I used to solve the problem.
It seems to work so far.
Regards,
Kate
#Kate Feng 12/30/2008:Use "dfanout" instead of "transform" for motor
"allstop"
grecord(bo,"$(P)allstop") {
field(DOL,"1")
field(OUT,"$(P)allstop1.VAL PP MS")
}
grecord(bo,"$(P)gateOpen") {
field(ZNAM,"Closed")
field(ONAM,"Open")
}
grecord(calc,"$(P)alldoneBlinker") {
field(SCAN,".5 second")
field(CALC,"B?0:!A")
field(INPA,"$(P)alldoneBlinker.VAL NPP NMS")
field(INPB,"$(P)alldone.VAL NPP NMS")
}
grecord(dfanout,"$(P)allstop5") {
field(DESC,"allstop distribution")
field(OMSL,"closed_loop")
field(DOL,"1")
field(OUTA,"$(P)m25.STOP CA MS")
field(OUTB,"$(P)m26.STOP CA MS")
field(OUTC,"$(P)m27.STOP CA MS")
field(OUTD,"$(P)m28.STOP CA MS")
field(OUTE,"$(P)m29.STOP CA MS")
field(OUTF,"$(P)m30.STOP CA MS")
field(OUTG,"$(P)m31.STOP CA MS")
field(OUTH,"$(P)m32.STOP CA MS")
}
grecord(dfanout,"$(P)allstop4") {
field(DESC,"allstop distribution")
field(OMSL,"closed_loop")
field(DOL,"1")
field(OUTA,"$(P)m17.STOP CA MS")
field(OUTB,"$(P)m18.STOP CA MS")
field(OUTC,"$(P)m19.STOP CA MS")
field(OUTD,"$(P)m20.STOP CA MS")
field(OUTE,"$(P)m21.STOP CA MS")
field(OUTF,"$(P)m22.STOP CA MS")
field(OUTG,"$(P)m23.STOP CA MS")
field(OUTH,"$(P)m24.STOP CA MS")
}
grecord(dfanout,"$(P)allstop3") {
field(DESC,"allstop distribution")
field(DOL,"1")
field(OUTA,"$(P)m9.STOP CA MS")
field(OUTB,"$(P)m10.STOP CA MS")
field(OUTC,"$(P)m11.STOP CA MS")
field(OUTD,"$(P)m12.STOP CA MS")
field(OUTE,"$(P)m13.STOP CA MS")
field(OUTF,"$(P)m14.STOP CA MS")
field(OUTG,"$(P)m15.STOP CA MS")
field(OUTH,"$(P)m16.STOP CA MS")
}
grecord(dfanout,"$(P)allstop2") {
field(DESC,"allstop distribution")
field(OMSL,"closed_loop")
field(DOL,"1")
field(OUTA,"$(P)m1.STOP CA MS")
field(OUTB,"$(P)m2.STOP CA MS")
field(OUTC,"$(P)m3.STOP CA MS")
field(OUTD,"$(P)m4.STOP CA MS")
field(OUTE,"$(P)m5.STOP CA MS")
field(OUTF,"$(P)m6.STOP CA MS")
field(OUTG,"$(P)m7.STOP CA MS")
field(OUTH,"$(P)m8.STOP CA MS")
}
grecord(dfanout,"$(P)allstop1") {
field(DESC,"allstop distribution")
field(OMSL,"closed_loop")
field(DOL,"1")
field(OUTA,"$(P)AbortScans.PROC PP MS")
field(OUTB,"$(P)allstop2.VAL PP MS")
field(OUTC,"$(P)allstop3.VAL PP MS")
field(OUTD,"$(P)allstop4.VAL PP MS")
field(OUTE,"$(P)allstop5.VAL PP MS")
}
grecord(swait,"$(P)alldone") {
field(DESC,"All motors done moving")
field(SCAN,"I/O Intr")
field(PINI,"YES")
field(INAN,"$(P)alldone_1.VAL")
field(INBN,"$(P)alldone_2.VAL")
field(INCN,"$(P)alldone_3.VAL")
field(INDN,"$(P)alldone_4.VAL")
field(ININ,"$(P)gateOpen.VAL")
field(CALC,"A&&B&&C&&D&&!I")
field(DOLD,"1")
}
grecord(swait,"$(P)alldone_2") {
field(DESC,"8 motors done moving")
field(SCAN,"I/O Intr")
field(PINI,"YES")
field(INAN,"$(P)m9.DMOV")
field(INBN,"$(P)m10.DMOV")
field(INCN,"$(P)m11.DMOV")
field(INDN,"$(P)m12.DMOV")
field(INEN,"$(P)m13.DMOV")
field(INFN,"$(P)m14.DMOV")
field(INGN,"$(P)m15.DMOV")
field(INHN,"$(P)m16.DMOV")
field(CALC,"(a&b&c&d&e&f&g&h)=1")
field(OOPT,"Transition To Non-zero")
field(DOLD,"1")
}
grecord(swait,"$(P)alldone_1") {
field(DESC,"8 motors done moving")
field(SCAN,"I/O Intr")
field(PINI,"YES")
field(INAN,"$(P)m1.DMOV")
field(INBN,"$(P)m2.DMOV")
field(INCN,"$(P)m3.DMOV")
field(INDN,"$(P)m4.DMOV")
field(INEN,"$(P)m5.DMOV")
field(INFN,"$(P)m6.DMOV")
field(INGN,"$(P)m7.DMOV")
field(INHN,"$(P)m8.DMOV")
field(CALC,"(a&b&c&d&e&f&g&h)=1")
field(OOPT,"Transition To Non-zero")
field(DOLD,"1")
}
grecord(swait,"$(P)alldone_3") {
field(DESC,"8 motors done moving")
field(SCAN,"I/O Intr")
field(PINI,"YES")
field(INAN,"$(P)m17.DMOV")
field(INBN,"$(P)m18.DMOV")
field(INCN,"$(P)m19.DMOV")
field(INDN,"$(P)m20.DMOV")
field(INEN,"$(P)m21.DMOV")
field(INFN,"$(P)m22.DMOV")
field(INGN,"$(P)m23.DMOV")
field(INHN,"$(P)m24.DMOV")
field(CALC,"(a&b&c&d&e&f&g&h)=1")
field(OOPT,"Transition To Non-zero")
field(DOLD,"1")
}
grecord(swait,"$(P)alldone_4") {
field(DESC,"8 motors done moving")
field(SCAN,"I/O Intr")
field(PINI,"YES")
field(INAN,"$(P)m25.DMOV")
field(INBN,"$(P)m26.DMOV")
field(INCN,"$(P)m27.DMOV")
field(INDN,"$(P)m28.DMOV")
field(INEN,"$(P)m29.DMOV")
field(INFN,"$(P)m30.DMOV")
field(INGN,"$(P)m31.DMOV")
field(INHN,"$(P)m32.DMOV")
field(CALC,"(a&b&c&d&e&f&g&h)=1")
field(OOPT,"Transition To Non-zero")
field(DOLD,"1")
}
grecord(swait,"$(P)alldoneBlink") {
field(SCAN,"I/O Intr")
field(INAN,"$(P)alldone")
field(INBN,"$(P)alldoneBlinker")
field(CALC,"a?0:b")
}
- References:
- stop all motors Kate Feng
- RE: stop all motors Mark Rivers
- Re: stop all motors Kate Feng
- RE: stop all motors Mark Rivers
- Navigate by Date:
- Prev:
RE: MAXvSetup is an undefined symbol Mark Rivers
- Next:
R3.14.10 bug in subRecord.c Andrew Johnson
- 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
2022
2023
2024
- Navigate by Thread:
- Prev:
RE: stop all motors Mark Rivers
- Next:
Re: stop all motors Kate Feng
- 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
2022
2023
2024
|