电源66319D控制方法

实现自动化控制,电源为基础的模块,下面为大家讲解电源66319D的控制逻辑。

新建底层控制逻辑

在这里插入图片描述
在文件basis_contorl.py中写入仪器控制底层代码,代码如下:

import tkinter.messagebox
import pyvisa


class InstrumentControl(object):
    inst = None

    def __init__(self, equipment_name: str, equipment_visa: str, visa_dll='c:/Windows/System32/visa32.dll'):
        """
        建立仪器初始对象
        @param equipment_name: 仪器名
        @param equipment_visa: 仪器visa地址
        @param visa_dll: visa.all地址
        """
        try:
            self.rm = pyvisa.ResourceManager(visa_dll)
            print("打开visa32.dll文件成功")
            self.inst = self.open_by_name(equipment_name, equipment_visa)
        except Exception as e:
            tkinter.messagebox.showerror('错误', '在{}中找不到visa32.dll,请确认正确安装了NI-MAX和驱动')
            print(f"打开visa32.dll文件失败, 报错原因:{e}")
        pass

    def open_by_name(self, device_name, gpib_ip):
        """
        仪表通讯
        @param device_name:
        @param gpib_ip:
        @return: 仪器控制对象
        """
        self.inst = self.rm.open_resource(gpib_ip)
        print(self.inst)
        print("打开资源:" + gpib_ip)
        query_name_str = self.command_query("*IDN?")
        print("查询名称为:" + query_name_str)
        if device_name in query_name_str:
            print("打开仪表成功,打开的是:" + device_name)
            print("打开仪表成功,打开的是:" + device_name)
            return self.inst
        return self.inst

    def command_write(self, write_cmd):
        """
        命令写入
        @param write_cmd: 写入指令
        @return: 执行结果
        """
        print("执行了写入指令:" + write_cmd)
        ret_res = self.inst.write(write_cmd)
        print("返回了:" + str(ret_res))
        return ret_res

    def command_read(self, read_cmd):
        """
        命令读取
        @param read_cmd: 读取指令
        @return: 读取信息
        """
        print("执行了读取指令:" + read_cmd)
        ret_res = self.inst.read(read_cmd)
        print("返回了:" + str(ret_res))
        return ret_res

    def command_query(self, query_cmd):
        """
        命令查询
        @param query_cmd: 查询指令
        @return: 查询信息
        """
        print("执行了查询指令:" + query_cmd)
        ret_res = self.inst.query(query_cmd).replace('\n', '')
        print("返回了:" + str(ret_res))
        return ret_res

编写好底层控制代码,在文件instrument_66319d.py写入电源66139D的控制指令,代码如下:

from instrument_control.basis_contorl import InstrumentControl


