首页 > 编程语言 >变频器的python用法

变频器的python用法

时间:2024-08-19 22:58:11浏览次数:9  
标签:变频器 播报 python self 用法 read say runAndWait 语音

案例以串口发送485指令实现

硬件需求:USB转485接口 、变频器(由三科变频提供测试产品)

这里写的是一些常用的功能,计划要完成一个全功能的参数设置程序,貌似工作量不小呢。

【特别声明】:代码测试所使用的485通讯是三科SKI90型号的机器,其他品牌型号变频器用本代码调试时务必请先查阅其使用手册,修改通讯地址,避免因误传参数导致机器损坏。

import modbus_tk.modbus_rtu as modbus_rtu
import pyttsx3
import serial
import time

# 创建modbus通讯连接
master = modbus_rtu.RtuMaster(
    serial.Serial(port='COM3',  # 连接端口
                  baudrate=9600,  # 连接波特率
                  bytesize=8,  # 数据位
                  parity='N',  # 奇偶校验位
                  stopbits=1))  # 停止位
master.set_timeout(5.0) # 连接超市
master.set_verbose(True)

语音播报 = pyttsx3.init() # 语音播报器初始化

class 变频器:
    def __init__(self,电机,频率):
        self.电机 = 电机
        self.频率 = 频率

    def 参数查询(self): # 查询电流输入输出情况
        try:
            read = master.execute(slave=self.电机,function_code=3,starting_address=0x1001,quantity_of_x=8)
            a = f'当前运行频率为{read[0] / 100}赫兹,母线电压{read[1]/10}伏,输出电压{read[2]}伏,输出频率{read[6]/100}赫兹,输出电流{read[7]/10}安'
            print(a)
            语音播报.say(a)
            语音播报.runAndWait()
        except Exception as exc:
            print(str(exc))

    def 状态查询(self):
        try:
            read = master.execute(slave=self.电机, function_code=3, starting_address=0x3000, quantity_of_x=1)
            if read[0] == 3:
                语音播报.say("变频器未启动")
                语音播报.runAndWait()
            elif read[0] == 2:
                语音播报.say("变频器反转运行中");
                语音播报.runAndWait()
            else:
                语音播报.say('变频器正传运行中')
                语音播报.runAndWait()
        except Exception as exc:
            print(str(exc))

    def 频率设置(self): 
        # 变频器设置的上限频率对应100%,参数识别值为10000,通用机型出厂默认设置的上限频率为50HZ
        # 所以50对应10000及频率要以0.005为系数换算需要传入的参数值
        # 要注意,如果变频器设置的上限频率 不等于50 频率转换参数的系数 需按实际设置的上限频率/10000计算
        # 485地址只接受正整数参数传入,别忘了int哈,这里卡了很久,注意避坑 :)
        try:
            master.execute(slave=self.电机, function_code=6, starting_address=0x1000,
                           quantity_of_x=8, output_value=int(self.频率/0.005))
            语音播报.say(f"运行频率已设置为{self.频率}")
            语音播报.runAndWait()
        except Exception as exc:
            print(str(exc))

    def 正转启动(self):
        try:
            master.execute(slave=self.电机,function_code=6,starting_address=0x2000,quantity_of_x=8,output_value=1)
            语音播报.say("变频器已正转启动")
            语音播报.runAndWait()

        except Exception as exc:
            print(str(exc))

    def 反转启动(self):
        try:
            master.execute(slave=self.电机,function_code=6,starting_address=0x2000,quantity_of_x=8,output_value=2)
            语音播报.say("变频器已反转启动")
            语音播报.runAndWait()
        except Exception as exc:
            print(str(exc))

    def 正转点动(self):
        try:
            master.execute(slave=self.电机,function_code=6,starting_address=0x2000,quantity_of_x=8,output_value=3)
            语音播报.say("变频器已正转点动")
            语音播报.runAndWait()
            # 模拟点动 点动频率2HZ 5秒后自由停机
            time.sleep(5)
            变频器(self.电机, self.频率).自由停车()
        except Exception as exc:
            print(str(exc))

    def 反转点动(self):
        try:
            master.execute(slave=self.电机,function_code=6,starting_address=0x2000,quantity_of_x=8,output_value=4)
            语音播报.say("变频器已反转点动")
            语音播报.runAndWait()
            # 模拟点动 点动频率2HZ 5秒后自由停机
            time.sleep(5)
            变频器(self.电机,self.参数值).自由停车()
        except Exception as exc:
            print(str(exc))

    def 自由停车(self):
        try:
            master.execute(slave=self.电机,function_code=6,starting_address=0x2000,quantity_of_x=8,output_value=5)
            语音播报.say("变频器已自由停车")
            语音播报.runAndWait()
        except Exception as exc:
            print(str(exc))

    def 减速停车(self):
        try:
            master.execute(slave=self.电机, function_code=6, starting_address=0x2000, quantity_of_x=8, output_value=6)
            语音播报.say("变频器已减速停车")
            语音播报.runAndWait()
        except Exception as exc:
            print(str(exc))

    def 故障复位(self):
        try:
            master.execute(slave=self.电机, function_code=6, starting_address=0x2000, quantity_of_x=8, output_value=7)
            语音播报.say("变频器故障已复位")
            语音播报.runAndWait()
        except Exception as exc:
            print(str(exc))

    def 故障查询(self):
        try:
            read = master.execute(slave=self.机号,function_code=3,starting_address=0x8000,quantity_of_x=1)
            print(read)
            if read[0]==0:
                语音播报.say("变频器无故障")
                语音播报.runAndWait()
            elif read[0]==1:
                语音播报.say("未知故障,请咨询生产厂家")
                语音播报.runAndWait()
            elif read[0]==2:
                语音播报.say('加速过电流保护,请延长启动时间或减轻电机负载')
                语音播报.runAndWait()
            elif read[0]==3:
                语音播报.say('减速过电流保护,请延长减速时间或加装制动电阻')
                语音播报.runAndWait()
            elif read[0]==4:
                语音播报.say('恒速过电流保护,电网异动或电机卡转')
                语音播报.runAndWait()
            elif read[0]==5:
                语音播报.say('加速过电压保护,请查看进线电源是否接错')
                语音播报.runAndWait()
            elif read[0]==8:
                语音播报.say('制动电阻过载,请更换更大阻值制动电阻')
                语音播报.runAndWait()
            elif read[0]==9:
                语音播报.say('欠压保护,输入电压过低,请查看电网电压')
                语音播报.runAndWait()
            elif read[0] ==0xA:
                语音播报.say('变频器过载保护,请减轻负载再试或更换更大功率变频器')
                语音播报.runAndWait()
            elif read[0] ==0xB:
                语音播报.say('电机过载保护,请检查设置电机组参数')
                语音播报.runAndWait()
            elif read[0] ==0xC:
                语音播报.say('输入缺相保护,请查看电源接线')
                语音播报.runAndWait()
            elif read[0] ==0xD:
                语音播报.say('输出缺相保护,请检查电机接线')
                语音播报.runAndWait()
            elif read[0] ==0xE:
                语音播报.say('变频器模块过热保护,请检查散热风扇')
                语音播报.runAndWait()
            else:
                语音播报.say('程序员偷懒了,不常见故障请查阅《使用手册》')
                语音播报.runAndWait()
        except Exception as exc:
            print(str(exc))
            语音播报.say('未知故障,请复位再试')
            语音播报.runAndWait()

    def 点动频率(self):
        try:
            master.execute(slave=self.电机, function_code=6, starting_address=0xF800,
                           quantity_of_x=8, output_value=int(self.频率/0.005))
        except Exception as exc:
            print(str(exc))


