4. PLC硬件组态与变量定义
硬件组态是PLC项目从“纸面设计”走向“可下载运行”的第一道工程关口。在施耐德EcoStruxure Control Expert(原Unity Pro)中,这一步的核心任务可以概括为三件事:把真实的CPU和I/O模块“告诉”软件、为每个物理通道分配确定的地址、再给这些地址起一个工程师能读懂的名字。三者缺一不可——组态错了,程序下载后模块会报错;地址错了,输入输出会“张冠李戴”;符号没定义好,程序可读性会迅速崩塌。
一、先选CPU,再挂模块:硬件目录与机架结构
新建项目后,Control Expert会要求先选择PLC型号。以Modicon M340为例,常见CPU有BMXP342020、BMXP342030等,它们决定了可用内存大小、内置通信口数量以及支持的本地机架数量。选择CPU后,软件会自动生成一个本地机架(Local Rack),通常为4槽、8槽或12槽。机架上的槽位编号从0开始,0号槽固定给CPU(或CPU所在的电源/机架组合),1号槽起用于安装I/O模块或通信模块。
在硬件目录(Hardware Catalog)中,模块按类别组织:离散量输入(DI)、离散量输出(DO)、模拟量输入(AI)、模拟量输出(AO)、计数模块、通信模块等。以BMXDDI1602为例,它是一块16点24V直流输入模块;BMXDAO1605是16点继电器输出模块。把模块从目录拖到机架槽位时,软件会检查模块类型与槽位是否兼容,不兼容会直接拒绝放置。这一步看似简单,却是后续地址分配的基础——模块型号和槽位一旦确定,物理地址就基本确定了。
二、地址是怎么“长”出来的:%I、%Q、%M与几何寻址
Control Expert采用IEC 61131-3风格的地址表示法,常见前缀有:
- %I:输入离散量(Input),如%I0.0、%I0.1;
- %Q:输出离散量(Output),如%Q0.0;
- %M:内部存储器位(Memory bit),如%M0、%M1;
- %IW / %QW:模拟量输入/输出字,如%IW0.0、%QW0.0;
- %MW:内部存储器字,如%MW0、%MW10。
对于本地机架上的离散量模块,地址通常按“机架.槽位.通道”的几何方式展开。例如CPU在0号槽,1号槽放BMXDDI1602,那么它的16个输入点一般映射为%I0.0~%I0.15(具体取决于模块在机架中的位置和软件版本,实际以Control Expert自动生成的地址为准)。模拟量模块则按字寻址,如%IW0.0、%IW0.1分别对应第1、第2个模拟通道。
这里有一个容易踩坑的地方:地址不是“想写多少就写多少”。%I和%Q的地址范围由实际安装的模块决定,软件在组态完成后会自动生成一张地址映射表。如果程序中写了%I0.20,但机架上根本没有第21个输入点,编译时可能不报错,但运行时该地址永远为0或不确定,导致逻辑失效。因此,组态完成后第一件事就是打开“地址映射”视图,核对每个模块占用的地址区间。
三、符号变量:让%I0.0变成“启动按钮”
地址是给PLC看的,符号是给人看的。在Control Expert中,符号变量通过“变量编辑器”(Data Editor)定义。每个变量至少包含:名称(Name)、类型(Type)、地址(Address)、注释(Comment)。例如:
名称 类型 地址 注释
StartBtn BOOL %I0.0 启动按钮(常开)
StopBtn BOOL %I0.1 停止按钮(常闭)
MotorRun BOOL %Q0.0 电机运行输出
TempValue INT %IW0.0 温度模拟量输入
SetPoint INT %MW10 温度设定值
定义符号变量时,类型必须与地址匹配:BOOL对应位地址(%I0.0、%Q0.0、%M0),INT/REAL对应字地址(%IW、%QW、%MW)。如果给%I0.0定义成INT,软件会报类型冲突。另一个实用技巧是使用“派生变量”(Derived Variable)或“DDT”来批量定义结构,例如把一台电机的启动、停止、运行、故障四个位打包成一个自定义类型,既减少重复输入,也便于程序复用。
四、组态与变量定义的联动关系
硬件组态、地址分配和符号变量定义不是三个独立步骤,而是一条链:模块型号决定地址范围,地址范围决定符号变量能绑定的物理点,符号变量又反过来影响程序的可读性和可维护性。如果中途更换了模块(例如把16点DI换成32点DI),地址区间会变化,原有符号变量可能失效或错位,必须重新核对。因此,工程上通常建议:先确定硬件清单,再组态,再定义符号,最后写程序;若硬件变更,按“组态→地址→符号→程序”的顺序回查。
五、实操检查清单与常见错误
组态和变量定义完成后,建议按以下顺序做一次自检:
- 机架槽位核对:每个模块的型号、槽位是否与硬件清单一致;
- 地址区间核对:打开地址映射表,确认%I、%Q、%IW、%QW的起止地址没有重叠或越界;
- 符号变量类型核对:BOOL变量是否绑定位地址,INT/REAL是否绑定字地址;
- 重复地址检查:同一个%I0.0是否被两个符号变量同时占用(Control Expert通常会提示,但跨段定义时容易忽略);
- 编译验证:执行“生成→重新生成项目”,观察是否有地址冲突、类型不匹配或未定义变量的报错。
最后强调一点:硬件组态和变量定义不是“一次性工作”。当项目从样机阶段进入现场调试阶段,模块型号、槽位甚至CPU都可能调整。每次变更后,务必重新生成地址映射并回查符号变量绑定关系。把这一步做扎实,后续写程序、做HMI变量连接、排查故障时,都会省下大量“猜地址”的时间。