class D66319(InstrumentControl):
    def __init__(self, equipment_name: str, equipment_visa: str):
        super(D66319, self).__init__(equipment_name, equipment_visa)

    def query_equipment_info(self):
        """
        查询设备信息
        :return: 设备信息
        """
        result = self.command_query("*IDN?")
        return result

    def switch_display(self, interface: int):
        """
        切换显示界面
        :param interface: 1 or 2
        """
        self.command_write(f"DISPLAY:CHANNEL {interface}")

    def set_output_2(self, output_2: int):
        """
        设置output2的输出功率
        :param output_2: 1,2.....
        """
        self.command_write(f"OUTP2 {output_2};*OPC?")

    def set_output(self, output: int):
        """
        设置output1的输出功率
        :param output: 1,2.....
        """
        self.command_write(f"OUTP1 {output};*OPC?")

    def set_voltage_2(self, voltage_2: int):
        """
        设置二口的电压
        :param voltage_2: 1,2.....
        """
        self.command_write(f'VOLT2 {voltage_2}')

    def set_voltage(self, voltage):
        """
        设置一口的电压
        :param voltage: 1,2.....
        """
        self.command_write(f'VOLT1 {voltage}')

    def open_output_2(self):
        """
        打开二口的输出开关
        """
        self.command_write('OUTP2 ON')

    def open_output(self):
        """
        打开一口的输出开关
        """
        self.command_write('OUTP1 ON')

    def query_maximum_voltage(self):
        """
        查询可编程的最大输出电压
        :return: 电压值
        """
        result = self.command_query("VOLT? MAX").replace("\n", '')
        return result

    def open_over_voltage_protection(self):
        """
        开启过压保护
        """
        self.command_write("CURR:PROT:ON")

    def close_over_voltage_protection(self):
        """
        关闭过压保护
        """
        self.command_write("CURR:PROT:OFF")

    def set_output_resistance(self, output_resistance: int):
        """
        设置输出电阻
        :param output_resistance: 输出电阻值
        """
        self.command_write(f"RES {output_resistance}")

    def query_average_output_voltage(self):
        """
        查询平均输出电压
        :return: 均输出电压
        """
        result = self.command_query("MEAS:VOLT?")
        return result

    def query_average_output_current(self):
        """
        查询平均输出电流
        :return: 平均输出电流
        """
        result = self.command_query("MEAS:CURR?")
        return result

    def query_average_output_current_2(self):
        """
        查询二口的平均输出电流
        :return: 二口的平均输出电流
        """
        result = self.command_query("MEAS:CURR2?")
        return result

    def set_samples(self, samples: int):
        """
        设置采样的样本数量
        :param samples: 样本数量
        """
        self.command_write(f"SENS:SWE:POIN {samples}")

    def set_time_interval(self, time_interval: float):
        """
        设置每个样本的间隔时间
        :param time_interval: 间隔时间
        """
        self.command_write(f"SENS:SWE:TINT {time_interval}")

    def set_measurement_ranges(self, measurement_range: str):
        """
        设置电流测试范围(3A:0~MAX, 1A:0~1, 0.02:0~0.02)
        :param measurement_range: 测试范围
        """
        self.command_write(f"SENS:CURR:RANG {measurement_range}")

    def query_measurement_ranges(self):
        """
        查询电流测试范围
        :return: 电流测试范围
        """
        result = self.command_query("SENS:CURR:RANG?")
        return result

    def set_measurement_detectors(self, measurement_detectors):
        """
        设置电流探测器类型(AC_DC, DC)
        :param measurement_detectors: 电流探测器类型
        """
        self.command_write(f"SENS:CURR:DET {measurement_detectors}")

    def query_measurement_detectors(self):
        """
        查询电流探测器类型
        :return: 电流探测器类型
        """
        result = self.command_query("SENS:CURR:DET?")
        return result

    def query_voltage_rms_measurement(self, electric_type):
        """
        查询电压的rms测量值(AC:交流电, DC:直流电, AC_DC:直流加交流, DC:直流)
        :param electric_type: 电流类型
        :return: 电压的rms测量值
        """
        result = self.command_query(f"MEAS:VOLT:{electric_type}?")
        return result

    def query_current_rms_measurement(self, electric_type):
        """
        查询电流的rms测量值(AC:交流电, DC:直流电, AC_DC:直流加交流, DC:直流)
        :param electric_type: 电流类型
        :return: 电流的rms测量值
        """
        result = self.command_query(f"MEAS:CURR:{electric_type}?")
        return result

    def query_voltage_max_min(self):
        """
        查询电压的脉冲或交流波形的最大或最小值
        :return: 电压的脉冲或交流波形的最大或最小值
        """
        result_max = self.command_query("FETC:VOLT:MAX?")
        result_min = self.command_query("FETC:VOLT:MIN?")
        return result_max, result_min

    def query_current_max_min(self):
        """
        查询电流的脉冲或交流波形的最大或最小值
        :return: 电流的脉冲或交流波形的最大或最小值
        """
        result_max = self.command_query("FETC:CURR:MAX?")
        result_min = self.command_query("FETC:CURR:MIN?")
        return result_max, result_min

    def query_average_voltage(self):
        """
        测试平均电压
        :return: 平均电压
        """
        result = self.command_query("MEAS:DVM:DC?")
        return result

    def query_rms_voltage(self):
        """
        测试rms电压
        :return: rms电压
        """
        result = self.command_query("MEAS:DVM:ACDC?")
        return result

控制仪器时先设置控制对象,具体例子如下:

    set_equipment_name = "D66319"
    set_equipment_visa = "仪器的GPIB地址"
    d66319_object = D66319(equipment_name=set_equipment_name, equipment_visa=set_equipment_visa)

关于电源66319D的控制方法就到这里了,博主后续还会更新不同仪器的控制方法,各位敬请期待吧,有疑问欢迎找博主解答,我是活动的笑脸。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/496850.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

罗永浩要在直播间卖阿里云服务器了

关注卢松松,会经常给你分享一些我的经验和观点。 万万没想到,罗永浩要在直播间卖阿里云了。一个是科技圈的超级大V,一个是云计算行业的老大,看来这两位要合体了! 罗永浩要3月31日在淘宝直播间卖云产品,阿里云还特意为…

Docker常见软件部署2

1 docker 安装redis集群 docker 安装redis集群,3主3从的配置。 1 创建一个redis通信网卡 #创建一个redis集群使用的网卡 docker network create redis --subnet 172.38.0.0/16 2 创建6个redis的配置文件 #通过脚本创建六个redis配置,复制下面命令直接…

CSS(一)---【CSS简介、导入方式、八种选择器、优先级】

零.前言 本系列适用于零基础小白,亦或是初级前端工程师提升使用。 知识点较为详细,如果追求非常详细,请移步官方网站或搬运网站。 1.CSS简介 CSS全称:“Cascading Style Sheets”,中文名:“层叠样式表”…

【正版特惠】IDM 永久授权 优惠低至109元!

