这个节目已被主持人标记为“干净”。
--------------------
01 介绍
这是 8 部分系列节目的第二集。
02
在上集节目中,我们讨论了PLC 的先驱,特别是继电器逻辑。
在本集节目中,我们将讨论继电器逻辑是如何从实际硬件组件中表达为软件的。
03
将要涵盖的主题包括:
* 工业早期计算机。
* 第一个 PLC。
PC 与 PLC - 名称的区别在哪里。
主要品牌是谁。
PLC 实际长什么样。
机器架构。
PLC 程序。
扫描。
PLC 编程语言。
PLC 编程语言与更传统计算机编程语言相对应的流行程度。
--------------------
早期工业中的计算机
计算机在工业中使用的时间相当早。
微计算机被用于一些大型工业,以控制电力厂等设备。
例如,DEC PDP8用于控制CANDU核电厂的重新加燃料机器。
这些机器会加载和卸载反应堆燃料,在反应堆运行时每天持续进行。
05
首次在商业市场上销售的基于微处理器的计算机是法国的MICRAL,基于Intel 8008。
它作为一种成本效益高的替代品出售,用于替代工业中的微计算机。
它比通常被认为是第一台个人计算机还早。
所以你可以看到,工业界并不抗拒采用新技术。
06
然而,微型计算机是大型复杂系统的一部分,不适合工厂楼。
它们在非常大型复杂集成系统中具有特定的应用场景,但不能控制许多工厂中生产汽车或家电等单个机器。
07
需要的是能够适应标准电箱的东西,
能够承受工厂中遇到的温度,
能够承受振动和噪音,
对电压波动有耐受性,
直接与传感器和执行器接口。
它可以由熟悉要控制流程的工程师、技术人员和工匠轻松编程,但他们对计算机的经验很少或没有。
08
这需要一个涵盖硬件、软件和通过工业供应零售商分销产品的完整集成套件。
满足这些标准的东西是成为PLC所需要的。
--------------------
09 历史
许多历史都指向一位美国开发者,后来成为Modicon。
然而,他们的第一个硬件更像是一个概念验证,而不是一个可行的商业产品。
事实上,美国、欧洲和日本的多个公司都在研究这个问题,并在1970年代初同时发布了类似的产品。
10
这个想法在实施之前早了几年。
例如,通用汽车在20世纪60年代中期曾向工业控制设备供应商请求一种可编程控制设备,以取代继电逻辑。
这向潜在供应商展示了这类产品的市场,并让他们更清楚地了解了客户的需求。
11
这是因为当时开发出了第一个8位微处理器,加上来自微计算机行业的可用片处理器和其他组件,才使得这一切成为可能。
12
人们知道该做什么,问题是等待合适的组件硬件开发出来。
微计算机已经在工业中得到应用,但通常位于控制室。
PLC(可编程逻辑控制器)的出现是为了将该技术从控制室搬至车间。
13 台PC与PLC - 名称的含义
早期这些系统被称为PLC,意为“可编程逻辑控制器”,或PC,意为“可编程控制器”。
不同的供应商偏好不同的术语,但两者都很常见。
我有一本书,曾经是这个行业的标准参考手册之一,于1989年出版,并将其称为可编程控制器或PC。
14
术语PC也用于表示“个人电脑”,但那时并不是什么大问题。
然而,一家大型公司决定将其进入个人电脑市场称为“IBM PC”,突然“PC”成为桌面电脑的通用术语。
15
经过长时间的努力,即使是最大的供应商也屈服了,放弃了战斗,并转向使用“PLC”术语。
因此,我将在这个播客系列中使用“PLC”术语,即使是在讨论最初被称为“PC”的产品时。
主要品牌是谁
主导该行业的公司在相当早期通常是已经生产工业电气硬件的公司。
这些是
西门子
艾伦·布拉德利,后来被称为罗克威尔
施耐德
三星
欧姆龙
17
它们仍然是在这个行业中占主导地位的公司,尽管市场上有许多小品牌,尤其是在价格较低的领域。
它们都是工业控制硬件的广泛供应商,这样你就可以使用它们仅有的产品构建你控制系统的所有或几乎所有部件。
18
每个都销售一个集成的硬件和软件包,包括完全专有的开发软件。
如果你认为主干业务有很强的供应商锁定,你还没有见过工业市场。
--------------------
19 这些东西中有一种实际长得是什么样子?
在这个时候,你可能仍然非常困惑PLC到底是什么。
我将尝试用基本术语描述一种,通过举一个例子。
最小最简单的是被称为“鞋盒”PLC。
这些基本上是一个矩形盒子,有塑料外壳。
20
以下是典型低端型号Mitsubishi FX3U-32M的尺寸。
根据手册中的规格,它宽度为150毫米,高度为90毫米,深度为86毫米。
21
它可以通过扣入称为DIN轨道的方式安装到电箱面板上。
DIN轨道是标准的安装系统,使用的是U形金属条,U的每个端口都有一个唇。
你将DIN轨道螺丝到电箱面板上,大多数工业组件,如PLC、终端块、断路器,以及各种其他东西,会简单地扣在它上,准备连接电线。
22
PLC顶部和底部有终端,可以连接来自机器其他部位你想感知或控制的电线,如按键、指示灯、接近传感器和阀门。
23
输入位于顶部,输出位于底部。
FX3U-32M有16个输入和16个输出。
这些I/O可以为24伏直流电或100-120伏交流电,具体取决于型号。
它也可能有小型的继电器用于输出。
虽然交流输入/输出曾经占主导地位,但几十年前,24V直流电成为大多数行业的标准,因为它更容易与电子设备接口,并且还允许更便宜、更紧凑的布线。
24
通过在同一个DIN轨道上连接额外的I/O模块,可以添加更多的输入和输出,最多可达256个I/O。
连接通常是通过短的带线缆,这些缆插到相邻的模块上。
这些I/O模块看起来像主PLC,但只是增加了I/O功能。
25
PLC内部有一个CPU、内存和固件。
这个模型有64K“步骤”的内存,可以被认为是可以包含的指令数量。
程序在RAM中运行,但可以添加一个小型闪存记忆设备来保存程序。
有一个开关,可以让你启动或停止用户程序。
有一个端口,你可以使用它将PLC连接到笔记本电脑上,使用电缆下载你的程序。
26
PLC市场最大的部分是这些“鞋盒”风格的。
然而,也有更大的型号,它们具有更多的I/O,更多的内存,更快的CPU等。
这些是用于协调大型装配线和类似任务的。
这些是称为机架系统的,其中机架是一个空的盒子,前面开放,背面有背板总线。
你将主CPU插到总线中,通常在最左边的位置,然后将I/O模块插到机架中。
I/O模块是高、薄、完全封闭的盒子,I/O终端沿着前面排列。
27
你在这个阶段应该对它们的外观有个大致的了解,所以我暂时不去描述它们的物理特征,而是继续探讨它们是如何工作的,以及它们与像Raspberry Pi这样的东西有何不同。
--------------------
28机架构
实际上,定义PLC的不是硬件。
相反,是软件系统架构。
我所了解的所有PLC都具有共同的一套功能。
29数据表
数据表只是内存的一个块,可能被划分为不同的部分,也可能没有。
所有的逻辑,以及所有的输入/输出(I/O),通过在数据表的地址写入和读取来实现。
30个I/O
每个输入和输出点都映射到PLC中的固定内存地址。
要读取输入的状态,你需要读取其内存地址。
要改变输出的状态,你需要写入其内存地址。
31
这些数字I/O表现为单位布尔值。
PLC编程语言包含指令,允许直接读取或写入单位位,而无需像使用常规编程语言时那样掩盖其他位。
到目前为止,我只提到数字I/O,它们是单位开/关值。
其他类型的I/O有32种。
许多可编程逻辑控制器(PLCs)也具有其他类型的输入/输出(I/O),例如
模拟I/O,它代表可变电压,而不是仅仅是开/关值。
例如,您可能希望从热电偶读取温度,其中电压水平随温度变化。
这些通常被映射到数据表作为字节或单词值。
33个内部位或布尔存储器
会有一系列单位位或布尔存储器,用于内部逻辑状态。
您的程序可能需要产生一系列中间逻辑值,并将它们存储在这些内部位或标志中。
34个定时器和计数器
机械控制通常涉及时间和计数。
定时器和计数器被映射到数据表中。
定时器和计数器的预设值和数值可以作为字节读取,并且会有位地址指示定时器或计数器的状态,比如它是否达到了预设值并完成了任务。
35 整数和浮点数值
将会有字节地址,可以存储整数和浮点字节。
如果你需要进行一些数学计算并存储结果,你将它们保存为整数或浮点字节。
36 类型内存
与编程像个人电脑这样的事情不同,其中你只需要一组未区分的字节,然后由你的软件给它们赋予意义,PLC 数据表内存有定义的类型和含义,系统固件强制执行正确的内存访问方法。
数据表的大小为 37 个。
数据表的大小差异很大。
更大的数据表允许编写更大的、更复杂的程序。
通常,新一代的PLC数据表比旧的要大,
而价格较高的PLC数据表比同一代的价格较低的模型要大。
示例 38
选择一台当前PLC作为物理尺寸的示例,我将选择一台旧且过时的PLC作为数据表的示例。
西门子S5-100系列是一款小型PLC,有多种尺寸。
基本的S5-100的数据表大小如下。
39
数字I/O的最大输入和输出数量合计为128。
模拟输入和输出最大数量合计为8。
标志或位存储器为1024。
定时器 - 16
计数器 - 16
40
S5-103在相同基本包装内提供了更多的一切,但当然价格更高。
数字I/O的最大输入和输出数量合计为256。
模拟输入和输出最大可达32个。
标志或位内存为2048。
定时器 - 128
计数器 - 128
--------------------
41 PLC程序
PLC内集成了相当于操作系统的虚拟机。
作为程序员,你使用供应商的专有开发软件,通常称为“PLC编程软件”,为PLC编写应用程序。
42
然后,你通过某种电缆将PC连接到PLC,并将程序下载到PLC中。
程序被存储在PLC的RAM中。
可能有闪存内存,在断电时备份RAM,这样你就不会丢失程序。
在闪存可用之前,通常需要电池来保持静态RAM内存。
43
PLC中只有一个程序。
没有文件系统,只有程序内存和数据表。
当PLC启动时,它会运行你编写的程序。
它会持续运行程序,直到你关闭电源或将运行/停止开关设置为停止位置。
44
我稍后会回到编程,但我们需要先讨论这些基本点,然后我才能描述我们需要涵盖的进一步概念。
--------------------
扫描:45次
理解PLC的一个关键点是“扫描”概念。
它的工作原理如下。
有一个称为扫描的重复循环。
46
首先,PLC读取所有物理输入,并在数据表中更新相应的输入地址。
然后它运行用户程序一次。
最后,它读取数据表中的输出地址,并将它们写入相应的物理输出。
然后它从步骤1开始重复扫描。
47
扫描时间从几毫秒到数百毫秒不等,取决于PLC模型。
较旧的PLC和价格较低的PLC往往速度较慢。
然而,随着集成电路技术的进步,程序变得更快了。
48
PLC有一个看门人定时器。
这是后台运行的定时器,在扫描开始时重置。
49
如果扫描时间过长,看门人将触发并停止程序,将输出设置为定义的状态,无论是关闭所有输出还是保持最后一个值。
这被称为“故障”处理器。
50
看门人故障可能由程序时间过长或使用大量非常慢的指令引起,在某些情况下,这可能是由程序中的错误引起的。
然而,这种最后一个原因并不像你可能想象的那么常见或容易引起。
--------------------
51 PLC 编程语言
这一切的关键是PLC中使用的编程语言独特的工作方式。
我首先简要介绍两种主要编程语言,然后解释它们在PLC中作为完整系统的一部分是如何工作的。
52 梯形逻辑
存在多种编程语言,但主要的一种被称为梯形逻辑。
如果你听过之前的剧集,"梯形"这个词会让你想起它。
在机器由电机械继电器控制时,指定并记录继电器类型及其之间连接的电气图被称为"梯形图"。
53
PLCs 简单地将这些梯形图复制到您的计算机屏幕上,在编程软件中使用相同的标准图符号。
54
您不需要像使用CAD一样绘制符号。
您只是使用键盘或鼠标指定您希望该符号在当前光标位置输入,或希望该线从这里连接到那里。
当您完成一步时,软件会在某个点检查它是否语法正确。
然后,您继续输入下一步,一个接一个,直到您的完整程序完成。
55 指令列表
另一种表示形式称为“指令列表”,尽管不同的供应商可能使用其他术语。
这是文本表示,看起来像某种汇编语言。
然而,实际上它是一个非常复杂的结构,只是以文本和一些编程软件的形式表现不同。这些软件允许你在电路图和指令列表模式之间切换,自动翻译两者之间。
56
这应该能让你了解PLC如何执行电路图。
幕后,编程软件会将图表翻译成指令列表,然后PLC会通过解释器执行这些指令,或者将它们编译为机器代码并执行。
57种其他编程语言
还有其他编程语言,但它们很少被看到。
我不会详细描述它们,只是简要提及。
58
一种叫做顺序函数图的。
这是流图的一种,设计用于表现复杂的序列,包括那些具有替代或并行路径的。
这个原始名称是Grafcet,拼写为G R A F C E T。
这代表“命令步骤转换功能图”。
它不仅是一种编程语言,即使使用的PLC不支持它,它也是一种非常好的设计和分析工具。
59
另一个是功能块图。
这是一种类似于流程图的图形语言,在工艺工业中得到应用。
据说主要用于化学制造等行业。
然而,它似乎非常专业,大多数使用PLC的人从未见过它,许多人甚至听说过它。
60
另一种语言是结构文本。
这显然是来自Modula-2的,与它非常相似。
如果你不熟悉Modula-2,它是由Nikolas Wirth创建的,旨在成为Pascal的继承者,它就是从Pascal中衍生而来的。
结构化文本似乎受到一些学术人员的喜爱,但似乎在实际应用中没有太多用处。
如果你使用它,你将失去PLC中内置的监控和调试设施,所以除了少数特定应用外,它几乎没有用处。
还有其他一些语言,主要是专有语言,通常使用流程图等。
61种PLC语言是非阻塞的。
PLC程序的重要之处在于它从上到下,从左到右执行,不间断或不阻塞。
没有等待输入或输出或系统调用来返回。
每个步骤立即产生一个结果,写入内存地址,或激活定时器或计数器。
每个步骤在每次扫描时都会被执行。
62
你可以用传统的计算机编程语言重现这一点。
在梯形逻辑中,这是语法的一部分,用其他方式做起来非常困难或不可能。
我将用Python示例说明我的意思。
63
a = (b 或 c) 且不是 d
64
如果b或c为真,d为假,则a设置为真。
如果b和c为假,或d为真,则a为假。
65
现在想象一下,我们不是执行一次这个陈述,而是重复执行它。
这个陈述永远不会阻挡执行。
它会立即产生结果。
现在让我们稍微修改一下。
66
a = (b 或 a) 且非 d
67
请注意,我们用 a 替换了 c。
现在a的值取决于a的先前值以及b和d。
然而,一旦a变为真,b的值就不再重要了,因为b与a在一个或条件中。
如果我们反复执行它,只有当 d 为真时,a 才会变为假。
68
这是一个标准的按键电路,也称为“封装电路”,因为它“封装”了起始条件。
69
b 是起始按键,具有正常打开的接触点。
d 是停止按键,具有正常关闭的接触点。
a 是一个继电器,其一个接触点用于保持它开启。
70
如果你用实际的按键和继电器连接它,或者将其编程到带有梯形逻辑的PLC中,它将以相同的方式工作。
PLC 程序将由一排排的逻辑组成,反复扫描执行,仅在更新其输入/输出时暂停。
71 异步编程
一些人可能会认为这种周期性扫描听起来像异步编程,这是当今网络服务器应用程序中非常流行的。
本质上,这完全是相同的原则。
72
使用异步编程时,您的程序绝不能使用阻塞指令,执行会以重复循环的形式进行。
PLC通过不包含任何阻塞指令来解决这个问题,并且许多PLC不允许向后跳转。
几十年前,工厂里的工人穿着工装,正在进行异步编程,而当时“酷孩子”还未听说过这一点。
73种PLC编程语言中,大多数是视觉或图形语言。
如果梯子、顺序功能图或Grafcet和功能块图听起来像视觉编程语言,它们确实是。
实际上,梯子可能是最早期在商业中使用的一种视觉语言。
维基百科将可视化编程语言定义为:
74
在计算领域,可视化编程语言(可视化编程系统,VPL,或VPS),也称为图示编程、图形编程或块编码,是一种编程语言,允许用户通过操纵程序元素的图形方式创建程序,而不是以文本形式指定它们。VPL允许使用视觉表达、文本和图形符号的空间排列,作为语法元素或次要符号。例如,许多VPL基于“盒子和箭头”的想法,其中盒子或其他屏幕对象被视为实体,用箭头、线或弧连接它们,代表关系。VPL通常是低代码开发平台的基础。Scratch是一个可视化编程语言的示例。
75
引文结束。
如你所见,今天酷的东西在40多年前的工厂车间就已存在。
--------------------
76. PLC编程语言的流行度
PLC几乎是完全专有的。
几乎每个供应商都有自己对每种语言的专有理解。
你如何编程任何特定的PLC由该供应商的编程软件决定。
如果供应商不支持它,你就无法使用它。
一个供应商可能甚至有多个不兼容的产品线,需要用不同的软件以不同的方式编程,尽管这种情况现在并不像从前那样常见。
77
几乎所有可编程逻辑控制器(PLCs)都支持Ladder编程。
有些还支持指令列表以及Ladder编程。
其他任何东西都很少见。
78
顺便说一句,Tiobe指数也列出了Ladder逻辑。
对于那些还没有听说过它的人,Tiobe指数,即T I O B E,是一个网站,根据各种标准列出众多编程语言的流行程度。
79
他们的列表第一是Python,目前为19.98%。
第二是C,占11.55%。
80
在撰写本文时,Ladder Logic 排在第 46 位,评分为 0.28%,略低于 Erlang,高于 Haskell。
我不确定这是否意味着梯形逻辑不像你想象的那么不常见,或者是否意味着Erlang和Haskell实际上比你想象的更不常见。
--------------------
81集摘要
在本期中,我们涵盖了:
工业控制计算机的早期历史
PLC早期历史,包括它们是如何得到其名称的。
哪些是主要品牌?
它们的外观
82
抽象机器架构的基本描述
关于PLC程序的简要概述
扫描概念
主PLC编程语言
次要PLC编程语言
每种编程语言的相对受欢迎程度
83
在下一集里,我们将探讨早期PLC之一,当时它们开始被广泛使用的时代。
这种PLC非常成功,对许多公司来说是它们使用的第一个PLC。
这是艾伦·布拉德利PLC2。
84
这是八部分系列中的第二部分。
--------------------
