Python在工业自动化领域的应用详解

2023-10-26

当我们开始讨论在工业自动化应用中使用哪种编程语言时,通常我们会首先谈论IEC 61131-3标准中用于可编程逻辑控制器(PLC)的语言,比如经典的梯形图(LD)或结构化文本(ST)。对于机器人等应用,我们经常看到低级编译语言,比如C语言。

这几年有不少人讨论在工厂生产线上使用Python。是什么让Python这种解释型的高级语言突然变得吸引人?Python代码运行速度通常比更接近机器代码的编译语言慢,而且它显然无法胜任实时控制的任务,这是开发工业系统时的一个主要问题。

然而,现在我们看到了一系列因素的影响,使Python在工业应用领域备受关注。首先,工业4.0正在改变我们对工业自动化的看法,特别是它强调了“智能”制造的重要性,其具有更高的自主性、丰富的大数据,并与增材制造、云计算等下一代技术全面集成。

工业4.0的另一个影响是工业物联网(IIoT),它连接了本地网络上的工业机械,用于实时机器对机器(M2M)通信,并提供持续的传感器数据流以供分析使用。因此,我们正在见证信息技术(IT)和运营技术(OT)之间的融合,打破了长期以来分隔信息技术专业人员与运营技术专业人员的隔离。毕竟,IIoT设备需要使用信息技术来优化其运作。

这里Python就有了用武之地。当我们考虑世界上最流行的编程语言的优势时,我们可以看到Python在IIoT方面具有明显的优势。

首先,Python分析和处理大数据集能力强大。其次,Python可读性强,可以让团队成员更好地协作编写或维护代码。最后,Python是开源的,拥有强大的开发社区,很多应用都选择Python作为开发和维护语言,比如Tensorflow、Pytorch等。

机器学习

毫无疑问,Python影响最大的领域是机器学习(ML),这是人工智能(AI)的一个分支,其中算法从数据中学习,而不需要任何人工编写规则。常见的工业应用包括预测性维护和自动化机器人。

如今大多数的ML都是用Python编写的,诸如PyTorch和Google的开源TensorFlow等框架使用Python,亚马逊的云AI服务AWS SageMaker带有内置的Python软件开发工具包(SDK)。简而言之,Python是最适合这项工作的工具。

以下是常见的工业ML场景。机器和传感器数据被发送到云端,我们可以利用高性能资源来训练ML模型。一旦我们有了一个训练有素的模型,例如可以分析机器何时可能会出现故障的模型,然后我们可以将该模型返回到工厂生产线上。

通过在生产设备中嵌入GPU进行边缘计算,或者利用本地IIoT网关的资源进行雾计算,我们可以在现场使用我们训练有素的模型。

我们观察下自动化机器人,Python代码将解释高级目标,然后由与硬件直接交互的低级编译代码解释成动作。一个简单的类比是移动你的手臂:你的大脑设定高级意图,而低级的神经系统移动你的肌肉。

随着我们进一步深入工业4.0并找到更多用于AI的创新用途,预计Python工程技能将成为越来越重要的资产。

计算机视觉

要让机器手臂捡起东西,首先需要知道它在看什么。这就是计算机视觉(CV)的作用,它是一种使机器能够使用摄像头作为眼睛并且更关键的是能够识别它们看到的物体的人工智能领域。仅仅考虑到Python在ML中的重要作用,就不难看出Python对CV非常有用。

最初由英特尔在90年代末开发,OpenCV现在是开源CV开发的最佳选择之一。尽管库仍然是用C++编写的,但Python包装器opencv-python对于像深度学习的CV应用非常有用,因为它保留了原始C++代码的速度,同时仍然具备Python的优点。

此外,由于opencv-python创建NumPy数组作为输出,因此我们可以立即将数据转移到其他Python工具,比如SciPy、Matplotlib或其它ML工具。其结果是,一台机器可以看到的不仅仅是像素,它可以区分产品,执行质量保证检查,并以复杂的细节处理其环境。

搭建系统间通信连接的桥梁

当机器制造商创造产品时,他们通常不会将与人机界面(HMI)之外的通信的能力置于首位。再加上许多机器运行专有代码,这些代码非常接近硬件,IT方面的IT/OT融合变得更加困难。如果这些机器不能说相同的语言,我们如何使它们彼此通信?

嗯,我们需要一个翻译器——Python正好能够胜任这项任务。像OpenMTC这样的程序充当M2M和物联网应用程序的中间件或“软件胶水”。例如,如果我们将这个中间件放在像树莓派这样的设备上,然后Python脚本从一个来源获取数据,进行转换,并以另一台机器能够读取的格式发送到不同的机器。

一个简单的示例是任何对温度敏感的制造过程。虽然机械可能无法自行调整温度,但它的温度计可以进行读数,如果温度越过某个阈值,那么它会通知中间件,然后中间件可以告诉加热器降低恒温器的温度。

我们可以将这个逻辑应用于依赖于另一台机器输出的任何机器。此外,我们不仅可以使用这种方法来集成当前的机器以提高性能,还可以打开通往新可能性的大门。

其中一个领域是无人驾驶汽车,通过与道路上的其他车辆通信,它们将优化交通模式,缩短通勤时间,减少事故发生率。可以预料的是,Python将是这个互联未来的关键模块。

总结

虽然我们最终可能不会使用Python来控制机器硬件或直接与制造设备进行接口,但这并不意味着Python没有工业应用。

当我们从大局角度看工业4.0时,我们发现数据是其关键特征。我们正在直接将数字世界叠加到物理世界上。这就是为什么我们需要Python的原因:为了弥合它们之间的差距,处理我们正在生成的前所未有的大量数据,并支持宏观控制。

翻译自:

https://www.plcnext-community.net/news/python-in-industrial-automation/

---------------------------END---------------------------

题外话

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python在工业自动化领域的应用详解 的相关文章

  • 如何使用 Python 的 __import__ 函数执行相当于“从模块导入 *”的操作?

    给定一个带有模块名称的字符串 如何导入模块中的所有内容 就好像您调用了 from module import 即给定字符串 S module 如何获得与以下内容等效的内容 import S fromlist 这似乎没有按预期执行 因为它没有
  • Python执行windows cmd函数

    我知道你可以使用 subprocess 通过 Python 脚本运行 Linux 终端命令 subprocess call ls l for linux 但我找不到在 Windows 上做同样事情的方法 subprocess call di
  • 如何在 Pygame 中制作边框

    我试图让游戏的某个区域周围有边框 并使用一种尺寸来不断更改我的代码 以便它适用于一种尺寸 这是代码 screen xpos ypos height width border width color def draw borders s x
  • 用顶点之间的渐变填充 matplotlib 多边形

    我正在使用 matplotlib 的 Poly3DCollection 绘制多边形 三角形 的集合 三角形位于具有与其关联的颜色的顶点之间 我目前正在用通过平均三个顶点的颜色确定的纯色填充每个三角形 绘制三角形以形成 3D 表面网格 I w
  • 使用 numba 计算向量和矩阵中的行之间的余弦相似度

    找到了这个gist https gist github com FedericoV 0e7d6d8c8794a99a7a42使用 numba 快速计算余弦相似度 import numba numba jit target cpu nopyt
  • 如何将 pymongo.cursor.Cursor 转换为字典?

    我正在使用 pymongo 查询一个区域内的所有项目 实际上是查询地图上一个区域内的所有场馆 我用了db command SON 在搜索球形区域之前 它可以返回一本字典 字典中有一个名为results其中包含场馆 现在我需要在一个正方形区域
  • 计算5个城市之间的地理距离以及每个城市所有可能的组合

    所以我有一个 csv 文件 其中包含 3 列 城市 纬度 经度 我已经使用此代码从这个 csv 文件在 python 中创建了一个数据框 data pd read csv lat long csv nrows 10 Lat data lat
  • 使用 QtDesigner 的 pyQt 信号/槽

    我正在尝试编写一个与 QGraphicsView 交互的程序 我想在 QGraphicsView 中发生事件时收集鼠标和键盘事件 例如 如果用户单击 QGraphicsView 小部件 我将获得鼠标位置 类似的东西 我可以很容易地对其进行硬
  • AMD plaidml 与 CPU Tensorflow - 意外结果

    我目前正在运行一个简单的脚本来训练mnist数据集 通过 Tensorflow 通过我的 CPU 运行训练给了我49us sample和使用以下代码的 3e 纪元 CPU import tensorflow as tf mnist tf k
  • 使用 Pyodbc + UnixODBC + FreeTDS 设置连接设置

    我使用 Pyodbc UnixODBC 和 FreeTDS 进行了设置 但在其中的某个地方设置了一些选项 但我不知道在哪里 根据 SQL Server Management Studio 我的程序在打开连接时发送一些设置 set quote
  • Spark MLLib 存在问题,导致概率和预测对于所有内容都相同

    我正在学习如何将机器学习与 Spark MLLib 结合使用 目的是对推文进行情感分析 我从这里得到了一个情感分析数据集 http thinknook com wp content uploads 2012 09 Sentiment Ana
  • 在 virtualenv 中安装 Python-Dbus

    我正在虚拟环境中运行一个应用程序 需要访问 DBus 主要是与网络管理器交互 我尝试使用 easyinstall 和 pip 安装 Dbus Python 但都失败了 当我尝试这样做时 myvirtualenv borrajax borra
  • Google CoLab 中的 Python 3 支持

    我一直在尝试使用 Jupyter 笔记本https colab research google com https colab research google com 并且默认情况下它们似乎运行 Python 2 7 有什么方法可以在 Co
  • python TypeError:“NoneType”对象没有属性“__getitem__”

    这次我尝试另一个例子索莱姆的博客 http www janeriksolem net 2012 08 reading gauges detecting lines and html 它是一个使用霍夫变换检测图像中的直线和圆的模块 这是代码
  • 向类添加属性的更 Pythonic 方式?

    我正在使用来自两个不同网页的数据集 但对于同一个人 数据集是合法信息 一些数据在第一页上可用 因此我使用正确的信息初始化被告对象 并将我当前没有数据的属性设置为null 这是班级 class Defendant object holds d
  • 如何使用 json 谷歌翻译 api?

    我正在尝试使用来自 python 的 google 翻译和 utf 8 文本 如何调用json api 他们有一个将其嵌入 html 的文档 但我在任何地方都找不到合适的 API 或 wsdl 谢谢 拉斐尔 这是最终对我有用的代码 使用没有
  • 如何在 Robot Framework 中将变量定义为具有列表值的字典

    在我的一个测试用例中 我需要定义一个字典 其中键是字符串 值是字符串数组 我怎样才能在机器人框架中做到这一点 我第一次尝试使用如下所示的构造 但行不通 Variables Dictionary A StringA1 StringA2 B S
  • 在matplotlib中绘制曲线连接点

    所以我试图绘制曲线来连接点 这是我正在使用的代码 def hanging line point1 point2 a point2 1 point1 1 np cosh point2 0 np cosh point1 0 b point1 1
  • App Engine、PIL 和叠加文本

    我正在尝试在 GAE 上的图像上覆盖一些文本 现在他们公开了 PIL 库 这应该不是问题 这就是我所拥有的 它有效 但我不禁认为我应该直接写入背景图像 而不是创建单独的覆盖图像然后合并 我可以用吗Image frombuffer http
  • 字典条目被覆盖? [复制]

    这个问题在这里已经有答案了 我发现一些输入没有存储在 Python 3 的字典中 运行这段代码 N int input How many lines of subsequent input graph for n in range N st

