EPICS DataBase详解

本文围绕分布式EPICS设置展开,介绍了IOC及其数据库,以基本温度控制为例说明应用。详细阐述了数据库的构成,包括记录、字段和链接,还讲解了记录扫描、链接类型、运行链等内容,涉及设备支持、同步异步、警报等方面,并给出记录使用小提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、分布式EPICS设置

1) 操作界面:包括shell命令行方式(caget, caput, camonitor等)和图形界面方式(medm, edm, css等)。

2)输入输出控制器(IOC)

2、IOC

1) 数据库:数据流,基本上周期运行

2)sequencer:基本上按需的状态机

"硬"IOCs运行vxWorks并且直接连接了A/D, D/A, LLRF等硬件。

"软"IOCs运行在linux等上并且除了串口或网络设备外没有I/O硬件。

3、IOC数据库

1)'IOCcore'软件装载并且执行'记录(records)'-记录配置替代了编写自定义代码。

2)所有控制系统控制箱有:GUI工具; 网络协议;硬件驱动,但基本上没有一个相当的数据库。

4、示例:基本的温度控制

任务:

1)从设备读取温度

2)根据需要接通/断开开关

3)重复

一个温控数据库:

使用VisualDCT设计的由四个记录组成的数据库:

1)模拟输入记录(ai:$(TANK)TEMPERATURE)从设备读取温度值,并且把温度值写入到calcout($(TANK)CHECK)记录。

2)calcout($(TANK)CHECK)记录是通过通道访问从$(TANK)TEMPERATURE获取当前温度和通过数据库访问从模拟输入记录ai($(TANK)SETPOINT)获取了设定温度,并且把二者进行比较,并且把比较结果写入到二进制输出记录bo($(TANK)SWITCH)。

3)二进制输出记录bo($(TANK)SWITCH)根据写入的值是0或1,向设备发出断开或者闭合开关的指令。

以下是文本数据库:

1)$(TANK)TEMPERATURE:模拟输入记录ai用于读取设备的输入。

2)$(TANK)CHECK:calcout记录用于比较输入和设定值,并且在比较结果发生变化时,输出比较结果。

3)$(TANK)SWITCH:二进制输出记录bo,向设备输出向其写入的值。

4)$(TANK)SWITCH_RBV:二进制输入记录bi,用于读取设备的开关状态。

5)$(TANK)SETPOINT:模拟输入记录ai,提供给用户设置温度设定值。

record(ai, "$(TANK)TEMPERATURE") {
  field(DESC, "Read Temperature")
  field(SCAN, "I/O Intr")
  field(DTYP,"asynFloat64")
  field(INP,"@asyn($(PT1), 0,1000)FLOAT32_BE")
  field(PREC, "1")
  field(LINR, "NO CONVERSION")
  field(EGU, "Celsius")
  field(HOPR, "100")
  field(LOPR, "0")
  field(SMOO, "0.5")
  field(HIGH, "15")
  field(HSV, "MINOR")
  field(PINI, "NO")
}

record(calcout, "$(TANK)CHECK") {
  field(DESC, "Control Heater")
  field(CALC, "A<B")
  field(INPA, "$(TANK)TEMPERATURE CP MS")
  field(OUT, "$(TANK)SWITCH PP")
  field(OOPT, "On Change")
  field(DOPT, "Use CALC")
  field(INPB, "$(TANK)SETPOINT")
}


record(bo, "$(TANK)SWITCH") {
  field(DESC, "Heater Switch")
  field(SCAN, "Passive")
  field(DTYP,"asynUInt32Digital")
  field(OUT,"@asynMask($(PT2) 0 0x1)")
  field(OMSL, "supervisory")
  field(ZNAM, "Open")
  field(ONAM, "Closed")
  field(IVOA, "Set output to IVOV")
  field(IVOV, "0")
}

record(bi, "$(TANK)SWITCH_RBV") {
  field(DESC, "Heater Switch Readback")
  field(SCAN, "I/O Intr")
  field(DTYP,"asynUInt32Digital")
  field(INP,"@asynMask($(PT3) 0 0x1)")
  field(ZNAM, "Open")
  field(ONAM, "Closed")
}

record(ai, "$(TANK)SETPOINT") {
  field(DESC, "Temperature Setpoint")
  field(SCAN, "Passive")
  field(INP, "10")
  field(HOPR, "100")
  field(LOPR, "0")
}

使用modbus-slave软件模拟设备端:

1)温度定义如下:用两个字组成一个32位大端浮点数

2) 开关定义如下:用一个线圈位模拟一个开关

启动脚本设定如下:

#!../../bin/linux-aarch64/tank

#- You may have to change tank to something else
#- everywhere it appears in this file

< envPaths

cd "${TOP}"

## Register all support components
dbLoadDatabase "dbd/tank.dbd"
tank_registerRecordDeviceDriver pdbbase

drvAsynIPPortConfigure("TANK","192.168.50.252:502",0,0,1)
#modbusInterposeConfig(const char *portName,
#                      modbusLinkType linkType,
#                      int timeoutMsec,
#                      int writeDelayMsec)
modbusInterposeConfig("TANK",0, 5000,0)

# one float32 input read
drvModbusAsynConfigure("PT1", "TANK&#
智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识点解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“橙点同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值