Skip to content
Snippets Groups Projects
Commit f25338c5 authored by vagrant's avatar vagrant
Browse files

Add PREC for plate power supply control

parent eac8de43
No related branches found
No related tags found
No related merge requests found
Showing
with 0 additions and 1216 deletions
emu_registerRecordDeviceDriver.o: emu_registerRecordDeviceDriver.cpp \
/opt/epics/bases/base-3.14.12.5/include/epicsStdlib.h \
/opt/epics/bases/base-3.14.12.5/include/shareLib.h \
/opt/epics/bases/base-3.14.12.5/include/os/Linux/osdStrtod.h \
/opt/epics/bases/base-3.14.12.5/include/iocsh.h \
/opt/epics/bases/base-3.14.12.5/include/shareLib.h \
/opt/epics/bases/base-3.14.12.5/include/registryCommon.h \
/opt/epics/bases/base-3.14.12.5/include/dbStaticLib.h \
/opt/epics/bases/base-3.14.12.5/include/dbFldTypes.h \
/opt/epics/bases/base-3.14.12.5/include/dbBase.h \
/opt/epics/bases/base-3.14.12.5/include/epicsTypes.h \
/opt/epics/bases/base-3.14.12.5/include/ellLib.h \
/opt/epics/bases/base-3.14.12.5/include/dbDefs.h \
/opt/epics/bases/base-3.14.12.5/include/link.h \
/opt/epics/bases/base-3.14.12.5/include/errMdef.h \
/opt/epics/bases/base-3.14.12.5/include/cantProceed.h \
/opt/epics/bases/base-3.14.12.5/include/registryRecordType.h \
/opt/epics/bases/base-3.14.12.5/include/recSup.h
File deleted
File deleted
function (FACTOR_CONVERSION)
function (ANGLE_CALCUL)
function (CREATE_TAB)
function (INIT_TAB)
function (CREATE_PROJXY)
function (CREATE_REPORT)
DEPENDENCIES_INCLUDES = -I/opt/epics/modules/scanning/2.0.5/3.15.2/include -I/opt/epics/modules/scanning/2.0.5/3.15.2/include/os/Linux -I/opt/epics/modules/scanning/2.0.5/3.15.2/include/os/default -I/opt/epics/modules/streamdevice/2.7.1/3.15.2/include -I/opt/epics/modules/streamdevice/2.7.1/3.15.2/include/os/Linux -I/opt/epics/modules/streamdevice/2.7.1/3.15.2/include/os/default -I/opt/epics/modules/asyn/4.27.0/3.15.2/include -I/opt/epics/modules/asyn/4.27.0/3.15.2/include/os/Linux -I/opt/epics/modules/asyn/4.27.0/3.15.2/include/os/default -I/opt/epics/modules/ecat2db/0.3.1/3.15.2/include -I/opt/epics/modules/ecat2db/0.3.1/3.15.2/include/os/Linux -I/opt/epics/modules/ecat2db/0.3.1/3.15.2/include/os/default -I/opt/epics/modules/sscan/2.10.1/3.15.2/include -I/opt/epics/modules/sscan/2.10.1/3.15.2/include/os/Linux -I/opt/epics/modules/sscan/2.10.1/3.15.2/include/os/default -I/opt/epics/modules/busy/1.6.0/3.15.2/include -I/opt/epics/modules/busy/1.6.0/3.15.2/include/os/Linux -I/opt/epics/modules/busy/1.6.0/3.15.2/include/os/default -I/opt/epics/modules/calc/3.6.1/3.15.2/include -I/opt/epics/modules/calc/3.6.1/3.15.2/include/os/Linux -I/opt/epics/modules/calc/3.6.1/3.15.2/include/os/default -I/opt/epics/modules/pcre/8.36.0/3.15.2/include -I/opt/epics/modules/pcre/8.36.0/3.15.2/include/os/Linux -I/opt/epics/modules/pcre/8.36.0/3.15.2/include/os/default -I/opt/epics/modules/seq/2.1.10/3.15.2/include -I/opt/epics/modules/seq/2.1.10/3.15.2/include/os/Linux -I/opt/epics/modules/seq/2.1.10/3.15.2/include/os/default -I/opt/epics/modules/dataacquisition/1.0.1/3.15.2/include -I/opt/epics/modules/dataacquisition/1.0.1/3.15.2/include/os/Linux -I/opt/epics/modules/dataacquisition/1.0.1/3.15.2/include/os/default -I/opt/epics/modules/fastacquisition/1.1.0/3.15.2/include -I/opt/epics/modules/fastacquisition/1.1.0/3.15.2/include/os/Linux -I/opt/epics/modules/fastacquisition/1.1.0/3.15.2/include/os/default
EMU_CALCULS.o: ../.././src/EMU_CALCULS.c \
/opt/epics/bases/base-3.15.2/include/aSubRecord.h \
/opt/epics/bases/base-3.15.2/include/epicsTypes.h \
/opt/epics/bases/base-3.15.2/include/shareLib.h \
/opt/epics/bases/base-3.15.2/include/compilerDependencies.h \
/opt/epics/bases/base-3.15.2/include/compiler/gcc/compilerSpecific.h \
/opt/epics/bases/base-3.15.2/include/link.h \
/opt/epics/bases/base-3.15.2/include/dbDefs.h \
/opt/epics/bases/base-3.15.2/include/epicsMutex.h \
/opt/epics/bases/base-3.15.2/include/epicsAssert.h \
/opt/epics/bases/base-3.15.2/include/os/Linux/osdMutex.h \
/opt/epics/bases/base-3.15.2/include/ellLib.h \
/opt/epics/bases/base-3.15.2/include/epicsTime.h \
/opt/epics/bases/base-3.15.2/include/os/Linux/osdTime.h \
/opt/epics/bases/base-3.15.2/include/registryFunction.h \
/opt/epics/bases/base-3.15.2/include/epicsExport.h \
/opt/epics/bases/base-3.15.2/include/shareLib.h
EMU_CALCULS.o: ../.././src/EMU_CALCULS.c /usr/include/stdc-predef.h \
/opt/epics/bases/base-3.15.2/include/aSubRecord.h \
/opt/epics/bases/base-3.15.2/include/epicsTypes.h \
/opt/epics/bases/base-3.15.2/include/shareLib.h \
/opt/epics/bases/base-3.15.2/include/compilerDependencies.h \
/opt/epics/bases/base-3.15.2/include/compiler/gcc/compilerSpecific.h \
/opt/epics/bases/base-3.15.2/include/link.h \
/opt/epics/bases/base-3.15.2/include/dbDefs.h \
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stddef.h \
/opt/epics/bases/base-3.15.2/include/epicsMutex.h \
/opt/epics/bases/base-3.15.2/include/epicsAssert.h \
/opt/epics/bases/base-3.15.2/include/os/Linux/osdMutex.h \
/opt/epics/bases/base-3.15.2/include/ellLib.h \
/opt/epics/bases/base-3.15.2/include/epicsTime.h /usr/include/time.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h /usr/include/bits/time.h \
/usr/include/bits/types.h /usr/include/bits/typesizes.h \
/usr/include/bits/timex.h /usr/include/xlocale.h \
/opt/epics/bases/base-3.15.2/include/os/Linux/osdTime.h \
/opt/epics/bases/base-3.15.2/include/registryFunction.h \
/opt/epics/bases/base-3.15.2/include/epicsExport.h \
/opt/epics/bases/base-3.15.2/include/shareLib.h /usr/include/math.h \
/usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \
/usr/include/bits/huge_vall.h /usr/include/bits/inf.h \
/usr/include/bits/nan.h /usr/include/bits/mathdef.h \
/usr/include/bits/mathcalls.h
File deleted
/* Generated with snc from EMU_MTR-CHECKBRAKE.i */
/* Program "checkMTRBrake" */
#include <string.h>
#include <stddef.h>
#include <stdio.h>
#include <limits.h>
#include "epicsTypes.h"
#include "seqCom.h"
/* Variable declarations */
# line 13 "../.././src/EMU_MTR-CHECKBRAKE.st"
static short ErrorBrakeMtrGet = 0;
# line 19 "../.././src/EMU_MTR-CHECKBRAKE.st"
static short statusMTRMov = 0;
# line 23 "../.././src/EMU_MTR-CHECKBRAKE.st"
static short ErrorBrakeMtrSet = 0;
# line 27 "../.././src/EMU_MTR-CHECKBRAKE.st"
static short brakeMtrCMD = 0;
# line 31 "../.././src/EMU_MTR-CHECKBRAKE.st"
static short brakeMtrGET = 0;
# line 37 "../.././src/EMU_MTR-CHECKBRAKE.st"
static short AbortscanMtrCMD = 0;
# line 41 "../.././src/EMU_MTR-CHECKBRAKE.st"
static short countErrors = 0;
/* C code definitions */
# line 8 "../.././src/EMU_MTR-CHECKBRAKE.st"
#include <stdio.h>
# line 9 "../.././src/EMU_MTR-CHECKBRAKE.st"
#include <string.h>
# line 10 "../.././src/EMU_MTR-CHECKBRAKE.st"
#include <stdlib.h>
/* Program init func */
static void G_prog_init(struct UserVar *pVar)
{
}
/****** Code for state "init" in state set "ss1" ******/
/* Delay function for state "init" in state set "ss1" */
static void D_ss1_0_init(SS_ID ssId, struct UserVar *pVar)
{
# line 46 "../.././src/EMU_MTR-CHECKBRAKE.st"
seq_delayInit(ssId, 0, (1.0));
}
/* Event function for state "init" in state set "ss1" */
static seqBool E_ss1_0_init(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
{
# line 46 "../.././src/EMU_MTR-CHECKBRAKE.st"
if (seq_delay(ssId, 0) && (seq_pvConnectCount(ssId) == seq_pvChannelCount(ssId)))
{
*pNextState = 1;
*pTransNum = 0;
return TRUE;
}
return FALSE;
}
/* Action function for state "init" in state set "ss1" */
static void A_ss1_0_init(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
{
switch(transNum)
{
case 0:
{
# line 48 "../.././src/EMU_MTR-CHECKBRAKE.st"
printf("\nWAIT\n");
# line 49 "../.././src/EMU_MTR-CHECKBRAKE.st"
ErrorBrakeMtrSet = 0;
# line 50 "../.././src/EMU_MTR-CHECKBRAKE.st"
seq_pvPut(ssId, 2/*ErrorBrakeMtrSet*/, 0);
}
return;
}
}
/****** Code for state "waiting" in state set "ss1" ******/
/* Delay function for state "waiting" in state set "ss1" */
static void D_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar)
{
# line 56 "../.././src/EMU_MTR-CHECKBRAKE.st"
seq_delayInit(ssId, 0, (0.1));
}
/* Event function for state "waiting" in state set "ss1" */
static seqBool E_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
{
# line 56 "../.././src/EMU_MTR-CHECKBRAKE.st"
if (seq_efTestAndClear(ssId, 1/*ErrorBrakeMtrEvent*/) && (ErrorBrakeMtrGet == 1) && (seq_delay(ssId, 0)))
{
*pNextState = 2;
*pTransNum = 0;
return TRUE;
}
return FALSE;
}
/* Action function for state "waiting" in state set "ss1" */
static void A_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
{
switch(transNum)
{
case 0:
{
# line 58 "../.././src/EMU_MTR-CHECKBRAKE.st"
printf("\nERRROR CURRENT : BRAKE OFF \n");
# line 59 "../.././src/EMU_MTR-CHECKBRAKE.st"
brakeMtrCMD = 1;
# line 60 "../.././src/EMU_MTR-CHECKBRAKE.st"
seq_pvPut(ssId, 3/*brakeMtrCMD*/, 0);
# line 61 "../.././src/EMU_MTR-CHECKBRAKE.st"
seq_delay(ssId, 0);
# line 62 "../.././src/EMU_MTR-CHECKBRAKE.st"
ErrorBrakeMtrSet = 0;
# line 63 "../.././src/EMU_MTR-CHECKBRAKE.st"
seq_pvPut(ssId, 2/*ErrorBrakeMtrSet*/, 0);
}
return;
}
}
/****** Code for state "count" in state set "ss1" ******/
/* Delay function for state "count" in state set "ss1" */
static void D_ss1_0_count(SS_ID ssId, struct UserVar *pVar)
{
# line 74 "../.././src/EMU_MTR-CHECKBRAKE.st"
seq_delayInit(ssId, 0, (1.0));
# line 80 "../.././src/EMU_MTR-CHECKBRAKE.st"
seq_delayInit(ssId, 1, (1.0));
}
/* Event function for state "count" in state set "ss1" */
static seqBool E_ss1_0_count(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
{
# line 69 "../.././src/EMU_MTR-CHECKBRAKE.st"
if (countErrors > 3)
{
*pNextState = 3;
*pTransNum = 0;
return TRUE;
}
# line 74 "../.././src/EMU_MTR-CHECKBRAKE.st"
if ((seq_delay(ssId, 0)) && (statusMTRMov == 1))
{
*pNextState = 1;
*pTransNum = 1;
return TRUE;
}
# line 80 "../.././src/EMU_MTR-CHECKBRAKE.st"
if ((seq_delay(ssId, 1)) && (statusMTRMov == 0))
{
*pNextState = 1;
*pTransNum = 2;
return TRUE;
}
return FALSE;
}
/* Action function for state "count" in state set "ss1" */
static void A_ss1_0_count(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
{
switch(transNum)
{
case 0:
{
# line 71 "../.././src/EMU_MTR-CHECKBRAKE.st"
printf("\nERRROR CURRENT : STOP MEASURE \n");
}
return;
case 1:
{
# line 76 "../.././src/EMU_MTR-CHECKBRAKE.st"
printf("\nERRROR CURRENT : PROBLEM SOLVED \n");
# line 77 "../.././src/EMU_MTR-CHECKBRAKE.st"
countErrors = 0;
}
return;
case 2:
{
# line 82 "../.././src/EMU_MTR-CHECKBRAKE.st"
countErrors = countErrors + 1;
}
return;
}
}
/****** Code for state "stopMeasure" in state set "ss1" ******/
/* Delay function for state "stopMeasure" in state set "ss1" */
static void D_ss1_0_stopMeasure(SS_ID ssId, struct UserVar *pVar)
{
# line 89 "../.././src/EMU_MTR-CHECKBRAKE.st"
seq_delayInit(ssId, 0, (1.0));
}
/* Event function for state "stopMeasure" in state set "ss1" */
static seqBool E_ss1_0_stopMeasure(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
{
# line 89 "../.././src/EMU_MTR-CHECKBRAKE.st"
if (seq_delay(ssId, 0))
{
*pNextState = 1;
*pTransNum = 0;
return TRUE;
}
return FALSE;
}
/* Action function for state "stopMeasure" in state set "ss1" */
static void A_ss1_0_stopMeasure(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
{
switch(transNum)
{
case 0:
{
# line 90 "../.././src/EMU_MTR-CHECKBRAKE.st"
printf("\n ABORT\n");
# line 91 "../.././src/EMU_MTR-CHECKBRAKE.st"
AbortscanMtrCMD = 1;
# line 92 "../.././src/EMU_MTR-CHECKBRAKE.st"
seq_pvPut(ssId, 5/*AbortscanMtrCMD*/, 0);
# line 93 "../.././src/EMU_MTR-CHECKBRAKE.st"
countErrors = 0;
}
return;
}
}
/************************ Tables ************************/
/* Channel table */
static seqChan G_channels[] = {
/* chName, offset, varName, varType, count, eventNum, efId, monitored, queueSize, queueIndex */
{"{PREFIX}:PBI-EM:CURRENT_ERR_GET", (size_t)&ErrorBrakeMtrGet, "ErrorBrakeMtrGet", "short", 1, 3, 1, 1, 0, 0},
{"{PMACPREFIX}:{MOTOR_NAME1}.MOVN", (size_t)&statusMTRMov, "statusMTRMov", "short", 1, 4, 0, 1, 0, 0},
{"{PREFIX}:PBI-EM:CURRENT_ERR_SET", (size_t)&ErrorBrakeMtrSet, "ErrorBrakeMtrSet", "short", 1, 5, 0, 1, 0, 0},
{"{PREFIX}:PBI-EM:VER-BRAKE_SET", (size_t)&brakeMtrCMD, "brakeMtrCMD", "short", 1, 6, 0, 1, 0, 0},
{"{PREFIX}:PBI-EM:VER-BRAKE_GET", (size_t)&brakeMtrGET, "brakeMtrGET", "short", 1, 7, 2, 1, 0, 0},
{"{DEVICE}:MTR-ABORT.PROC", (size_t)&AbortscanMtrCMD, "AbortscanMtrCMD", "short", 1, 8, 0, 1, 0, 0}
};
/* Event masks for state set "ss1" */
static const seqMask EM_ss1_0_init[] = {
0x00000000,
};
static const seqMask EM_ss1_0_waiting[] = {
0x0000000a,
};
static const seqMask EM_ss1_0_count[] = {
0x00000010,
};
static const seqMask EM_ss1_0_stopMeasure[] = {
0x00000000,
};
/* State table for state set "ss1" */
static seqState G_ss1_states[] = {
{
/* state name */ "init",
/* action function */ A_ss1_0_init,
/* event function */ E_ss1_0_init,
/* delay function */ D_ss1_0_init,
/* entry function */ 0,
/* exit function */ 0,
/* event mask array */ EM_ss1_0_init,
/* state options */ (0)
},
{
/* state name */ "waiting",
/* action function */ A_ss1_0_waiting,
/* event function */ E_ss1_0_waiting,
/* delay function */ D_ss1_0_waiting,
/* entry function */ 0,
/* exit function */ 0,
/* event mask array */ EM_ss1_0_waiting,
/* state options */ (0)
},
{
/* state name */ "count",
/* action function */ A_ss1_0_count,
/* event function */ E_ss1_0_count,
/* delay function */ D_ss1_0_count,
/* entry function */ 0,
/* exit function */ 0,
/* event mask array */ EM_ss1_0_count,
/* state options */ (0)
},
{
/* state name */ "stopMeasure",
/* action function */ A_ss1_0_stopMeasure,
/* event function */ E_ss1_0_stopMeasure,
/* delay function */ D_ss1_0_stopMeasure,
/* entry function */ 0,
/* exit function */ 0,
/* event mask array */ EM_ss1_0_stopMeasure,
/* state options */ (0)
},
};
/* State set table */
static seqSS G_state_sets[] = {
{
/* state set name */ "ss1",
/* states */ G_ss1_states,
/* number of states */ 4,
/* number of delays */ 2
},
};
/* Program table (global) */
seqProgram checkMTRBrake = {
/* magic number */ 2001010,
/* program name */ "checkMTRBrake",
/* channels */ G_channels,
/* num. channels */ 6,
/* state sets */ G_state_sets,
/* num. state sets */ 1,
/* user var size */ 0,
/* param */ "",
/* num. event flags */ 2,
/* encoded options */ (0 | OPT_CONN | OPT_NEWEF),
/* init func */ G_prog_init,
/* entry func */ NULL,
/* exit func */ NULL,
/* num. queues */ 0
};
/* Register sequencer commands and program */
#include "epicsExport.h"
static void checkMTRBrakeRegistrar (void) {
seqRegisterSequencerCommands();
seqRegisterSequencerProgram (&checkMTRBrake);
}
epicsExportRegistrar(checkMTRBrakeRegistrar);
EMU_MTR-CHECKBRAKE.o: EMU_MTR-CHECKBRAKE.c \
/opt/epics/bases/base-3.15.2/include/epicsTypes.h \
/opt/epics/bases/base-3.15.2/include/shareLib.h \
/opt/epics/bases/base-3.15.2/include/compilerDependencies.h \
/opt/epics/bases/base-3.15.2/include/compiler/gcc/compilerSpecific.h \
/opt/epics/modules/seq/2.1.10/3.15.2/include/seqCom.h \
/opt/epics/bases/base-3.15.2/include/shareLib.h \
/opt/epics/modules/seq/2.1.10/3.15.2/include/pvAlarm.h \
/opt/epics/modules/seq/2.1.10/3.15.2/include/pvType.h \
/opt/epics/bases/base-3.15.2/include/epicsTime.h \
/opt/epics/bases/base-3.15.2/include/epicsTypes.h \
/opt/epics/bases/base-3.15.2/include/os/Linux/osdTime.h \
/opt/epics/bases/base-3.15.2/include/epicsThread.h \
/opt/epics/bases/base-3.15.2/include/os/Linux/osdThread.h \
/opt/epics/bases/base-3.15.2/include/ellLib.h \
/opt/epics/bases/base-3.15.2/include/epicsEvent.h \
/opt/epics/bases/base-3.15.2/include/os/Linux/osdEvent.h \
/opt/epics/modules/seq/2.1.10/3.15.2/include/seq_release.h \
/opt/epics/bases/base-3.15.2/include/epicsExport.h
EMU_MTR-CHECKBRAKE.o: EMU_MTR-CHECKBRAKE.c /usr/include/stdc-predef.h \
/usr/include/string.h /usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stddef.h \
/usr/include/xlocale.h /usr/include/stdio.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/limits.h \
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/opt/epics/bases/base-3.15.2/include/epicsTypes.h \
/opt/epics/bases/base-3.15.2/include/shareLib.h \
/opt/epics/bases/base-3.15.2/include/compilerDependencies.h \
/opt/epics/bases/base-3.15.2/include/compiler/gcc/compilerSpecific.h \
seqCom.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/byteswap.h \
/usr/include/bits/byteswap-16.h /usr/include/sys/types.h \
/usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib-float.h \
/opt/epics/bases/base-3.15.2/include/epicsExport.h \
/opt/epics/bases/base-3.15.2/include/shareLib.h
# 1 "../.././src/EMU_MTR-CHECKBRAKE.st"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "../.././src/EMU_MTR-CHECKBRAKE.st"
program checkMTRBrake
%%#include <stdio.h>
%%#include <string.h>
%%#include <stdlib.h>
short ErrorBrakeMtrGet;
assign ErrorBrakeMtrGet to "{PREFIX}:PBI-EM:CURRENT_ERR_GET";
monitor ErrorBrakeMtrGet;
evflag ErrorBrakeMtrEvent;
sync ErrorBrakeMtrGet ErrorBrakeMtrEvent;
short statusMTRMov;
assign statusMTRMov to "{PMACPREFIX}:{MOTOR_NAME1}.MOVN";
monitor statusMTRMov;
short ErrorBrakeMtrSet;
assign ErrorBrakeMtrSet to "{PREFIX}:PBI-EM:CURRENT_ERR_SET";
monitor ErrorBrakeMtrSet;
short brakeMtrCMD;
assign brakeMtrCMD to "{PREFIX}:PBI-EM:VER-BRAKE_SET";
monitor brakeMtrCMD;
short brakeMtrGET;
assign brakeMtrGET to "{PREFIX}:PBI-EM:VER-BRAKE_GET";
monitor brakeMtrGET;
evflag brakeMtrGETEvent;
sync brakeMtrGET brakeMtrGETEvent;
short AbortscanMtrCMD;
assign AbortscanMtrCMD to "{DEVICE}:MTR-ABORT.PROC";
monitor AbortscanMtrCMD;
short countErrors=0;
ss ss1
{
state init {
when (delay(1.0) && (pvConnectCount() == pvChannelCount()))
{
printf("\nWAIT\n");
ErrorBrakeMtrSet=0;
pvPut(ErrorBrakeMtrSet);
} state waiting
}
state waiting
{
when(efTestAndClear(ErrorBrakeMtrEvent)&&(ErrorBrakeMtrGet==1)&&(delay(0.1)))
{
printf("\nERRROR CURRENT : BRAKE OFF \n");
brakeMtrCMD=1;
pvPut(brakeMtrCMD);
delay(1);
ErrorBrakeMtrSet=0;
pvPut(ErrorBrakeMtrSet);
}state count
}
state count
{
when(countErrors>3)
{
printf("\nERRROR CURRENT : STOP MEASURE \n");
}state stopMeasure
when((delay(1.0)) && (statusMTRMov==1))
{
printf("\nERRROR CURRENT : PROBLEM SOLVED \n");
countErrors=0;
}state waiting
when((delay(1.0)) && (statusMTRMov==0))
{
countErrors=countErrors+1;
}state waiting
}
state stopMeasure
{
when(delay(1.0)){
printf("\n ABORT\n");
AbortscanMtrCMD=1;
pvPut(AbortscanMtrCMD);
countErrors=0;
}state waiting
}
}
File deleted
registrar (checkMTRBrakeRegistrar)
/* Generated with snc from EMU_MTR-HOME_AUTO.i */
/* Program "homeMtrAuto" */
#include <string.h>
#include <stddef.h>
#include <stdio.h>
#include <limits.h>
#include "epicsTypes.h"
#include "seqCom.h"
/* Variable declarations */
# line 13 "../.././src/EMU_MTR-HOME_AUTO.st"
static short ARCHIVING = 0;
# line 18 "../.././src/EMU_MTR-HOME_AUTO.st"
static short HOMCPTFLAG = 0;
# line 22 "../.././src/EMU_MTR-HOME_AUTO.st"
static short statusMTRMov = 0;
# line 26 "../.././src/EMU_MTR-HOME_AUTO.st"
static short mtrPlaced = 0;
# line 32 "../.././src/EMU_MTR-HOME_AUTO.st"
static short mtrStop = 0;
# line 36 "../.././src/EMU_MTR-HOME_AUTO.st"
static short homeCMD = 0;
# line 40 "../.././src/EMU_MTR-HOME_AUTO.st"
static short mtrPosCons = 0;
# line 44 "../.././src/EMU_MTR-HOME_AUTO.st"
static short brakeMtrCMD = 0;
# line 48 "../.././src/EMU_MTR-HOME_AUTO.st"
static short brakeMtrGET = 0;
# line 55 "../.././src/EMU_MTR-HOME_AUTO.st"
static short scanPS_Sts = 0;
# line 60 "../.././src/EMU_MTR-HOME_AUTO.st"
static short scanMTR_Sts = 0;
# line 66 "../.././src/EMU_MTR-HOME_AUTO.st"
static short homeSTART = 0;
# line 73 "../.././src/EMU_MTR-HOME_AUTO.st"
static short plimSTATUS = 0;
/* C code definitions */
# line 8 "../.././src/EMU_MTR-HOME_AUTO.st"
#include <stdio.h>
# line 9 "../.././src/EMU_MTR-HOME_AUTO.st"
#include <string.h>
# line 10 "../.././src/EMU_MTR-HOME_AUTO.st"
#include <stdlib.h>
/* Program init func */
static void G_prog_init(struct UserVar *pVar)
{
}
/****** Code for state "init" in state set "ss1" ******/
/* Delay function for state "init" in state set "ss1" */
static void D_ss1_0_init(SS_ID ssId, struct UserVar *pVar)
{
# line 82 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_delayInit(ssId, 0, (1.0));
}
/* Event function for state "init" in state set "ss1" */
static seqBool E_ss1_0_init(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
{
# line 82 "../.././src/EMU_MTR-HOME_AUTO.st"
if (seq_delay(ssId, 0) && (seq_pvConnectCount(ssId) == seq_pvChannelCount(ssId)))
{
*pNextState = 1;
*pTransNum = 0;
return TRUE;
}
return FALSE;
}
/* Action function for state "init" in state set "ss1" */
static void A_ss1_0_init(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
{
switch(transNum)
{
case 0:
{
# line 84 "../.././src/EMU_MTR-HOME_AUTO.st"
homeSTART = 0;
# line 85 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_pvPut(ssId, 11/*homeSTART*/, 0);
# line 86 "../.././src/EMU_MTR-HOME_AUTO.st"
printf("\nWAIT\n");
}
return;
}
}
/****** Code for state "waiting" in state set "ss1" ******/
/* Delay function for state "waiting" in state set "ss1" */
static void D_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar)
{
}
/* Event function for state "waiting" in state set "ss1" */
static seqBool E_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
{
# line 92 "../.././src/EMU_MTR-HOME_AUTO.st"
if (seq_efTestAndClear(ssId, 3/*homeSTARTEvent*/) && (homeSTART == 1) && (plimSTATUS == 0))
{
*pNextState = 2;
*pTransNum = 0;
return TRUE;
}
return FALSE;
}
/* Action function for state "waiting" in state set "ss1" */
static void A_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
{
switch(transNum)
{
case 0:
{
# line 94 "../.././src/EMU_MTR-HOME_AUTO.st"
printf("\nSTART HOME PROCEDURE\n");
}
return;
}
}
/****** Code for state "startHOME" in state set "ss1" ******/
/* Delay function for state "startHOME" in state set "ss1" */
static void D_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar)
{
# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_delayInit(ssId, 0, (1.0));
}
/* Event function for state "startHOME" in state set "ss1" */
static seqBool E_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
{
# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
if ((scanPS_Sts == 0) && (scanMTR_Sts == 0) && (statusMTRMov == 0) && (seq_delay(ssId, 0)))
{
*pNextState = 3;
*pTransNum = 0;
return TRUE;
}
return FALSE;
}
/* Action function for state "startHOME" in state set "ss1" */
static void A_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
{
switch(transNum)
{
case 0:
{
# line 102 "../.././src/EMU_MTR-HOME_AUTO.st"
printf("\n GO HOME\n");
# line 103 "../.././src/EMU_MTR-HOME_AUTO.st"
brakeMtrCMD = 1;
# line 104 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_pvPut(ssId, 7/*brakeMtrCMD*/, 0);
# line 105 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_delay(ssId, 0);
# line 106 "../.././src/EMU_MTR-HOME_AUTO.st"
HOMCPTFLAG = 1;
# line 107 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
# line 108 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_delay(ssId, 0);
# line 109 "../.././src/EMU_MTR-HOME_AUTO.st"
homeCMD = 1;
# line 110 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_pvPut(ssId, 5/*homeCMD*/, 0);
}
return;
}
}
/****** Code for state "limitON" in state set "ss1" ******/
/* Delay function for state "limitON" in state set "ss1" */
static void D_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar)
{
}
/* Event function for state "limitON" in state set "ss1" */
static seqBool E_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
{
# line 116 "../.././src/EMU_MTR-HOME_AUTO.st"
if (seq_efTestAndClear(ssId, 4/*plimSTATUSEvent*/) && (plimSTATUS == 1))
{
*pNextState = 4;
*pTransNum = 0;
return TRUE;
}
return FALSE;
}
/* Action function for state "limitON" in state set "ss1" */
static void A_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
{
switch(transNum)
{
case 0:
{
# line 118 "../.././src/EMU_MTR-HOME_AUTO.st"
printf("\nLIMIT HIGH\n");
# line 119 "../.././src/EMU_MTR-HOME_AUTO.st"
HOMCPTFLAG = 0;
# line 120 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
}
return;
}
}
/****** Code for state "breakON" in state set "ss1" ******/
/* Delay function for state "breakON" in state set "ss1" */
static void D_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar)
{
# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_delayInit(ssId, 0, (1.0));
}
/* Event function for state "breakON" in state set "ss1" */
static seqBool E_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
{
# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
if (seq_delay(ssId, 0))
{
*pNextState = 5;
*pTransNum = 0;
return TRUE;
}
return FALSE;
}
/* Action function for state "breakON" in state set "ss1" */
static void A_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
{
switch(transNum)
{
case 0:
{
# line 128 "../.././src/EMU_MTR-HOME_AUTO.st"
printf("\nINIT POSITION\n");
# line 129 "../.././src/EMU_MTR-HOME_AUTO.st"
HOMCPTFLAG = 0;
# line 130 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
# line 131 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_delay(ssId, 0);
# line 132 "../.././src/EMU_MTR-HOME_AUTO.st"
printf("\nBRAKE ON\n");
# line 133 "../.././src/EMU_MTR-HOME_AUTO.st"
homeCMD = 1;
# line 134 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_pvPut(ssId, 5/*homeCMD*/, 0);
# line 135 "../.././src/EMU_MTR-HOME_AUTO.st"
homeSTART = 0;
# line 136 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_pvPut(ssId, 11/*homeSTART*/, 0);
# line 137 "../.././src/EMU_MTR-HOME_AUTO.st"
brakeMtrCMD = 0;
# line 138 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_pvPut(ssId, 7/*brakeMtrCMD*/, 0);
}
return;
}
}
/****** Code for state "stopArchiving" in state set "ss1" ******/
/* Delay function for state "stopArchiving" in state set "ss1" */
static void D_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar)
{
# line 144 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_delayInit(ssId, 0, (1.0));
}
/* Event function for state "stopArchiving" in state set "ss1" */
static seqBool E_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
{
# line 144 "../.././src/EMU_MTR-HOME_AUTO.st"
if (seq_delay(ssId, 0))
{
*pNextState = 0;
*pTransNum = 0;
return TRUE;
}
return FALSE;
}
/* Action function for state "stopArchiving" in state set "ss1" */
static void A_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
{
switch(transNum)
{
case 0:
{
# line 146 "../.././src/EMU_MTR-HOME_AUTO.st"
printf("\nStop Archiving\n");
# line 147 "../.././src/EMU_MTR-HOME_AUTO.st"
ARCHIVING = 0;
# line 148 "../.././src/EMU_MTR-HOME_AUTO.st"
seq_pvPut(ssId, 0/*ARCHIVING*/, 0);
}
return;
}
}
/************************ Tables ************************/
/* Channel table */
static seqChan G_channels[] = {
/* chName, offset, varName, varType, count, eventNum, efId, monitored, queueSize, queueIndex */
{"LNS-ISRC-010:PBI-EM:Archive", (size_t)&ARCHIVING, "ARCHIVING", "short", 1, 5, 0, 1, 0, 0},
{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG", (size_t)&HOMCPTFLAG, "HOMCPTFLAG", "short", 1, 6, 0, 1, 0, 0},
{"{PMACPREFIX}:{MOTOR_NAME1}.MOVN", (size_t)&statusMTRMov, "statusMTRMov", "short", 1, 7, 0, 1, 0, 0},
{"{PMACPREFIX}:{MOTOR_NAME1}-AXISSTS", (size_t)&mtrPlaced, "mtrPlaced", "short", 1, 8, 1, 1, 0, 0},
{"{PMACPREFIX}:{MOTOR_NAME1}.SPMG", (size_t)&mtrStop, "mtrStop", "short", 1, 9, 0, 1, 0, 0},
{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCMD", (size_t)&homeCMD, "homeCMD", "short", 1, 10, 0, 1, 0, 0},
{"{PMACPREFIX}:{MOTOR_NAME1}", (size_t)&mtrPosCons, "mtrPosCons", "short", 1, 11, 0, 1, 0, 0},
{"{PREFIX}:PBI-EM:VER-BRAKE_SET", (size_t)&brakeMtrCMD, "brakeMtrCMD", "short", 1, 12, 0, 1, 0, 0},
{"{PREFIX}:PBI-EM:VER-BRAKE_GET", (size_t)&brakeMtrGET, "brakeMtrGET", "short", 1, 13, 2, 1, 0, 0},
{"{DEVICE}:PS.BUSY", (size_t)&scanPS_Sts, "scanPS_Sts", "short", 1, 14, 0, 1, 0, 0},
{"{DEVICE}:MTR.BUSY", (size_t)&scanMTR_Sts, "scanMTR_Sts", "short", 1, 15, 0, 1, 0, 0},
{"{DEVICE}:PROC-AUTO-HOME", (size_t)&homeSTART, "homeSTART", "short", 1, 16, 3, 1, 0, 0},
{"{PMACPREFIX}:{MOTOR_NAME1}-PENDLSTS", (size_t)&plimSTATUS, "plimSTATUS", "short", 1, 17, 4, 1, 0, 0}
};
/* Event masks for state set "ss1" */
static const seqMask EM_ss1_0_init[] = {
0x00000000,
};
static const seqMask EM_ss1_0_waiting[] = {
0x00030008,
};
static const seqMask EM_ss1_0_startHOME[] = {
0x0000c080,
};
static const seqMask EM_ss1_0_limitON[] = {
0x00020010,
};
static const seqMask EM_ss1_0_breakON[] = {
0x00000000,
};
static const seqMask EM_ss1_0_stopArchiving[] = {
0x00000000,
};
/* State table for state set "ss1" */
static seqState G_ss1_states[] = {
{
/* state name */ "init",
/* action function */ A_ss1_0_init,
/* event function */ E_ss1_0_init,
/* delay function */ D_ss1_0_init,
/* entry function */ 0,
/* exit function */ 0,
/* event mask array */ EM_ss1_0_init,
/* state options */ (0)
},
{
/* state name */ "waiting",
/* action function */ A_ss1_0_waiting,
/* event function */ E_ss1_0_waiting,
/* delay function */ D_ss1_0_waiting,
/* entry function */ 0,
/* exit function */ 0,
/* event mask array */ EM_ss1_0_waiting,
/* state options */ (0)
},
{
/* state name */ "startHOME",
/* action function */ A_ss1_0_startHOME,
/* event function */ E_ss1_0_startHOME,
/* delay function */ D_ss1_0_startHOME,
/* entry function */ 0,
/* exit function */ 0,
/* event mask array */ EM_ss1_0_startHOME,
/* state options */ (0)
},
{
/* state name */ "limitON",
/* action function */ A_ss1_0_limitON,
/* event function */ E_ss1_0_limitON,
/* delay function */ D_ss1_0_limitON,
/* entry function */ 0,
/* exit function */ 0,
/* event mask array */ EM_ss1_0_limitON,
/* state options */ (0)
},
{
/* state name */ "breakON",
/* action function */ A_ss1_0_breakON,
/* event function */ E_ss1_0_breakON,
/* delay function */ D_ss1_0_breakON,
/* entry function */ 0,
/* exit function */ 0,
/* event mask array */ EM_ss1_0_breakON,
/* state options */ (0)
},
{
/* state name */ "stopArchiving",
/* action function */ A_ss1_0_stopArchiving,
/* event function */ E_ss1_0_stopArchiving,
/* delay function */ D_ss1_0_stopArchiving,
/* entry function */ 0,
/* exit function */ 0,
/* event mask array */ EM_ss1_0_stopArchiving,
/* state options */ (0)
},
};
/* State set table */
static seqSS G_state_sets[] = {
{
/* state set name */ "ss1",
/* states */ G_ss1_states,
/* number of states */ 6,
/* number of delays */ 1
},
};
/* Program table (global) */
seqProgram homeMtrAuto = {
/* magic number */ 2001010,
/* program name */ "homeMtrAuto",
/* channels */ G_channels,
/* num. channels */ 13,
/* state sets */ G_state_sets,
/* num. state sets */ 1,
/* user var size */ 0,
/* param */ "",
/* num. event flags */ 4,
/* encoded options */ (0 | OPT_CONN | OPT_NEWEF),
/* init func */ G_prog_init,
/* entry func */ NULL,
/* exit func */ NULL,
/* num. queues */ 0
};
/* Register sequencer commands and program */
#include "epicsExport.h"
static void homeMtrAutoRegistrar (void) {
seqRegisterSequencerCommands();
seqRegisterSequencerProgram (&homeMtrAuto);
}
epicsExportRegistrar(homeMtrAutoRegistrar);
EMU_MTR-HOME_AUTO.o: EMU_MTR-HOME_AUTO.c \
/opt/epics/bases/base-3.15.2/include/epicsTypes.h \
/opt/epics/bases/base-3.15.2/include/shareLib.h \
/opt/epics/bases/base-3.15.2/include/compilerDependencies.h \
/opt/epics/bases/base-3.15.2/include/compiler/gcc/compilerSpecific.h \
/opt/epics/modules/seq/2.1.10/3.15.2/include/seqCom.h \
/opt/epics/bases/base-3.15.2/include/shareLib.h \
/opt/epics/modules/seq/2.1.10/3.15.2/include/pvAlarm.h \
/opt/epics/modules/seq/2.1.10/3.15.2/include/pvType.h \
/opt/epics/bases/base-3.15.2/include/epicsTime.h \
/opt/epics/bases/base-3.15.2/include/epicsTypes.h \
/opt/epics/bases/base-3.15.2/include/os/Linux/osdTime.h \
/opt/epics/bases/base-3.15.2/include/epicsThread.h \
/opt/epics/bases/base-3.15.2/include/os/Linux/osdThread.h \
/opt/epics/bases/base-3.15.2/include/ellLib.h \
/opt/epics/bases/base-3.15.2/include/epicsEvent.h \
/opt/epics/bases/base-3.15.2/include/os/Linux/osdEvent.h \
/opt/epics/modules/seq/2.1.10/3.15.2/include/seq_release.h \
/opt/epics/bases/base-3.15.2/include/epicsExport.h
EMU_MTR-HOME_AUTO.o: EMU_MTR-HOME_AUTO.c /usr/include/stdc-predef.h \
/usr/include/string.h /usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stddef.h \
/usr/include/xlocale.h /usr/include/stdio.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/limits.h \
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/opt/epics/bases/base-3.15.2/include/epicsTypes.h \
/opt/epics/bases/base-3.15.2/include/shareLib.h \
/opt/epics/bases/base-3.15.2/include/compilerDependencies.h \
/opt/epics/bases/base-3.15.2/include/compiler/gcc/compilerSpecific.h \
seqCom.h /usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/byteswap.h \
/usr/include/bits/byteswap-16.h /usr/include/sys/types.h \
/usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib-float.h \
/opt/epics/bases/base-3.15.2/include/epicsExport.h \
/opt/epics/bases/base-3.15.2/include/shareLib.h
# 1 "../.././src/EMU_MTR-HOME_AUTO.st"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "../.././src/EMU_MTR-HOME_AUTO.st"
program homeMtrAuto
%%#include <stdio.h>
%%#include <string.h>
%%#include <stdlib.h>
short ARCHIVING;
assign ARCHIVING to "LNS-ISRC-010:PBI-EM:Archive";
monitor ARCHIVING;
short HOMCPTFLAG;
assign HOMCPTFLAG to "{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG";
monitor HOMCPTFLAG;
short statusMTRMov;
assign statusMTRMov to "{PMACPREFIX}:{MOTOR_NAME1}.MOVN";
monitor statusMTRMov;
short mtrPlaced;
assign mtrPlaced to "{PMACPREFIX}:{MOTOR_NAME1}-AXISSTS";
monitor mtrPlaced;
evflag mtrPlacedEvent;
sync mtrPlaced mtrPlacedEvent;
short mtrStop;
assign mtrStop to "{PMACPREFIX}:{MOTOR_NAME1}.SPMG";
monitor mtrStop;
short homeCMD;
assign homeCMD to "{PMACPREFIX}:{MOTOR_NAME1}-HOMCMD";
monitor homeCMD;
short mtrPosCons;
assign mtrPosCons to "{PMACPREFIX}:{MOTOR_NAME1}";
monitor mtrPosCons;
short brakeMtrCMD;
assign brakeMtrCMD to "{PREFIX}:PBI-EM:VER-BRAKE_SET";
monitor brakeMtrCMD;
short brakeMtrGET;
assign brakeMtrGET to "{PREFIX}:PBI-EM:VER-BRAKE_GET";
monitor brakeMtrGET;
evflag brakeMtrGETEvent;
sync brakeMtrGET brakeMtrGETEvent;
short scanPS_Sts;
assign scanPS_Sts to "{DEVICE}:PS.BUSY";
monitor scanPS_Sts;
short scanMTR_Sts;
assign scanMTR_Sts to "{DEVICE}:MTR.BUSY";
monitor scanMTR_Sts;
short homeSTART;
assign homeSTART to "{DEVICE}:PROC-AUTO-HOME";
monitor homeSTART;
evflag homeSTARTEvent;
sync homeSTART homeSTARTEvent;
short plimSTATUS;
assign plimSTATUS to "{PMACPREFIX}:{MOTOR_NAME1}-PENDLSTS";
monitor plimSTATUS;
evflag plimSTATUSEvent;
sync plimSTATUS plimSTATUSEvent;
ss ss1
{
state init {
when (delay(1.0) && (pvConnectCount() == pvChannelCount()))
{
homeSTART=0;
pvPut(homeSTART);
printf("\nWAIT\n");
} state waiting
}
state waiting
{
when(efTestAndClear(homeSTARTEvent)&&(homeSTART==1)&&(plimSTATUS==0))
{
printf("\nSTART HOME PROCEDURE\n");
}state startHOME
}
state startHOME
{
when((scanPS_Sts==0) && (scanMTR_Sts==0) && (statusMTRMov==0) && (delay(1.0))){
printf("\n GO HOME\n");
brakeMtrCMD=1;
pvPut(brakeMtrCMD);
delay(1);
HOMCPTFLAG=1;
pvPut(HOMCPTFLAG);
delay(1);
homeCMD=1;
pvPut(homeCMD);
}state limitON
}
state limitON
{
when(efTestAndClear(plimSTATUSEvent)&&(plimSTATUS==1))
{
printf("\nLIMIT HIGH\n");
HOMCPTFLAG=0;
pvPut(HOMCPTFLAG);
}state breakON
}
state breakON
{
when(delay(1.0))
{
printf("\nINIT POSITION\n");
HOMCPTFLAG=0;
pvPut(HOMCPTFLAG);
delay(1);
printf("\nBRAKE ON\n");
homeCMD=1;
pvPut(homeCMD);
homeSTART=0;
pvPut(homeSTART);
brakeMtrCMD=0;
pvPut(brakeMtrCMD);
}state stopArchiving
}
state stopArchiving
{
when(delay(1.0))
{
printf("\nStop Archiving\n");
ARCHIVING=0;
pvPut(ARCHIVING);
}state init
}
}
File deleted
registrar (homeMtrAutoRegistrar)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment