EPICS IOC 使用 SNCSEQ
IOC 配置SNCSEQ: 1 2 3 4 5 6 # example/configure/RELEASE.local EPICS_BASE = /path/to/your/build/of/epics-base SUPPORT = ${EPICS_BASE}/../epics-modules PVXS = ${SUPPORT}/pvxs # 添加 SNCSEQ SNCSEQ = ${SUPPORT}/sequencer example工程中相关的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 # example/iocExampleApp/src/Makefile ... # Link in the code from our support library iocExample_LIBS += iocExampleSupport # To build SNL programs, SNCSEQ must be defined # in the <top>/configure/RELEASE file ifneq ($(SNCSEQ),) # Build sncExample into iocExampleSupport sncExample_SNCFLAGS += +r iocExample_DBD += sncExample.dbd # A .stt sequence program is *not* pre-processed: iocExampleSupport_SRCS += sncExample.stt iocExampleSupport_LIBS += seq pv iocExample_LIBS += seq pv # Build sncProgram as a standalone program PROD_HOST += sncProgram sncProgram_SNCFLAGS += +m # A .st sequence program *is* pre-processed: sncProgram_SRCS += sncProgram.st sncProgram_LIBS += seq pv sncProgram_LIBS += $(EPICS_BASE_HOST_LIBS) endif ... 1 2 3 4 5 6 7 # sncExample.dbd # The name below is derived from the name of the SNL program # inside the source file, not from its filename. Here the # program is called sncExample, but is compiled in both the # sncExample.stt and sncProgram.st source files. registrar(sncExampleRegistrar) 1 2 3 # sncProgram.st #include "../sncExample.stt" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # sncExample.stt program sncExample double v; assign v to "{user}:aiExample"; monitor v; ss ss1 { state init { when (delay(10)) { printf("sncExample: Startup delay over\n"); } state low } state low { when (v > 5.0) { printf("sncExample: Changing to high\n"); } state high } state high { when (v <= 5.0) { printf("sncExample: Changing to low\n"); } state low } } 修改启动脚本,在IOC启动时运行SNL程序: ...