mysql在EPICS IOC过程变量数据存储中的应用

这篇具有很好参考价值的文章主要介绍了mysql在EPICS IOC过程变量数据存储中的应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

此处使用的IOC中含有3个温度值,2个二进制输出,2个二进制输入,如下所示:

三个温度值的过程变量名:

  • THREETS:T1:Temperarure
  • THREETS:T2:Temperarure
  • THREETS:T3:Temperarure

两个二进制输出:

  • TEST:Bo1
  • TEST:Bo2

两个二进制输入:

  • TEST:Bi1
  • TEST:Bi2

在mysql数据库中建立一个名为temperature的数据库,并且在此数据库下建立一个名为temperature的数据表:

mysql> DESC temperature;
+-----------+----------+------+-----+---------+----------------+
| Field     | Type     | Null | Key | Default | Extra          |
+-----------+----------+------+-----+---------+----------------+
| id        | int      | NO   | PRI | NULL    | auto_increment |
| temp1     | float    | YES  |     | NULL    |                |
| temp2     | float    | YES  |     | NULL    |                |
| temp3     | float    | YES  |     | NULL    |                |
| light1    | tinyint  | YES  |     | NULL    |                |
| light2    | tinyint  | YES  |     | NULL    |                |
| status1   | tinyint  | YES  |     | NULL    |                |
| status2   | tinyint  | YES  |     | NULL    |                |
| timepoint | datetime | YES  |     | NULL    |                |
+-----------+----------+------+-----+---------+----------------+
9 rows in set (0.00 sec)

 以下python代码实现一秒钟读取一次以上所有EPICS过程变量,并且把它们存储到数据库对应表中,使用pymsql模块操作数据库,使用epics模块通过通道访问读取过程变量:

import pymysql
import epics
import cryptography
import time

# 连接数据库
db=pymysql.connect(host="192.168.50.181",user="blctrl",
                   password="@AAaa0012", 
                   port=3306,
                   database="temperature")
cursor = db.cursor()

# 构造插入插入字段
tempname="temp1,temp2,temp3"
boname="light1,light2"
biname="status1,status2"
s="%s,%s,%s,%s" % (tempname, boname, biname,"timepoint")
print(s)

# 从通道访问获取值,并且构造进行数据插入的sql语句
def create_insert_sql(s):
    temps=[]
    for i in range(3):
        temper_ch="THREETS:T%d:Temperature" %  (i+1)
        temper=epics.caget(temper_ch)
        temps.append(temper)


    bos=[]
    for i in range(2):
        bo_ch="TEST:Bo%d" % (i+1)
        bo=epics.caget(bo_ch)
        bos.append(bo)

    bis=[]
    for i in range(2):
        bi_ch="TEST:Bi%d" % (i+1)
        bi=epics.caget(bi_ch)
        bis.append(bi)
        
        # 构造插入值
    v1="%f,%f,%f " % tuple(temps)
    v2="%d,%d " % tuple(bos)
    v3="%d,%d" % tuple(bis)
    v="%s,%s,%s,%s" % (v1,v2,v3, "now()")
#     print(s,v)

    insert_sql="""INSERT INTO {0} ({1}) VALUES ({2})""".format("temperature",s,v)
    return insert_sql


# 执行sql语句
def insert(cursor, db, insert_sql):
    cursor.execute(insert_sql)
    db.commit()

# 每秒读取一次过程变量,进行数据库插入,进行指定的次数
def insert_per_second(cursor, db, s ,times=10):
    while True:
        insert_sql=create_insert_sql(s)
        insert(cursor, db, insert_sql)
        if times == 0:
            break;
        times =times-1
        time.sleep(1)

# 数据库插入5次
insert_per_second(cursor, db, s,times=5)


# 断开数据库连接
db.close()

执行insert_per_second(cursor, db, s,times=5)函数前后数据表temperaure中数据对比:文章来源地址https://www.toymoban.com/news/detail-546908.html

mysql> select * from temperature;
Empty set (0.00 sec)

mysql> select * from temperature;
+----+-------+-------+-------+--------+--------+---------+---------+---------------------+
| id | temp1 | temp2 | temp3 | light1 | light2 | status1 | status2 | timepoint           |
+----+-------+-------+-------+--------+--------+---------+---------+---------------------+
| 11 |    28 |  28.3 |  27.8 |      0 |      1 |       1 |       0 | 2023-07-07 08:54:28 |
| 12 |    28 |  28.3 |  27.7 |      0 |      1 |       1 |       0 | 2023-07-07 08:54:29 |
| 13 |    28 |  28.3 |  27.7 |      0 |      1 |       1 |       0 | 2023-07-07 08:54:31 |
| 14 |    28 |  28.3 |  27.8 |      0 |      1 |       1 |       0 | 2023-07-07 08:54:33 |
| 15 |    28 |  28.3 |  27.8 |      0 |      1 |       1 |       0 | 2023-07-07 08:54:34 |
| 16 |    28 |  28.3 |  27.8 |      0 |      1 |       1 |       0 | 2023-07-07 08:54:36 |
+----+-------+-------+-------+--------+--------+---------+---------+---------------------+
6 rows in set (0.00 sec)

