1. 主流编程软件概述
现代PLC编程依赖于功能强大的集成开发环境(IDE)。以下是两种主流软件平台的对比:
| 软件名称 | 主要厂商 | 特点 | 适用系列 |
|---|---|---|---|
| TIA Portal (Totally Integrated Automation Portal) | 西门子 (Siemens) | 高度集成,统一工程平台,支持PLC、HMI、驱动配置。 | S7-1200, S7-1500, S7-300/400, WinAC |
| GX Works (含GX Works2, GX Works3) | 三菱电机 (Mitsubishi Electric) | 界面直观,结构化编程,强大的诊断功能。 | FX系列, Q系列, L系列, iQ-R/F系列 |
2. 软件安装与核心配置
TIA Portal V18 安装关键步骤
- 系统检查:确保Windows 10/11专业版/企业版,足够的磁盘空间(建议50GB以上)。
- 关闭防护:暂时禁用Windows Defender及所有杀毒软件。
- 运行安装:以管理员身份运行“Start.exe”,选择“安装语言”。
- 产品选择:根据许可证选择需要安装的产品(如STEP 7 Professional, WinCC Advanced)。
- 许可配置:安装完成后,使用Automation License Manager导入许可证密钥。
- 首选项设置:启动后,在“选项”>“设置”中配置项目存储路径、语言、键盘快捷键等。
GX Works3 配置要点
- 环境准备:安装.NET Framework相应版本,确保系统兼容。
- 序列号输入:在安装向导中正确输入产品序列号。
- 组件选择:根据实际使用的PLC型号选择编程组件和通信驱动。
- 工具连接设置:在“工具”>“连接目标设置”中配置正确的通信接口(如USB、以太网)。
- 工程默认设置:设定默认的PLC系列、程序语言(梯形图/ST)、文件保存格式。
注意:安装路径避免使用中文或特殊字符。务必在安装前阅读官方发布说明,确认操作系统和硬件兼容性。
3. 项目结构解析
一个标准的PLC项目包含多个逻辑部分,良好的结构是项目可维护性的基础。
- 硬件配置(设备视图): 定义PLC的物理构成,包括CPU、电源、I/O模块、通信模块等及其参数。
- PLC程序(程序块):
- 组织块(OB): 程序入口,如循环中断OB1。
- 功能块(FB)与功能(FC): 封装的可重用逻辑或计算函数。
- 数据块(DB): 存储程序数据,包括全局数据和FB的背景数据。
- HMI画面: 与PLC变量关联的操作员监控界面。
- 工艺对象: (如TIA Portal)用于配置运动控制、PID控制等复杂功能。
4. 硬件组态(配置)
硬件组态是将软件中的逻辑模块与实际物理硬件进行匹配和参数化的过程。
核心步骤
- 添加设备: 从硬件目录中拖放正确的CPU型号到项目视图。
- 扩展机架: 在CPU的右侧(或指定插槽)添加所需的数字量/模拟量输入输出模块、通信模块等。
- 分配地址: 系统自动分配I/O地址,也可手动修改,确保地址唯一且符合规划。
- 参数设置: 双击每个模块,设置其具体参数(如滤波时间、量程、中断使能)。
- 网络组态: 在网络视图中配置PLC与HMI、驱动装置、其他PLC之间的通信(如Profinet, Ethernet/IP)。
- 编译与下载: 编译硬件组态,检查无误后下载到物理PLC。
硬件示意图(简化)
诊断提示: 硬件组态错误是常见故障源。若PLC上电后模块指示灯报错(如红色/黄色),首先检查硬件目录中的模块型号、固件版本与实际是否完全一致,以及地址是否有冲突。
5. 编程示例与代码规范
梯形图 (LAD) 示例:电机启保停
| I0.0 (启动) I0.1 (停止) Q0.0 (电机) |
|----] [------------]/[-------------( )--------|
| |
| Q0.0 (自锁) |
|----] [---------------------------------------|
说明: I0.0常开触点(启动),I0.1常闭触点(停止),Q0.0线圈输出并自锁。
结构化文本 (ST) 示例:简单计算
// 功能:计算平均值并限制输出
FUNCTION_BLOCK FB_Calculate
VAR_INPUT
Value1 : REAL;
Value2 : REAL;
END_VAR
VAR_OUTPUT
Average : REAL;
Status : BOOL;
END_VAR
VAR
TempSum : REAL;
END_VAR
TempSum := Value1 + Value2;
Average := TempSum / 2.0;
// 限制输出范围
IF Average > 100.0 THEN
Average := 100.0;
Status := FALSE; // 超限报警
ELSIF Average < 0.0 THEN
Average := 0.0;
Status := FALSE;
ELSE
Status := TRUE;
END_IF;