尽管小编有修改版IDM,但是由于软件太好用了,很多同学干脆就直接购买了正版,现在正版也不贵,并且授权码绑定自己的邮箱,直接官方下载激活,无需其他的绿化修改之类的操作,不喜欢那么麻烦的&#x…

JUC内容概述

复习概念 Sleep和Wait的区别 Sleep是Thread的静态方法,wait是Object的方法,任何对象实例都可以使用sleep不会释放锁,他也不需要占用锁,暂停。wait会释放锁,但是调用他的前提是线程占有锁他们都可以被Interrupted方法…

iOS - LLVM的中间代码(IR)

文章目录 iOS - LLVM的中间代码(IR)1. 转为汇编代码2. 中间代码(IR)2.1 Objective-C在变为机器代码之前,会被LLVM编译器转换为中间代码(Intermediate Representation)2.2 可以使用以下命令行指令…

html音频和视频可输入表单input

音频和视频 loop循环播放autoplay自动播放controls显示控制面板<audio src""> //<video src"#">muted静音播放 可输入表单input password密码框 radio单选框 checkbox复选框 file上传文件 text文本框 文本框<input type"text"…

网络编程综合项目-多用户通信系统

文章目录 1.项目所用技术栈本项目使用了java基础&#xff0c;面向对象&#xff0c;集合&#xff0c;泛型&#xff0c;IO流&#xff0c;多线程&#xff0c;Tcp字节流编程的技术 2.通信系统整体分析主要思路&#xff08;自己理解&#xff09;1.如果不用多线程2.使用多线程3.对多线…

智能车主控板原理图原理讲解

智能车主控板原理图原理讲解 综述&#xff1a;本篇文章对智能车主控板的一部分电路进行原理分析&#xff0c;文末附加整体原理图。 1. 电源电路 &#xff08;1&#xff09;通过外接电池供电并通过电源模块电路&#xff0c;运用稳压芯片lm2940&#xff0c;将电源电压转化为5V…

原生JS上传大文件分片

代码&#xff1a;https://gitee.com/xproer/up6-vue-cli 1.引入up6组件 2.配置接口地址 接口地址分别对应&#xff1a;文件初始化&#xff0c;文件数据上传&#xff0c;文件进度&#xff0c;文件上传完毕&#xff0c;文件删除&#xff0c;文件夹初始化&#xff0c;文件夹删除&…

市场复盘总结 20240328

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 40% 最常用的…

代码随想录算法训练营第day60|84.柱状图中最大的矩形

84.柱状图中最大的矩形 力扣题目链接(opens new window) 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 思路&#xff1a; 为什么这么说呢&#xff…

第三十二天-PythonWeb主流框架-Django框架

目录 1.介绍 发展历史 介绍 2.使用 1.安装 2.创建项目 3.项目结构 4.启动 3.开发流程 1.设置ip可访问 2.创建模块 3.第一个页面 4.视图 5.include()参数 6.url与视图的关系 7.响应内容 4.视图处理业务逻辑 1.响应html 2.获取url参数 3.从文件响应html内容 …

趣味物理知识竞赛活动方案

为了丰富校园文化生活&#xff0c;创建格调高雅、学习氛围浓厚、青春气息浓郁的校园文化&#xff0c;注重多样性全方面的发展&#xff0c;推进了素质教育向纵深拓展&#xff0c;全面提升大学生的综合素质和精神文明建设全面发展。为进一步引导大学生了解前沿科技&#xff0c;普…

24计算机考研调剂 | 【官方】北京科技大学

北京科技大学 考研调剂招生信息 招生专业&#xff1a; 085404&#xff08;计算机技术&#xff09; 081200&#xff08;计算机科学与技术&#xff09; 调剂要求&#xff1a;&#xff08;调剂基本分数&#xff09; 我中心将在教育部“全国硕士生招生调剂服务系统”&#xff08…

面试算法-124-二叉树的最近公共祖先

题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是它…

缓存雪崩问题及解决思路

实战篇Redis 2.7 缓存雪崩问题及解决思路 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力。 解决方案&#xff1a; 给不同的Key的TTL添加随机值利用Redis集群提高服务的可用性给缓存业务添加降…

Requests教程-20-sign签名认证

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节中&#xff0c;我们学习了requests的token认证方法&#xff0c;本小节我们讲解一下requests的sign签名认证。 在进行接口调用时&#xff0c;一般会要求进行签名操作&#xff0c;以确保接口的安全性和完整…

基于springboot实现课程作业管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现课程作业管理系统演示 摘要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;课程作业管理系统当然也不能排除在外。课程作业管理系统是以实际运用为开发背景…

项目实战:电影评论情感分析系统

目录 1.引言 2.数据获取与预处理 3.构建文本分类模型&#xff08;使用LSTM&#xff09; 4.结果评估与模型优化 4.2.结果评估 4.2.模型优化 5.总结 1.引言 在本篇文章中&#xff0c;将通过一个完整的项目实战来演示如何使用Python构建一个电影评论情感分析系统。涵盖从数…