到了这里,关于mysql在EPICS IOC过程变量数据存储中的应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL基础(五)视图、存储过程和存储函数、变量

    目录 常见的数据库对象  ​编辑  视图 创建视图 改变视图 优缺点 存储过程与存储函数  创建存储过程  创建存储函数 存储过程和存储函数的区别  存储过程和函数的查看、修改、删除  查看 修改 删除 存储过程的优缺点 优点 缺点 变量 系统变量 查看系统变量 修改变量

    2024年02月13日
    浏览(47)
  • 数据库系统原理及MySQL应用教程实验七存储过程与函数的创建管理

    1. 理解存储过程和函数的概念。 2. 掌握创建存储过程和函数的方法。 3. 掌握执行存储过程和函数的方法。 4. 掌握游标的定义、使用方法。 1.验证性实验:某超市的食品管理的数据库的Food表对其操作。 2.设计性试验:学校教师管理数据库中的teacherInfo表对其操作。 三、实验步

    2024年02月03日
    浏览(55)
  • 【Mysql】X-DOC:Mysql数据库大量数据查询加速(定时JOB和存储过程应用案例)

    在某中台系统中,设计了大量的基础数据(维度数据、维度映射关系等)来支撑业务功能,业务表中存在大量的维度外键关联字段,其优点是可以实现前端的选择录入,数据校验,确保录入数据的准确性;缺点是在做业务报表时,需要做大量的维度关联(join)操作。 受限于

    2024年02月12日
    浏览(44)
  • Ortec974A EPICS IOC程序

    Ortec974A设备介绍,请见Ortec -- 974A 四通道100-MHz计时器/计数器_ortec974a_EPICS Technical的博客-CSDN博客 1) 创建一个用户存放这个IOC程序结构的目录: 2)使用makeBaseApp.pl构建这个IOC程序架构: 3)编辑configure/RELEASE文件,添加这个IOC程序所需要的其它依赖模块: 4) 进入源文件目录o

    2024年02月08日
    浏览(27)
  • E3 基于Mysql的SQL应用和存储过程

    一、 实验目的: Mysql平台要求你熟练使用MySQL基本指令,完成对程序的控制与管理,并根据要求写存储过程。 二、 实验要求: 1、基本硬件配置:英特尔Pentium III 以上,大于4G内存; 2、软件要求:Mysql; 3、时间:1小时; 4、撰写实验报告并按时提交。 三、 实验内容: Group1:Mysql基

    2024年01月25日
    浏览(35)
  • 第61讲:MySQL存储过程的核心概念以及应用案例

    存储过程指的是能够完成特定功能的SQL语句集合,当程序需要完成特定的功能时,就可以直接调用相关的存储过程来完成业务逻辑的实现。在存储过程中可以写入很多的SQL语句以及一些编程逻辑,例如if、while、case、变量等等,将这些SQL语句编译存储在数据库中形成存储空间

    2024年02月06日
    浏览(43)
  • 【MySQL 数据库】9、存储过程

    🌱 存储过程是事先经过编译并存储在数据库中的 SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,可以提高数据处理效率 🌱 存储过程思想上很简单:就是数据库 SQL 语言层面的代码封装与重用 🍃 【封装,复用

    2024年02月08日
    浏览(49)
  • 数据库(MySQL)的存储过程

    存储过程是事先经过编译并存储在数据库中的一段SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就是数据库SQL 语言层面的代码封装与重用。 特点

    2024年02月10日
    浏览(44)
  • MySQL数据库——MySQL修改存储过程(ALTER PROCEDURE)

    在实际开发过程中,业务需求修改的情况时有发生,所以修改 MySQL 中的存储过程是不可避免的。 MySQL 中通过 ALTER PROCEDURE 语句来修改存储过程。下面将详细讲解修改存储过程的方法。 MySQL 中修改存储过程的语法格式如下: ALTER PROCEDURE 存储过程名 [ 特征 ... ] 特征 指定了存储

    2024年02月04日
    浏览(46)
  • 使用MySQL存储过程提高数据库效率和可维护性

    MySQL 存储过程是一种强大的数据库功能,它允许你在数据库中存储和执行一组SQL语句,类似于编程中的函数。存储过程可以大幅提高数据库的性能、安全性和可维护性。本文将详细介绍MySQL存储过程的使用。 MySQL存储过程是一组预编译的SQL语句,它们以一个名称存储在数据库

    2024年02月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包