在工业自动化领域,上位机与 PLC 的协同工作至关重要。然而对于许多初学者而言,如果不了解 PLC,学习上位机可能会感到无从下手。以下将为大家详细介绍在不熟悉 PLC 的情况下,如何逐步学习上位机。
目前常用的 PLC 品牌和汽车品牌一样,分成多个系列,主要有日系、德系、美系和国产。不同系列的 PLC 在性能、特点和应用场景上各有差异。
- 日系 PLC:代表品牌有三菱、欧姆龙、基恩士、松下等。日系 PLC 以其小巧、精致、功能丰富且性价比高而闻名,广泛应用于小型自动化设备和电子制造等行业。
- 德系 PLC:西门子和倍福是德系 PLC 的典型代表。德系 PLC 以其稳定性、可靠性和强大的处理能力著称,常用于大型工业自动化系统和高端制造业。
- 美系 PLC:罗克韦尔 AB 和 GE 是美系 PLC 的代表。美系 PLC 在大型自动化系统和过程控制领域有着广泛的应用,具有较高的开放性和兼容性。
- 国产 PLC:汇川、台达、信捷等是国产 PLC 的佼佼者。近年来,国产 PLC 在性能和质量上不断提升,凭借价格优势和本地化服务,在国内市场占据了一定的份额。

图 1:常见 PLC 品牌系列
PLC 是一种可编程逻辑控制器,基于 “循环扫描” 方式运行,扫描周期通常在几毫秒到几十毫秒,具体取决于程序复杂程度和 CPU 性能。每个扫描周期包含以下三个阶段:
- 输入采样阶段:PLC 将物理输入端口的状态(如信号)性读取到输入映像寄存器中,确保程序执行期间输入状态的一致性。这就好比在一个大型工厂中,各个传感器将设备的运行状态信息收集起来,统一发送到一个信息中心,以便后续处理。
- 程序执行阶段:CPU 按照梯形图、指令表等编程语言的逻辑顺序进行运算,处理输入数据,生成中间结果并存储在输出映像寄存器中。在此阶段,输入映像寄存器的值保持不变,即使实际输入状态发生变化,也不会影响当前周期。这类似于工厂中的生产流程,一旦开始执行某个生产环节,就不会受到外界临时变化的干扰。
- 输出刷新阶段:将输出映像寄存器的结果性传送到,驱动执行器动作(如启动电机)。完成输出刷新后,PLC 重新进入下一轮扫描周期。不同的 PLC 项目主要是输入输出数量及程序逻辑复杂程度不一样。
PLC 作为一种下位机,上位机与 PLC 之间主要通过通信进行交互,而通信的终目的是为了实现数据交互,数据载体即为存储区。因此,学习上位机,一定要了解 PLC 存储区。从数据类型来看,PLC 存储区无非分为 3 类,一类是以字节为单位的,一个是以布尔为单位,一个是以字(即寄存器)为单位。从读写特性来看,对于 PLC 来说,除了输入存储区,比如西门子的 I 区,三菱的 X 区,其他存储区都是可读可写的。综合来看,对于我们来说,PLC 存储区主要分为西门子 PLC 和其他 PLC 两种类型。
- 西门子 PLC:西门子 PLC 存储区主要有 I 区、Q 区、M 区、DB 存储区、V 区(即 DB1),对于 C 区和 T 区定时器,一般使用较少,我们一般主要使用 DB 存储区 / V 区。西门子 PLC 存储区以字节为单位,每个字节中包含 8 个位,每 2 个字节组成一个字,每 4 个字节组成一个双字或单精度浮点数,每 8 个字节组成一个长字或双精度浮点数。例如,VB100 表示 V 区中第 100 个(从 0 开始)字节;VW100 由 VB100 + VB101 两个字节组成;VD100 由 VB100 - VB103 四个字节组成;V100.0 表示 VB100 中的第 0 个位。通过地址只能确定所占的字节数,不能确定具体数值,还需要配合数据类型,比如 VD100,既可以表示有(无)符号整型,也可以表示单精度浮点数。另外,西门子对数据类型的定义与我们 C# 中的数据类型是不一样的。

图 2:西门子 PLC 存储区示例

图 3:西门子 PLC 数据类型与 C# 数据类型对照表 - 三菱 PLC:三菱、欧姆龙、信捷、汇川、台达等日系或国产 PLC,它们的存储区都是比较类似的。以三菱 FX5U PLC 为例,其存储区主要有 X、Y、M、D、W,一般主要使用 M 区和 D 区,X 区、Y 区、M 区是布尔存储区,D 区、W 区是字存储区。对于 X 区 Y 区,一般会是 8/16 进制,M 区是 10 进制,X10 (8 进制) 表示的是 X 区的第 8 个地址,M10 表示的是 M 区的第 10 个地址。对于 W 区,一般是 16 进制,而 D 区是 10 进制,W0A 表示的是 W 区的第 10 个字,D10 表示的是 D 区的第 10 个字。这里的进制不用过于纠结,以实际 PLC 提供的地址表为准。每个字包含 16 个位,以 D100 为例,D100 包含 D100.0 - D100.F,这里的位一般会写成 16 进制。每 2 个字组成一个双字,可以表示整型或单精度浮点数,比如 D100(双字 / 浮点数)就是由 D100 和 D101 组成而成。如果学过 Modbus 就会发现,三菱 PLC 的地址模型和 Modbus 是非常相似的,X 区映射输入,Y 和 M 映射输出线圈,D 和 W 映射保持寄存器,而输入寄存器一般不使用。

图 4:三菱 PLC 存储区示例

图 5:三菱 PLC 存储区相关说明

图 6:三菱 PLC 存储区相关说明 2

图 7:三菱 PLC 双字组成示例

图 8:三菱 FX5U PLC 的 Modbus 映射表
上面说的存储区和地址模型都是基于地址偏移的。上位机通信还有另外一种方式,就是基于标签通信,以倍福 PLC 和罗克韦尔 AB PLC 为代表,其他 PLC 也慢慢开始支持,比如西门子、汇川等。标签通信,顾名思义,就是不再需要寻址,可以直接通过变量名称来实现通信。这个主要由通信协议决定,目前支持标签通信的协议包括倍福的 Ads 通信协议,AB、欧姆龙的 EtherNet/IP 通信协议、西门子 PLC 的 S7Plus 通信协议以及 OPCDA/UA 通信等。