随机推荐

  • MATLAB 绘制动态正弦函数

    一 动态正弦函数 动态正弦函数 二 MATLAB 绘制动态正弦函数代码 clear clc close all Np 100 空间点数 dx 2 pi Np 步长 x 0 dx 6 pi x 范围 f1sin sin x f1cos cos
  • LVGL视频课程更新啦,基于lvgl v8.2版本,课程适配多个平台、多款板子

    视频教程观看 百问网LVGL v8 系列课程 韦东山 监制 教程基于lvgl v8 2版本 课程适配多个平台 多款板子 百问网LVGL v8 视频课程 韦东山 监制 教程基于lvgl v8 2版本 课程适配多个平台 多款板子 视频学习地址
  • mysql集群 配置Keepalived+mm

    集团公司已经在oracle方向有成熟的几十套环境 但是为了节约成本 要尝试下mysql下面先用两台linux x86 Red Hat Enterprise Linux Server release 5 4 Tikanga 和linux6 3
  • O-RAN专题系列-37:管理面-WG4.MP.V07-规范解读-第3章-启动安装流程:NETCONF会话的建立、维护、关闭

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122498392 目录 第3章 Sta
  • 计算机硬件基础——第一章:计算机系统概述

    目录 计算机发展历史 第一代 电子管计算机时代 1946 1957 其主要特点是采用电子管作为基本器件 第二代 晶体管计算机时代 1958 1964 这时期计算机的主要器件逐步由电子管改为晶体管 第三代 集成电路计算机时代 1965 197
  • 旧视频调整为4k视频提高分辨率Topaz Video Enhance AI

    Topaz Video Enhance AI是Mac上的提升视频分辨率的工具 也是拍摄出色画面 并将其变得完美方法 借助软件Topaz Video Enhance AI 可以将您的素材从标清转换为高清 并不会发生模糊 且会得到质量的提升 非
  • Java并发编程系列 - 互斥锁:解决原子性问题

    Java并发编程系列 互斥锁 解决原子性问题 原子的意思代表着 不可分 那么如果我们要保证原子性就必须满足 同一时刻只有一个线程执行 称之为互斥 如果我们能够保证对 共享变量的修改是互斥的 那么 无论是单核 CPU 还是多核 CPU 就都能
  • Elasticsearch框架基础概念

    Elasticsearch ES 是一个基于Lucene构建开源分布式搜索引擎并提供Restful接口 Es是一个分布式文档数据库 JSON数据格式存储 类似MongoDB JSON中的每个字段数据都可作为搜索条件 并且能够扩展至数以百计的
  • Mysql查询数据库表中前几条记录

    Mysql查询数据库表中前几条记录问题 我想好多朋友也会碰到 下面我简单的说下我遇到的情况 且解决方法 希望对好多朋友有许多帮助 下面是我数据库test中表student的数据 其中第二条记录被我删除了 在查询分析器中输入select fr
  • Deep Learning:基于pytorch搭建神经网络的花朵种类识别项目(内涵完整文件和代码)—超详细完整实战教程

    基于pytorch的深度学习花朵种类识别项目完整教程 内涵完整文件和代码 相关链接 超详细 CNN卷积神经网络教程 零基础到实战 大白话pytorch基本知识点及语法 项目实战 文章目录 基于pytorch的深度学习花朵种类识别项目完整教程
  • Java集合 —— Map集合

    目录 1 Map接口和Collection接口的不同 2 Map集合的特点 3 Map集合的功能 4 HashMap原理 谈谈你对HashMap的理解 HashMap的数据插入原理是怎样的 5 HashTable特点 6 LinkedHas
  • Unity游戏开发 怪物巡逻AI

    今天实现的内容是怪物AI 看了一些网上的AI 不是特别符合我的需求 于是就自己研究了一种AI 大致和魔兽类的RPG游戏效果差不多 AI效果如下 1 将怪物分为如下几个状态 待机状态 该状态内有3种行为 原地呼吸 原地观察 和游走 可通过权重
  • 汇编语言(王爽第三版)实验九

    实验九 题目与个人思路 编程 在屏幕中间分别显示绿色 绿底红色 白底蓝色的字符串 welcome to masm 在80 25彩色字符模式下 显示器可以显示25行 每行80个字符 根据题意大致效果如下图所示 11行的起始地址计算10 80
  • C语言典型例题二——杨辉三角

    C语言典型例题二 杨辉三角 杨辉三角 C语言中的位运算有哪些操作符 杨辉三角 1 杨辉三角最本质的特征是 它的两条斜边都是由数字1组成的 而其余的数则是等于它肩上的两个数之和 这就是我们用C语言写杨辉三角的关键之一 杨辉三角是一种数学工具
  • Android Looper原理源码分析

    概要 在很久以前的时候转载了一小篇文章 Android Message Queue Message Looper Handler 白话介绍了一下Android Message Queue Looper Handler这几个概念之间的关系 其
  • windows下 mysql忘记root的密码怎么办

    如果mysql忘记密码无法登入 可以通过绕开输入密码登入的方式进行修改 步骤如下 1 右击 此电脑 点击 管理 打开 计算机管理 点击 服务与应用程序 点击 服务 2 找到mysql 先右击停用 再次右击mysql的打开属性对话框 3 在属
  • 942、增减字符串匹配——贪心+vector初始化方法

    文章目录 一 题目描述 二 题目分析 三 代码实现 四 总结 1 回顾一下 vector texttt vector vector 容器的几种初始化操作 一 题目描述 942 增减字符串匹配 由范围 0 n 内所有整数组成的 n
  • Go中 go-sql-driver 的使用

    go sql driver 是 Go 语言中一个常用的 MySQL 数据库驱动程序 支持 MySQL5 5 MySQL5 6 和 MySQL5 7 本文将介绍如何使用 go sql driver 包连接 MySQL 数据库 安装 在命令行中
  • linux计划任务5个*分表代表什么,linux 設置定時任務crontab

    前言 做自動化測試寫的腳本需要設置定制任務 在指定的時間去執行 這就需要用到定時任務 之前用jenkins可以在里面設置定時任務 很好用 其實在linux上也可以用crontab做定時任務 cron 在LINUX中 周期執行的任務一般由cr
  • Python在工业自动化领域的应用详解

    当我们开始讨论在工业自动化应用中使用哪种编程语言时 通常我们会首先谈论IEC 61131 3标准中用于可编程逻辑控制器 PLC 的语言 比如经典的梯形图 LD 或结构化文本 ST 对于机器人等应用 我们经常看到低级编译语言 比如C语言 这几