三菱FX5U PLC从入门到实战:GX Works3编程与以太网通信全解析
最近在整理三菱PLC相关的技术资料时,发现很多朋友在软件安装、通信配置、程序编写等基础环节反复踩坑。网上的资料要么过于零散,要么版本老旧,导致从入门到项目落地困难重重。本文将以三菱FX系列PLC为核心,整合一套从软件安装、硬件连接到编程实战的完整闭环方案。无论你是刚接触PLC的工控新人,还是需要快速查阅特定配置的工程师,都能在这里找到可直接复用的代码、清晰的配置步骤和经过验证的避坑指南。我们将重点覆盖GX Works2/3软件的使用、FX5U等主流型号的以太网通信设置、梯形图编程核心要点,以及如何与上位机(如C#、Python)进行数据交互。
1. 三菱PLC技术全景与核心概念解析
在深入实操之前,我们有必要对三菱PLC及其相关生态建立一个清晰的认知框架。PLC(可编程逻辑控制器)作为工业自动化的大脑,负责接收输入信号、执行逻辑运算,并驱动输出设备。三菱电机(Mitsubishi Electric)的PLC产品线丰富,在中国市场占有率很高,尤其是FX系列,因其高性价比和稳定性,在中小型设备中应用极为广泛。
1.1 三菱主流PLC系列与选型对于初学者和大多数项目,接触最多的主要是以下两个系列:
- FX系列:小型PLC的代表,包括经典的FX3U、FX3G,以及新一代的FX5U、FX5UC。它们结构紧凑,指令丰富,支持多种通信扩展,是学习入门和单机设备控制的首选。
- Q/L系列:中大型PLC,用于复杂的系统控制、过程控制和运动控制。性能更强,模块化程度高,支持多CPU和冗余系统。
本文的实战将主要围绕FX5U这款新一代小型PLC展开,它集成了以太网端口,支持SLMP(Seamless Message Protocol)等现代协议,学习它对于理解当前工控网络化趋势非常有帮助。
1.2 核心软件生态:GX Works2 与 GX Works3编程软件是开发者与PLC对话的桥梁。三菱提供了两款主力软件:
- GX Works2:这是一款经典的集成开发环境,支持FX系列、Q系列、L系列等。它使用“工程”来管理所有配置和程序,支持梯形图、指令表、SFC等多种编程语言。对于FX3U及之前的型号,它是主要工具。
- GX Works3:这是为新一代iQ-R/L/FX5U系列PLC设计的软件。界面更现代化,功能也更强大,例如支持结构化编程(ST语言)、更友好的仿真和调试功能。如果你的PLC是FX5U,强烈建议使用GX Works3。
简单来说,FX5U用GX Works3,FX3U及更早型号用GX Works2。选择错误的软件可能导致无法连接或部分功能不可用。
1.3 关键通信协议与概念PLC从来不是孤岛,它需要与触摸屏(HMI)、机器人、上位机软件、传感器等设备交换数据。理解通信是项目集成的关键。
- 编程口通信:通过USB或RS422电缆连接电脑和PLC,用于程序上下载和在线监控。这是最基础、最可靠的连接方式。
- 以太网通信:FX5U内置了以太网口,这是实现高速数据交换和远程访问的核心。常用的协议包括:
- SLMP (Seamless Message Protocol):三菱定义的基于TCP/IP或UDP的协议,用于与上位机(如C#、Python程序)或第三方设备通信。
- MC协议 (MELSEC Communication Protocol):一种较老的协议,也广泛用于上位机通信。
- Modbus TCP:工业领域通用的协议,方便与非三菱设备互联。
- CC-Link:三菱主推的现场总线网络,用于连接远程I/O站、伺服驱动器、变频器等设备,实现高速、稳定的分布式控制。
2. 环境准备:软件安装、驱动与硬件连接
工欲善其事,必先利其器。一个稳定可靠的开发环境是后续所有工作的基础。本节将详细讲解从软件安装到物理连接的全过程。
2.1 GX Works3 安装与注意事项由于FX5U是当前主流,我们以GX Works3的安装为例。GX Works2的安装过程类似。
- 获取安装包:请通过三菱电机自动化官网或授权渠道获取正版软件安装包。安装前,请暂时关闭所有杀毒软件和防火墙,以免安装过程中关键组件被拦截。
- 安装步骤:
- 解压安装包,以管理员身份运行“
Setup.exe”。 - 按照安装向导提示,选择安装目录(建议使用默认路径,避免中文和特殊字符)。
- 在安装类型选择界面,建议选择“典型安装”,它会安装所有必需组件。
- 序列号输入环节,请使用合法的序列号。
- 安装过程中可能会提示安装“MELSOFT通用组件”和“MELSOFT传输驱动程序”,这些是通信的基础,务必全部安装。
- 解压安装包,以管理员身份运行“
- 安装后验证:安装完成后,无需立即重启电脑。首先尝试打开GX Works3,如果能够正常启动,则说明主程序安装成功。接下来需要安装USB驱动。
- USB驱动安装(关键步骤):这是连接PLC的必经之路,也是最容易出问题的地方。
- 用USB编程线(通常为USB-A to mini-USB)连接电脑和FX5U的USB端口。
- 打开电脑的“设备管理器”。如果看到“其他设备”下有一个带黄色感叹号的“USB Serial Converter”或类似设备,说明系统没有自动识别。
- 驱动安装方法:在GX Works3安装目录下(例如
C:\MELSOFT\Easysocket\USBDrivers),找到对应的驱动文件夹。在设备管理器中右键点击未识别的设备,选择“更新驱动程序软件” -> “浏览我的计算机以查找驱动程序软件”,然后定位到上述驱动目录,让系统自动搜索安装。 - Windows 11/10 兼容性:如果遇到驱动签名问题导致安装失败,可以尝试在高级启动选项中“禁用驱动程序强制签名”。(此操作有安全风险,请在了解后果后操作,且完成后建议恢复)。
2.2 硬件连接与上电
- 供电:为PLC接入符合规格的24V直流电源。注意区分“S/S”端子的漏型(Sink)和源型(Source)接线,这决定了输入信号的公共端接法。FX5U通常默认为漏型(公共端S/S接24V+,输入信号X点接通时电流流入PLC)。
- 连接编程线:将USB编程线可靠地连接到PLC的USB端口和电脑的USB口。
- 连接输入/输出:根据你的控制需求,将按钮、传感器等连接到输入点(X0, X1...),将继电器、指示灯等连接到输出点(Y0, Y1...)。务必确保接线正确,电源匹配,防止损坏PLC或外围设备。
- 上电:接通电源,观察PLC面板上的“POWER”指示灯是否常亮,“RUN/STOP”开关是否处于“STOP”状态(初始状态)。
3. 创建第一个工程:从新建到程序下载
现在,让我们打开GX Works3,创建你的第一个PLC工程,并完成程序的编写和下载。
3.1 新建工程与PLC型号选择
- 打开GX Works3,点击菜单栏的“工程” -> “新建”。
- 在弹出的对话框中,进行关键设置:
- 系列:选择“MELSEC iQ-R/FX5”。
- 机型:根据你的实际硬件,选择“FX5U”或“FX5UC”。如果是不带扩展的基本单元,就选“FX5U”。
- 程序语言:选择“梯形图”。这是最直观、最常用的PLC编程语言。
- 工程名和路径:为你的工程起一个名字,并保存到一个合适的目录(同样,避免中文路径)。
- 点击“确定”,软件会为你创建一个包含基本配置的新工程。
3.2 认识工作界面与编写简单梯形图工程创建后,你会看到主界面。左侧是“工程”导航树,包含“参数”、“程序”、“设备”等。中间是梯形图编辑区。 我们来编写一个最简单的“点动控制”程序:按下按钮(X0),灯(Y0)亮;松开按钮,灯灭。
- 在梯形图编辑区,从左侧的“工具条”或按F5键,选择一个“常开触点”。
- 点击编辑区的起始位置,会弹出输入框,输入“
X0”,回车。 - 接着,从工具条选择“线圈”(或按F7键),放在触点右侧,输入“
Y0”,回车。 - 最后,需要一条“右母线”来结束这个逻辑行。通常软件会自动添加。你的第一行梯形图应该看起来像这样:
这行程序的含义是:当输入X0为ON(导通)时,输出线圈Y0得电(ON)。|---[ X0 ]---( Y0 )---|
3.3 程序转换、编译与下载
- 转换:编写或修改梯形图后,必须进行“转换”(按F4键或点击工具栏的转换按钮)。转换会将梯形图逻辑编译成PLC可执行的机器码。如果程序有语法错误,转换会失败并提示。
- 连接设置:在下载前,需要告诉软件如何连接到PLC。点击菜单“在线” -> “当前连接目标” -> “连接目标设置”。
- 在“连接目标设置”窗口中,双击“Connection1”。
- 在“PC侧I/F”中,选择你使用的连接方式,例如“USB”。
- 在“PLC侧I/F”中,选择“CPU模块”。
- 点击“通信测试”按钮。如果成功,会弹出“与FX5U连接成功”的提示。这证明你的USB驱动和硬件连接都是正确的。
- 下载:通信测试成功后,点击“在线” -> “写入至PLC”。
- 在弹出的对话框中,通常选择“参数+程序”,然后点击“执行”。
- 软件会将工程中的程序和必要的参数写入PLC。写入完成后,可能会提示“是否远程STOP->RUN?”,选择“是”,让PLC进入运行模式。
- 在线监控与调试:下载后,点击“在线” -> “监视开始”(或按F3键)。此时,梯形图中的触点
X0和线圈Y0会显示蓝色,表示它们当前的状态(蓝色为ON,灰色为OFF)。现在,你可以手动触发PLC上的X0输入端子(或用导线短接X0和COM),观察梯形图中X0和Y0是否变蓝,同时观察PLC输出端子Y0对应的指示灯是否亮起。
4. FX5U以太网通信实战(SLMP协议)
FX5U内置的以太网口是其一大亮点。我们以最常用的SLMP协议为例,讲解如何配置PLC端,并提供一个Python上位机的通信示例。
4.1 PLC端网络参数设置要让PLC通过网络与外界通信,首先需要为其设置IP地址。
- 在GX Works3的“工程”导航树中,展开“参数”,找到“模块参数”。
- 双击“以太网端口”,打开配置窗口。
- 基本设置:
- “IP地址设置”:选择“直接设置”。
- 输入PLC的IP地址、子网掩码、默认网关。例如:IP
192.168.1.100,子网掩码255.255.255.0,网关192.168.1.1(根据你的实际网络规划填写)。
- 打开设置:
- 这是配置通信协议和端口的关键。点击“打开设置”。
- 在“以太网端口(打开设置)”中,点击“添加新连接”。
- 在“协议”中选择“TCP”。
- 在“打开方式”中选择“MC协议”。
- 设置一个“端口号”,例如
5000(需确保此端口未被占用)。 - “固定缓冲”和“通信数据代码”通常保持默认。
- 点击“结束设置”保存。
- 写入参数并重启:将修改后的参数写入PLC。网络参数修改后,通常需要将PLC从RUN切换到STOP,再切回RUN,或者断电重启,才能使新IP地址生效。
4.2 Python上位机通信示例(使用SLMP)配置好PLC后,我们可以用Python编写一个简单的上位机程序来读写PLC的数据。这里使用一个第三方库pymcprotocol,它实现了三菱MC/SLMP协议。 首先安装库:pip install pymcprotocol
# 文件:read_write_plc.py import time from pymcprotocol import FX5U # 1. 创建协议对象,指定PLC型号为FX5U plc = FX5U() # 2. 连接到PLC # 参数:PLC的IP地址, 端口号(与PLC打开设置中一致), 连接超时时间(秒) try: plc.connect("192.168.1.100", 5000, timeout=3) print("成功连接到PLC") except Exception as e: print(f"连接失败: {e}") exit() try: # 3. 批量读取位软元件(例如,读取X0-X7的状态) # read_bitunits(起始软元件名, 起始地址, 读取点数) x_status = plc.read_bitunits(device="X", head_device=0, read_size=8) print(f"X0-X7的状态: {x_status}") # 返回一个列表,如 [1, 0, 0, 1, 0, 0, 0, 0] # 4. 批量读取字软元件(例如,读取D0-D3的值) # read_wordunits(起始软元件名, 起始地址, 读取点数) d_values = plc.read_wordunits(device="D", head_device=0, read_size=4) print(f"D0-D3的值: {d_values}") # 返回一个列表,如 [100, 200, 300, 0] # 5. 随机写入单个位软元件(例如,将Y0置为ON) # write_bitunits(起始软元件名, 起始地址, 写入值列表) plc.write_bitunits(device="Y", head_device=0, values=[1]) # 将Y0置1 print("已写入Y0=ON") time.sleep(2) # 等待2秒 # 6. 随机写入多个字软元件(例如,向D10, D11写入数据) plc.write_wordunits(device="D", head_device=10, values=[1234, 5678]) print("已向D10写入1234,向D11写入5678") # 7. 再次读取验证 y_status = plc.read_bitunits(device="Y", head_device=0, read_size=8) d_new_values = plc.read_wordunits(device="D", head_device=10, read_size=2) print(f"写入后Y0-Y7状态: {y_status}") print(f"写入后D10-D11的值: {d_new_values}") except Exception as e: print(f"通信过程中发生错误: {e}") finally: # 8. 断开连接 plc.close() print("已断开与PLC的连接")代码关键点解释:
device参数:指定软元件类型,如"X"(输入),"Y"(输出),"M"(辅助继电器),"D"(数据寄存器)。head_device参数:指定起始地址(十进制数)。- 确保电脑和PLC在同一网段(例如电脑IP是
192.168.1.50),且电脑防火墙允许该端口的通信。
5. 梯形图编程核心要点与高级功能
掌握了基础操作后,我们来深入理解梯形图编程的核心思想。
5.1 PLC的扫描周期与编程思维这是理解PLC程序如何运行的根本。PLC的工作模式是循环扫描:
- 输入采样:PLC读取所有外部输入端子(X点)的状态,并存入“输入映像寄存器”。
- 程序执行:CPU从上到下、从左到右地执行用户编写的梯形图程序。程序执行过程中,使用的输入状态来自“输入映像寄存器”,而不是实时的外部端子。程序运算的结果会更新“输出映像寄存器”。
- 输出刷新:程序执行完毕后,将“输出映像寄存器”的状态一次性输出到物理输出端子(Y点)。 理解这一点至关重要:在一个扫描周期内,输入状态是保持不变的。这解释了为什么在程序中,一个线圈的状态可能不会立即影响同一周期内更早出现的它的常开/常闭触点。
5.2 常用指令与编程模式
- 定时器(T)与计数器(C):这是自动控制中最常用的功能指令。
- 定时器:用于延时。例如,
T0 K50表示一个100ms单位的定时器,设定值为5秒(50*100ms)。当定时器线圈得电,开始计时,时间到则其触点动作。
|---[ X0 ]---[ T0 K50 ]---| // X0接通,T0开始计时5秒 |---[ T0 ]---( Y0 )------| // T0计时到,Y0输出- 计数器:用于计数。例如,
C0 K10。每当其计数线圈(OUT C0)从OFF变为ON一次,计数值加1,达到设定值10时,其触点动作。需要用RST C0指令来复位。
- 定时器:用于延时。例如,
- 置位(SET)与复位(RST):这是实现“自锁”、“状态保持”的核心指令。
SET Y0:一旦执行,Y0将被置位为ON并保持,即使触发条件断开。RST Y0:执行后,Y0被复位为OFF。
// 典型的启保停电路 |---[ X0 ]---[ X1 ]---[ SET Y0 ]---| // X0启动,X1是停止按钮的常闭触点 |---[ X2 ]---[ RST Y0 ]-----------| // X2是停止按钮的常开触点 |---[ Y0 ]-------------------------| // Y0自锁触点 - 数据传送与比较:
MOV K100 D0:将常数100传送到数据寄存器D0。CMP D0 K50 M0:比较D0和常数50,如果D0>50,则M0为ON;如果D0=50,则M1为ON;如果D0<50,则M2为ON。
5.3 函数块(FB)的创建与使用对于复杂的、可重用的逻辑(如电机控制、PID调节),使用函数块(FB)可以极大地提高程序的结构化和可维护性。
- 创建FB:在GX Works3的“工程”导航树中,右键“程序”->“新建数据”->选择“函数块”。定义FB的名称、标签(输入、输出、内部变量)。
- 编写FB内部逻辑:在FB的编辑窗口中,像编写普通梯形图一样编写逻辑,但使用的是你在接口中定义的标签(如
Start,Speed,Alarm),而不是直接的X/Y/M/D地址。 - 在主程序中调用FB:从左侧的“部件选择”窗口中找到你创建的FB,将其拖拽到主程序的梯形图中。然后为这个FB实例的每个输入输出引脚分配实际的外部地址或内部变量。 使用FB的好处是“封装”,你只需要关心FB的输入输出接口,内部的复杂逻辑被隐藏起来,并且同一个FB可以被多次调用,用于控制多个相同的设备。
6. 常见问题与深度排查指南
在实际操作中,你一定会遇到各种问题。下面是一个高频问题排查清单。
| 问题现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
| GX Works3 无法连接PLC(USB) | 1. USB驱动未安装或安装错误。 2. USB线缆损坏或接触不良。 3. PLC未上电或处于异常状态。 4. 软件中连接目标设置错误。 | 1. 检查设备管理器,确认USB驱动已正确安装且无感叹号。 2. 更换USB线或端口,确保PLC“POWER”灯亮。 3. 在GX Works3中,进入“连接目标设置”,正确选择“USB”接口,执行“通信测试”。 4. 尝试重启GX Works3软件和电脑。 |
| 程序下载时提示“无法与PLC通信” | 1. PLC处于RUN模式,且写保护开关打开。 2. PLC型号选择错误。 3. 通信电缆或端口问题。 | 1. 将PLC面板上的RUN/STOP开关拨到STOP位置。 2. 检查工程中设置的PLC系列和机型是否与实际硬件完全一致。 3. 确认使用的是原装或可靠的编程电缆。 |
| 以太网通信失败(ping不通或上位机连不上) | 1. IP地址设置错误或不在同一网段。 2. PLC网络参数未生效。 3. 电脑或PLC防火墙/安全软件拦截。 4. 网线故障或交换机问题。 | 1. 在电脑上ping PLC的IP地址,检查物理连通性。 2.确保已将网络参数写入PLC并重启PLC。 3. 暂时关闭电脑防火墙,在PLC端确认端口已正确打开(SLMP/MC协议)。 4. 更换网线,或将电脑和PLC直连测试。 |
| 梯形图转换时提示“电路错误” | 1. 梯形图逻辑不完整(如线圈前没有触点)。 2. 指令使用错误(如双线圈输出)。 3. 软元件地址超出范围或重复。 | 1. 仔细检查错误行,确保逻辑回路完整闭合到右母线。 2. 避免同一扫描周期内对同一线圈进行多次输出(双线圈问题)。 3. 检查使用的D、T、C等地址是否在PLC允许范围内。 |
| 程序运行结果与预期不符 | 1. 扫描周期理解有误。 2. 输入信号抖动或干扰。 3. 定时器/计数器设定值单位弄错。 | 1. 使用“在线监视”功能,逐步观察各触点和线圈的实际状态,分析扫描过程。 2. 对于按钮等输入,考虑在程序中使用“上升沿脉冲”( PLS指令或MEP触点)来避免抖动。3. 确认定时器单位(100ms/10ms/1ms),正确计算设定值。 |
| FX5U与威伦通触摸屏以太网通信失败 | 1. 双方IP地址不在同一网段。 2. 威伦通软件中设备类型、协议选择错误。 3. PLC端未启用MC协议或端口被占用。 | 1. 确认PLC和触摸屏IP地址(如PLC:192.168.1.100, HMI:192.168.1.101)。 2. 在威伦通EB Pro软件中,添加设备时选择“Mitsubishi” -> “Mitsubishi Ethernet(FX5U)”,并填入正确的PLC IP和端口号(默认为5000)。 3. 确保PLC的以太网端口打开设置中已添加MC协议连接。 |
7. 工程最佳实践与进阶学习路线
掌握了基础操作和排错能力后,遵循一些最佳实践能让你的项目更加稳健、易于维护。
7.1 编程规范与工程化管理
- 软元件规划:在项目开始前,规划好M、D等软元件的用途范围。例如,M0-M99用于单机控制逻辑,M100-M199用于报警,D0-D99用于设备参数,D100-D199用于生产数据等。制作一份地址分配表文档。
- 注释与命名:充分利用GX Works3的注释功能。为每一个网络段、重要的线圈和触点添加中文注释。使用有意义的标签名代替简单的地址,尤其是在使用结构化编程或FB时。
- 程序结构化:不要将所有逻辑都堆放在主程序(MAIN)中。根据功能划分多个子程序或函数块(FB)。例如,将手动操作、自动循环、报警处理、数据记录等模块分离。
- 异常处理与初始化:编写一个上电初始化程序,用于复位非保持性数据、清除报警状态。在关键操作(如通信、运动控制)前后加入超时判断和错误处理逻辑。
7.2 通信与网络优化
- 网络隔离:工业控制网络应与办公网络进行物理或逻辑隔离(VLAN),以提高安全性。
- 心跳包与重连机制:在上位机与PLC的通信程序中,实现心跳包机制(定期发送一个简单查询)来检测连接状态。一旦断线,应自动尝试重连,并记录日志。
- 数据批量读写:尽量减少单次通信中读写数据的次数。像前面Python示例那样,使用
read_wordunits一次性读取多个连续地址的数据,远比多次调用单点读取效率高、网络负载小。
7.3 下一步学习方向当你熟练掌握了FX5U的基本编程和通信后,可以沿着以下路径深化:
- 高级功能指令:深入学习数据处理、浮点运算、PID控制、定位控制等专用指令。
- 运动控制:学习使用FX5U的定位指令控制伺服电机和步进电机,实现精确的点位、速度和转矩控制。
- 网络扩展:学习配置CC-Link IE Field Basic、以太网/IP等网络,连接远程I/O站和智能设备。
- 与更复杂系统集成:学习如何通过OPC UA、MQTT等协议,将PLC数据接入SCADA系统或工业物联网平台。
- 结构化文本(ST)语言:对于复杂的计算和算法,梯形图可能不够直观。可以开始学习GX Works3中的ST语言,它更接近于高级编程语言。
从点亮第一盏灯到构建一个稳定可靠的自动化系统,每一步都需要扎实的理解和反复的实践。建议你准备好硬件,按照本文的步骤亲手操作一遍,遇到问题再回头查阅对应的章节。工控技术的积累在于“动手”,希望这份整合了核心要点与实战经验的指南,能成为你学习三菱PLC路上的一块坚实垫脚石。如果在实践中发现了新的问题或有独到的经验,也欢迎在社区分享交流。