2. 开发环境搭建:主流PLC平台的安装与配置
说实话,很多初学者一上来就急着写代码,结果连开发环境都没配好,折腾半天连个轴都动不了。我见过太多这样的案例了。今天咱们就踏踏实实把环境搭起来,后面才能跑得顺畅。
2.1 主流PLC平台的选择
目前工业界最主流的两个平台,一个是 Codesys,另一个是 TwinCAT。说白了,它们底层都是基于 IEC 61131-3 标准,但各有侧重。
| 平台 | 特点 | 适用场景 |
|---|---|---|
| Codesys | 开放性最强,支持多种硬件厂商 | 中小型项目、多品牌控制器 |
| TwinCAT | 与倍福硬件深度绑定,实时性极强 | 高端运动控制、EtherCAT生态 |
我个人习惯两个都装。Codesys 用来做原型验证,TwinCAT 用来做最终部署。你想想看,万一客户现场用的是不同品牌的控制器,你至少能快速切换。
2.2 Codesys 安装与第一个项目
安装过程其实没什么好说的,下一步下一步就行。但有几个坑我得提醒你:
装好之后,咱们创建一个新项目:
- 打开 Codesys,点击「新建项目」
- 选择「标准项目」,输入项目名称
- 设备选「CODESYS Control Win V3」——这是软PLC,适合调试
- 编程语言选「结构化文本 (ST)」
嗯,这里要注意,第一次打开可能会提示缺少运行时组件。别慌,去官网下载一个「CODESYS Control Win」安装包就行。
2.3 添加运动控制库
PLCopen 运动控制的核心,其实都在库里面。没有库,你写再多代码也调不动轴。
添加步骤:
- 在左侧「库管理器」上右键 → 「添加库」
- 搜索
SM3_Basic—— 这是 PLCopen 的基础运动控制库 - 再添加
SM3_CNC和SM3_Robotics(如果你要做插补或机器人)
SM3_Drive 也加上。这个库封装了驱动器参数配置,省得你手动写一堆 SDO 通信。
添加完成后,你会在库管理器里看到一堆函数块。比如 MC_Power、MC_MoveAbsolute、MC_Home 等等。这些就是咱们后面要用的核心武器。
2.4 配置虚拟轴
没有真实硬件怎么办?用虚拟轴。说白了就是让软件模拟一个电机,你发指令它就能动,但实际不接任何设备。
配置步骤:
- 在设备树里双击「PLC Logic」下的「Application」
- 右键 → 「添加对象」 → 「轴」
- 轴类型选「虚拟轴」
- 给轴起个名字,比如
Axis_X
然后双击这个轴,在参数里设置:
- 最大速度:1000 mm/s
- 最大加速度:5000 mm/s²
- 最大减速度:5000 mm/s²
- 急动度:50000 mm/s³
这些参数怎么来的?我一般参考实际伺服电机的规格书。虚拟轴虽然不用真跑,但参数设得太离谱,后面换真实设备时还得重新调。
2.5 知识体系总览
下面这张图,是我自己总结的开发环境搭建逻辑。你照着这个顺序走,基本不会乱。
2.6 验证环境是否正常
配置完虚拟轴,咱们写一小段代码验证一下:
PROGRAM Main
VAR
Axis_X : AXIS_REF_VIRTUAL;
Power_MC : MC_Power;
MoveAbs_MC : MC_MoveAbsolute;
bPower : BOOL := FALSE;
bStart : BOOL := FALSE;
fTargetPos : LREAL := 100.0;
END_VAR
// 上电
Power_MC(
Axis := Axis_X,
Enable := bPower,
bRegulatorOn := TRUE,
bDriveStart := TRUE
);
// 绝对定位
IF bStart THEN
MoveAbs_MC(
Axis := Axis_X,
Execute := TRUE,
Position := fTargetPos,
Velocity := 100.0,
Acceleration := 500.0,
Deceleration := 500.0,
Jerk := 5000.0
);
END_IF
这段代码做了三件事:给轴上电、设定目标位置、执行绝对定位。你下载到软PLC里,把 bPower 和 bStart 置为 TRUE,看看轴的位置有没有变化。
Axis_X 选择「轴状态」面板。你会看到实际位置从0慢慢走到100。如果不动,八成是库没加对,或者轴类型选错了。
我曾经遇到过一个问题:虚拟轴怎么都不动,查了半天发现是 MC_Power 的 Enable 引脚没持续置高。你想想看,上电信号只给一个周期,轴当然不会保持使能。这种低级错误,新手最容易犯。
好了,环境搭好了,轴也能动了。后面咱们就可以正式开始玩 PLCopen 的运动控制指令了。