博图(TIA Portal)梯形图编程实战:从点动控制到模拟量转换
PLC编程入门容易,精通却需要积累。本文将带你从最简单的“开关控制灯”出发,逐步深入到循环控制和模拟量转换,用西门子博图(TIA Portal)环境下的梯形图(LAD)语言,完成一次实用的编程进阶之旅。
一、基础篇:单开关控制单灯
首先,我们要实现最基础的功能——按下按钮,灯亮;松开按钮,灯灭。这在PLC中称为 点动控制。
在博图中新建项目并添加CPU后,我们进入程序块(OB1)编写以下梯形图:
LADDER
|| I0.0 "启动按钮" |----------------( Q0.0 "指示灯" )--||
程序说明:
I0.0:输入地址,对应物理按钮。Q0.0:输出地址,对应物理指示灯。当按下按钮(I0.0为TRUE),输出线圈Q0.0得电,灯亮。
这是最简单的逻辑,但实际工程中我们通常需要“自锁”功能,即按下一次按钮灯常亮,再按停止按钮灯才熄灭。
二、进阶篇:实现自锁与循环控制
1. 启保停电路(自锁)
将点动升级为自锁控制,梯形图如下:
LADDER
|| I0.0 "启动" |--[ ]--+----------------( Q0.0 "灯" )--||
|| | |
|| Q0.0 "灯" |--[ ]--+
|| |
|| I0.1 "停止" |--[/]--+
逻辑解析:
按下启动按钮(I0.0),Q0.0得电。
Q0.0的常开触点闭合,形成自锁,即使松开启动按钮,电路依然保持导通。
按下停止按钮(I0.1,常闭触点),电路断开,灯熄灭。
2. 循环控制(闪烁)
如果希望灯实现“亮1秒,灭1秒”的无限循环,我们需要引入定时器。博图中常用的定时器有TON(延时接通)和TOF(延时断开)。
构建一个振荡电路,使用两个TON定时器交替触发:
LADDER
|| T1 "定时器1" 定时到 |----------------( T2 "定时器2" )--||
|| T2 "定时器2" 定时到 |----------------( T1 "定时器1" )--||
|| T1 "定时器1" 定时到 |----------------( Q0.0 "灯" )--||
实际编程细节:
在博图中,定时器需要调用“定时器”指令并分配DB块。以TON为例,其输入参数有IN(启动信号)和PT(预设时间)。
网络 | 指令 | 参数设置 | 作用 |
|---|---|---|---|
网络1 | TON (T1) | IN: | 当T2输出为1时,T1开始计时1秒 |
网络2 | TON (T2) | IN: | 当T1输出为1时,T2开始计时1秒 |
网络3 | 输出 | 赋值 | 灯的状态跟随T1的输出 |
工作流程:
初始状态,T1和T2均未计时。
程序启动后,网络1中T2.Q为FALSE,T1不动作。
需要给一个初始启动信号,通常将网络1的IN条件并联一个启动脉冲(如M0.0)。
上述振荡电路在启动时需要一个初始脉冲。实际使用中,可以在网络1中并联一个“首次扫描标志”(如#firstScan)或者使用一个手动启动按钮M0.0来触发第一个周期。
三、高级篇:模拟量转换
在工业现场,我们经常需要处理温度、压力等连续变化的物理量。这些物理量通过传感器转换为标准的电信号(如4-20mA),再由模拟量输入模块读取。PLC内部识别的是原始数值(如0~27648),我们需要将其转换为实际的工程单位值。
1. 模拟量转换公式
博图提供了标准的功能块SCALE或NORM_X与SCALE_X指令。其核心转换逻辑遵循线性关系:
[ \text{工程值} = \text{下限值} + \frac{(\text{原始值} - \text{原始下限})}{(\text{原始上限} - \text{原始下限})} \times (\text{工程上限} - \text{工程下限}) ]
2. 使用 NORM_X 和 SCALE_X 指令
在博图中,推荐使用NORM_X(标准化)和SCALE_X(缩放)组合,程序更清晰。
步骤一:标准化
LADDER
|| %I0.0 "模拟量输入" |----------------( NORM_X )--||
|| | IN: "AIW0" |
|| | MIN: 0 |
|| | MAX: 27648 |
|| | OUT: "tempReal" |
将原始整数(AIW0)转换为0.0~1.0之间的实数(tempReal)。
步骤二:缩放
LADDER
|| %I0.0 "模拟量输入" |----------------( SCALE_X )--||
|| | IN: "tempReal" |
|| | MIN: 0.0 |
|| | MAX: 100.0 |
|| | OUT: "温度值" |
将标准化的实数(0.01.0)映射到工程量程(如0.0100.0度)。
LADDER
|| "AIW0" |------[ NORM_X ]------ "tempReal"
|| IN:AIW0 MIN:0 MAX:27648
||
|| "tempReal" |------[ SCALE_X ]------ "温度值"
|| IN:tempReal MIN:0.0 MAX:100.0
AIW0是模拟量输入字地址,需根据硬件配置修改。MIN和MAX参数必须与模块的量程卡设置一致。转换结果
温度值是实数,可直接用于PID控制或数值显示。
四、总结与扩展
本文从三个层次由浅入深地介绍了博图梯形图编程:
基础逻辑:掌握了常开、常闭触点和输出线圈的组合。
循环控制:理解了定时器(TON)的用法,并构建了典型的振荡电路,实现了灯的循环闪烁。
模拟量处理:掌握了
NORM_X和SCALE_X指令,能够将PLC原始信号转换为具有物理意义的工程值。
以上代码片段均可在TIA Portal V15及以上版本中直接编译运行。建议你在实际项目中,为各个变量添加符号名(如“启动按钮”),并合理规划数据块(DB),这会让程序更具可读性和可维护性。希望这篇文章能为你的自动化学习之路提供帮助。
