三菱 PLC 编程入门 1
目录
PLC 全称是 Programmable Logic Controller,即可编程逻辑控制器。主要用于工业设备控制,比如电梯、传送带、机械臂等等。
PLC 的使用者,一般是电气工程师。PLC 的优点是开发快、可扩展,稳定性好。缺点是生态封闭,迁移成本高。PLC 有两大品牌商:西门子和三菱。两家各搞各的,互相不兼容。
PLC 可以用「梯形图」或「ST 语言」编程。前者用的人多。我个人喜欢 ST,觉得可读性好。
本文是学习笔记(产品型号是三菱 FX5UC)。
运行方式
主程序执行时,CPU 会循环扫描,重复执行代码。基本流程如下图所示。

看一个简单例子。
// iCounter 是整型变量,初始值等于 0
// 在主程序中运行这行代码,iCounter 的值会不断增加
iCounter := iCounter + 1
软元件
软元件就是硬件模块的软件表示。例如,继电器、报警器、计时器、计数器、寄存器等。使用时无需声明,引用名称和编号即可。
X0 := TRUE; // X 是输入继电器
Y3 := FALSE; // Y 是输出继电器
M1:= TRUE; // M 是辅助继电器
D := 100; // D 是数据寄存器
变量
变量要提前声明。但是编辑器(Gx Works)不支持直接用代码声明,要用交互菜单来操作。个人感觉不太方便。

常见的类型有:位(bool)、字(int)、双字(word)、time(时间)、字符串(string)等等。
函数块
讲一下函数块与函数的区别。函数块(Function Block)不能直接调用,需要先实例化才能使用,而函数可以直接使用。
// 函数调用:WORD_TO_BOOL 是函数,把 word 类型转换成 bool 类型
M100 := WORD_TO_BOOL(D106 > D107);
// 函数块调用:TON1 是计时器 TON 的一个实例
TON1(IN := TRUE , PT := T#1s, Q := Y0);
定时器
介绍几种常用的定时器。
延时开 TON
输入为 TRUE 时,延迟一段时间,输出 TRUE;输入为 FALSE 时,定时器复位,立即输出 FALSE。
参数说明
IN:输入,bool 类型
PT:延时量,time 类型
Q:输出,bool 类型
示例
// Case1: 输入 TRUE
Y0 := FALSE;
// 1秒后 Y0 等于 TRUE
TON1(IN := TRUE , PT := T#1s, Q:= Y0)
// Case2: 输入 FALSE
Y0 := TRUE;
// 等价于 Y0 := FALSE,且定时器复位
TON2(IN := FALSE , PT := T#1s, Q:= Y0)
延时关 TOF
输入为 FALSE 时,延迟一段时间,输出 FALSE;输入为 TRUE 时,定时器复位,立即输出 TRUE。
示例
// Case1: 输入 FALSE
Y0 := TRUE;
// 1秒后 Y0 等于 FALSE
TOF1(IN := FALSE , PT := T#1s, Q:= Y0)
// Case2: 输入 TRUE
Y0 := FALSE;
// 等价于 Y0 := TRUE,且定时器复位
TOF2(IN := TRUE , PT := T#1s, Q:= Y0)
持续开 TP
输入为 TRUE 时,持续一段时间,然后输出 FALSE;输入条件为 FALSE 时,定时器复位,立即输出 FALSE。
示例
// Case1: 输入 TRUE
Y0 := FALSE;
// Y0 等于 TRUE,1秒后等于 FALSE
TP1(IN := TRUE , PT := T#1s, Q:= Y0)
// Case2: 输入 TRUE
Y0 := TRUE;
// 等价于 Y0 := FALSE,且定时器复位
TP2(IN := FALSE , PT := T#1s, Q:= Y0)
下一步
以上是三菱 PLC 编程的基本介绍,更多内容可以参考官方文档。接下来,我们要实现一个小例子,期望把上述内容串起来。