主电机=变频器(1,25)
主电机.频率设置()






标签:变频器,播报,python,self,用法,read,say,runAndWait,语音
From: https://blog.csdn.net/qq_41049737/article/details/141335389

相关文章

  • [Python学习日记-10] Python中的流程控制(if...else...)
    简介        假如把写程序比做走路,那我们到现在为止,一直走的都是直路,还没遇到过分叉口,想象现实中,你遇到了分叉口,然后你决定往哪拐必然是有所动作的。你要判断那条岔路是你真正要走的路,如果我们想让程序也能处理这样的判断怎么办?很简单,只需要在程序里预设一些条件判断......
  • Python 加载 TensorFlow 模型
    1.SavedModel和HDF5加载TensorFlow模型为了加载一个TensorFlow模型,我们首先需要明确模型的格式。TensorFlow支持多种模型格式,但最常见的两种是SavedModel和HDF5(对于Keras模型)。这里,我将分别给出加载这两种模型格式的示例代码。1.1加载SavedModel格式的TensorFlow模型SavedModel......
  • Python Lambda 用法大全
    PythonLambda用法大全一、Lambda表达式基础Lambda的组成分为三部分Lambda表达式是Python中的一种匿名函数,它可以在一行代码中定义函数并立即调用它。与普通函数不同的是,Lambda函数通常不需要使用def关键字去定义,而是在需要时直接使用lambda关键字来创建。Lambda函数可以接受......
  • 【LGR-196-Div.4】洛谷入门赛 #26 题A - H 详细题解--优化思路简洁代码(C++,Python语
    前言:    觉得这个比赛很有意思的,都是暴力题,涉及一些细节,难度比较适合刚学编程语言的,可以很好的锻炼基础还有手速,最后两题也是比较有意思,之后也准备更新atc的比赛题解和洛谷的一些高质量比赛题解(算法网瘾就是想参加各种比赛)   如果觉得有帮助,或者觉得我写的好,......
  • __gnu_pbds::tree 用法简介
    __gnu_pbds::tree用法简介概述pbds即平板电视,里面实现了很多数据结构,NOI系列赛事可以使用,但很多OJ和网站无法使用。其中有__gnu_pbds::tree,是平衡树,支持查找位置、查找第\(k\)大、分裂、合并。功能远强与std::set。性能实现是红黑树,空间常数是Treap的\(1.5\)倍,时......
  • 层次聚类算法原理及Python实现
    层次聚类算法(HierarchicalClusteringMethod)是一种基于簇间相似度在不同层次上分析数据,从而形成树形聚类结构的算法。它主要分为两种形式:凝聚层次聚类(自下而上)和分裂层次聚类(自上而下)。以下将详细介绍凝聚层次聚类的原理与步骤:一、原理凝聚层次聚类算法的基本思想是将每个样......
  • 谱聚类算法原理及Python实现
    谱聚类算法(SpectralClustering)是一种基于图论的聚类算法,其原理与步骤可以详细阐述如下:一、原理谱聚类算法建立在谱图理论基础上,它将聚类问题转化为图的最优划分问题。具体来说,算法将数据集中的每个对象看作是图的顶点V,将顶点间的相似度量化作为相应顶点连接边E的权值,从而得......
  • python基础(06控制语句)
    python系列文章目录python基础(01变量&数据类型&运算符)python基础(02序列共性)python基础(03列表和元组)python基础(04字符串&字典)python基础(05集合set)文章目录python系列文章目录前言一、语句块二、bool类型:Ture、False三、条件判断(if、else、elif)四、循环语句五、推......
  • 高校爬虫可视化系统-基于python|Django|flask的高校爬虫可视化系统|大学数据抓取与展
    博主介绍:✌十余年IT大项目实战经验、在某机构培训学员上千名、专注于本行业领域✌技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫+大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战项目。主要内容:系统功能设计、开题报告......
  • python随笔day4
    python实战面试题目1、列出你知道的http协议的状态码,说出表示什么意思?1xx临时响应2xx成功3xx重定向4xx请求错误5xx服务器错误我经常遇到的:200成功、404未找到网页文件、403服务器拒绝请求(禁止)、304未修改(自从上次请求后该网页就未修改过)、500服务器内部错误、503服务器......