电源66319D控制方法

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

新建底层控制逻辑

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

import tkinter.messagebox
import pyvisaclass InstrumentControl(object):inst = Nonedef __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}")passdef 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.instreturn self.instdef 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_resdef 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_resdef 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 InstrumentControlclass 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 resultdef 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 resultdef 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 resultdef query_average_output_current(self):"""查询平均输出电流:return: 平均输出电流"""result = self.command_query("MEAS:CURR?")return resultdef query_average_output_current_2(self):"""查询二口的平均输出电流:return: 二口的平均输出电流"""result = self.command_query("MEAS:CURR2?")return resultdef 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 resultdef 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 resultdef 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 resultdef 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 resultdef 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_mindef 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_mindef query_average_voltage(self):"""测试平均电压:return: 平均电压"""result = self.command_query("MEAS:DVM:DC?")return resultdef 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的控制方法就到这里了,博主后续还会更新不同仪器的控制方法,各位敬请期待吧,有疑问欢迎找博主解答,我是活动的笑脸。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探析Zoho Projects项目管理系统功能优势

世上万物,都是有难有易,有简单,也有复杂,项目也不例外。面对复杂的项目,应该如何有效管理呢?答案无疑是项目管理系统,项目管理系统有哪些强大的功能?Zoho Projects项目管理系统的功能…

Qt中常用宏定义

Qt中常用宏定义 一、Q_DECLARE_PRIVATE(Class)二、Q_DECLARE_PRIVATE_D(Dptr, Class)三、Q_DECLARE_PUBLIC(Class)四、Q_D(Class) 和 Q_Q(Class) 一、Q_DECLARE_PRIVATE(Class) #define Q_DECLARE_PRIVATE(Class) inline Class##Private* d_func() { # 此处的 d_ptr 是属于QOb…

【数据分层方法论】初稿

一般标准数据架构有(ODS、DWD、DWS、DIM、ADS) 一般数据构架问题: 1.架构定位与边界不清楚,导致ADS烟囱化开发; 2.ADS集市缺少统一规划、混乱低效; 3.ADS集市指标口径急需要统一; 4.缺少高质量的设计标准,…

LeetCode 面试经典150题 290.单词规律

题目: 给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 思路:一一映射需要用到…

要提升视频面试效率,需要留意以下几点

在当今远程工作的世界里,视频面试对于成功招聘至关重要。在这个过程中,过度沟通,要有耐心,提供电子产品,并表现出同理心。 随着世界转向远程工作,视频面试已经开始成为维持成功招聘策略的重要组成部分。多…

政安晨:专栏目录【TensorFlow与Keras实战演绎机器学习】

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 本篇是作者政安晨的专栏《TensorFlow与Keras…

监听页面的使用时间

如果是比较新的vue架构(推荐,参考若依) 监听create()和destory()两个函数,写通用的js调用函数,在路由守卫的时候使用,就可以获取到每个页面停留时间 如果是比…

碳素光线疗法与宠物健康

碳素光线与宠物健康 生息在地球上的所有动物、在自然太阳光奇妙的作用下、生长发育。太阳光的能量使它们不断进化、繁衍种族。现在、生物能够生存、全仰仗于太阳的光线。太阳光线中、包含有动物健康所需要的极为重要的波长。因此、和户外饲养的动物相比、在室内喂养的观赏动物、…

比较AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer

主流的几个AI智能编程代码助手包括Github Copilot、Codeium、Tabnine、Replit Ghostwriter和Amazon CodeWhisperer。 你可能已经尝试过其中的一些,也可能还在不断寻找最适合自己或公司使用的编程助手。但是,这些产品都会使用精选代码示例来实现自我宣传…

无货源采集软件必备API--支持多平台爆款采集-淘宝-天猫-拼多多-整店采集和淘客功能

如何获取API测试权限? item_get 获得淘宝商品详情item_get_pro 获得淘宝商品详情高级版item_review 获得淘宝商品评论item_fee 获得淘宝商品快递费用item_password 获得淘口令真实urlitem_list_updown 批量获得淘宝商品上下架时间seller_info 获得淘宝店铺详情item…

Ubuntu通过分用户进行多版本jdk配置

前言:本文内容为实操记录,仅供参考! linux安装jdk参考:http://t.csdnimg.cn/TeECj 出发点:最新的项目需要用jdk17来编译,就把服务器的jdk版本升级到了17,但是有一些软件例如nexus还需要jdk1.8进…

增强现实(AR)的开发工具

增强现实(AR)的开发工具涵盖了一系列的软件和平台,它们可以帮助开发者创造出能够将虚拟内容融入现实世界的应用程序。以下是一些在AR领域内广泛使用的开发工具。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎…

【前端面试3+1】04浏览器存储、flex布局属性和常用指令、 promise和async await区别

一、浏览器存储 1.1类型: 浏览器数据存储的方式有以下几种: Cookie:小型文本文件,存储在用户计算机上,可以通过浏览器传输到服务器。Web Storage:包括LocalStorage和SessionStorage,可以在浏览器…

ES-LTR粗排模块

ES-LTR粗排模块 官方资源:https://github.com/HeiBoWang/elasticsearch-learning-to-rank Elasticsearch学习排名插件使用机器学习提高搜索相关性排名。它为维基媒体基金会和Snagajob等地方的搜索提供了动力! 这个插件有什么功能 此插件: …

I.MX6ULL_Linux_系统篇(25) buildroot文件系统构建

前面我们学习了如何使用 busybox 来构建根文件系统,但是 busybox 构建的根文件系统不齐全,很多东西需要我们自行添加,比如 lib 库文件。在我们后面的驱动开发中很多第三方软件也需要我们自己去移植,这些第三方软件有很多又依赖其他…

ubuntu 不产生core dump 文件

目标机器:UBuntu2004 目的:产生coredump 文件 ulimit -c //未设置之前 0ulimit -c unlimited //大小不受限设置 #将1写入到该文件里 echo 1 > /proc/sys/kernel/core_uses_pid mkdir /corefile #这里一定不要加“” echo “/corefile/core-%e…

5.6 物联网RK3399项目开发实录-Android开发之U-Boot 编译及使用(wulianjishu666)

物联网入门到项目实干案例下载: https://pan.baidu.com/s/1fHRxXBqRKTPvXKFOQsP80Q?pwdh5ug --------------------------------------------------------------------------------------------------------------------------------- U-Boot 使用 前言 RK U-B…

【CKA模拟题】如何用Nslookup轻松检查集群服务名的DNS解析?

题干 For this question, please set this context (In exam, diff cluster name) kubectl config use-context kubernetes-adminkubernetes Create an nginx pod named nginx-pod-cka using the nginx image, and expose it internally with a service named nginx-service-…

大宋咨询(深圳满意度调查)如何进行客户满意度电话调查

在这个竞争激烈的市场环境中,客户满意度已经成为企业生存和发展的关键。在进行客户满意度电话调查时,关键是要确保调查过程的专业性、准确性和有效性。为了帮助您了解客户的需求,提高客户满意度,以下大宋咨询(深圳业主…

Jenkins拉取github项目相关问题

1.私有仓库问题 1.1如果你的仓库是私有的,21年起github就不支持账号密码的方式拉取代码了 那么就需要在github上面创建一个token (classic) 然后在Jenkins代码设置那里 然后应该就可以顺利打包了。 2.找不到pom(多了一层文件夹)问题 解…