前阵子在一个电工技术交流群里,看到有人发了张老式继电器控制柜的电气原理图,问怎么把它改成PLC程序。底下回复五花八门,有人说“照着画就行”,有人说“得重新设计逻辑”,还有人说“先把电气图看懂再说”。其实这些说法都对,但都不全。电气图转梯形图这件事,本质上不是“照着描一遍”,而是把硬接线的逻辑关系“翻译”成软逻辑。这个翻译过程有方法、有套路,也有不少坑。
我第一次做这种转换的时候,拿着一张某进口设备的主电路和控制电路图,硬是憋了一下午没敢动手。后来琢磨明白了一个道理:电气图里的每一个触点、每一段回路,在梯形图里都有对应的“化身”,关键是要找到这个对应关系,并且搞清楚哪些能直接搬、哪些必须改、哪些干脆不能要。这篇文章就把我这些年做电气图转梯形图的实际经验整理出来,从原理到步骤,从简单启停到正反转、星三角,尽量讲透。
1. 为什么说梯形图是电气图的“亲儿子”——两种描述语言的本质逻辑
很多刚接触PLC的人会有个错觉,觉得梯形图长得像电气图,所以两者差不多。这个想法方向对了,但不准确。梯形图的设计初衷就是为了继承继电器控制系统的表达习惯,让习惯看电气图的电工师傅能快速上手PLC。但继承不等于复制,两者在底层逻辑上有本质区别。
1.1 从硬接线到软逻辑:同一套“电流”思维
先看继电器控制系统。它的控制逻辑是靠物理导线把按钮、继电器触点、接触器线圈连接起来实现的。按下启动按钮,电流流过接触器线圈,线圈吸合带动主触点闭合,电机转起来;同时辅助触点闭合,把启动按钮短接,实现自锁。这套东西完全靠实实在在的电流流动来工作,哪根线断了,哪个触点接触不良,逻辑就断了。
梯形图的表达方式也借用了这个“电流流动”的概念。只不过这里的“电流”是虚拟的能流(power flow),导线变成了编程软件里的连线,物理触点变成了存储器里的位(bit),接触器线圈变成了输出线圈指令。从左母线开始的能流,依次通过一系列触点条件,最终到达输出线圈,能流通了,线圈就“得电”。
用生活化的类比来说:继电器控制系统是“实体电路板上的焊接”,梯形图是“纸面上画出来的电路”,两者走的是同一个思路,但一个是物理世界,一个是逻辑世界。这就是为什么懂电气图的人学梯形图会特别快,但也是为什么容易踩坑——因为物理世界的很多“默认规则”,在逻辑世界里是不存在的。
1.2 电气图转梯形图的三种典型场景
在实际工作中,电气图转梯形图的需求大致分三种,每种的处理思路不太一样:
设备改造升级。这是最常见的场景。老设备是继电器控制的,故障率高、线路复杂、功能单一,想换成PLC控制,但又不想改动原设备的整体逻辑。这种场景下,电气图就是最好的设计依据,转换的目标是“用PLC程序复现原有的逻辑功能”。
新设备程序编写。电气工程师根据工艺要求画好了电气原理图,PLC程序还没写。这时候梯形图程序要和电气图匹配,保证输入输出接线和程序逻辑对得上。这种场景下,电气图是设计输入,但程序不一定完全照搬电气图,可以根据PLC的优势优化逻辑。
学习练习。很多培训机构和学校会用“电气图转梯形图”作为PLC入门练习,帮助学生建立继电器逻辑和梯形逻辑之间的映射关系。这种场景关注的是方法论本身。
我下面讲的转换方法,以第一种场景为主线,兼顾后两种。因为设备改造的转换难度最大,需要考虑的限制最多,把这种场景搞明白了,其他场景自然不在话下。
2. 动手前的关键准备:先把电气图拆成“可翻译”的最小单元
拿到一张电气图,千万别直接对着画梯形图。我的习惯是先在图纸上做“拆解标注”,把整张图拆成一个个可以独立翻译的单元,再逐个击破。这一步看似费时间,实际上能省下后面大量反复修改的功夫。
2.1 元件分类对照表:把接触器、继电器、按钮映射到PLC资源
电气图里的元件种类很多,但归纳起来就那几类,每一类在PLC里都有对应的映射方式:
| 电气图元件 | 常见符号 | PLC中的对应 | 说明 |
|---|---|---|---|
| 启动按钮(常开) | SB1 | 输入位 I0.x | 外部接线到PLC输入端子,程序中用常开触点读取 |
| 停止按钮(常闭) | SB2 | 输入位 I0.x | 外部接线到PLC输入端子,程序中用常开触点读取(重点,后面细说) |
| 行程开关、接近开关 | SQx | 输入位 I0.x | 常开常闭取决于外部接法和安全要求 |
| 热继电器常闭触点 | FR | 输入位 I0.x | 一般串入外部安全回路,或接PLC输入 |
| 接触器线圈 | KMx | 输出位 Q0.x | 驱动接触器,程序中用输出线圈指令 |
| 接触器辅助触点 | KMx | 输出位 Q0.x的触点 | 程序中用输出位的常开/常闭触点代替 |
| 中间继电器线圈 | KA | 输出位 Q0.x 或内部继电器M | 可视情况选择 |
| 中间继电器触点 | KA | 同上 | 程序中用对应位的触点 |
| 时间继电器 | KT | 定时器 T | 用TON、TOF等定时器指令代替 |
这张表是转换工作的“字典”。翻译之前先把图纸上所有元件过一遍,在图纸边角列个清单,标注每个元件在PLC里对应什么地址。这个过程做完,整张图的“翻译路线图”就清晰了。
2.2 输入输出分配表的制定逻辑
定I/O分配表的时候,有几个原则我建议遵守:
输入输出分开编号,预留余量。比如三菱FX系列,输入从X0开始,输出从Y0开始;西门子S7-200 SMART是I0.0和Q0.0。分配的时候不要把所有端子用满,至少留10%~15%的备用点,万一调试时发现漏了一个信号,不至于重新设计接线。
同一设备的输入输出尽量就近分配。比如1号电机的启动按钮、停止按钮、热继电器反馈分到连续的输入地址,接触器输出也单独占用一片输出地址,这样程序可读性高,查线也方便。
把安全相关的信号单独规划。急停、热继电器、安全门开关这类信号,要么直接串在外部硬接线回路里,要么用专用的输入点并优先处理。不建议把安全信号放在普通输入点里和工艺信号混在一起。后面第5章会专门展开讲。
2.3 电气图中“常量条件”的处理
电气图里有一些条件在梯形图里不能直接对应,最常见的就是电源指示、电压表、电流表这类部件。指示灯可以对应到输出点,电压表电流表一般是外部接线的,不进PLC。还有熔断器、断路器,它们属于保护电器,通常只在主回路里体现,不在控制逻辑中处理,转换时可以直接忽略。
另外有一种特殊情况:电气图里有些触点画的是“常闭”,但实际在电路中起的是“得电后断开”的作用。这种在梯形图里可以用输出位的常闭触点实现,也可以取反逻辑用常开触点,完全看你怎么设计更清晰。比如后面要讲到的互锁逻辑,就存在两种表达方式。
3. 核心转换八步法:一个电机启保停电路的完整翻译过程
有了前面的准备,下面进入正题。我总结了一套“八步转换法”,每一步做什么、为什么这么做,都用最经典的电机启保停电路来演示。别看这个电路简单,它是所有复杂转换的基础,把这个搞透了,正反转、星三角、多电机联锁都不在话下。
3.1 第一步:找准主令电器和输出执行元件
电机启保停电路的控制部分,核心元件就三个:启动按钮SB1(常开)、停止按钮SB2(常闭)、接触器KM1。主令电器是SB1和SB2,输出执行元件是KM1线圈。如果是改造项目,接触器外围可能还有热继电器FR的常闭触点。
这一步的目标是明确:哪些是输入,哪些是输出。在这个例子里,输入是SB1和SB2(FR要不要接PLC输入,取决于你的方案),输出是KM1线圈。其他元件,比如熔断器、断路器、主触点、电机,都属于主回路,不进PLC。
3.2 第二步:把常闭常开触点关系换算成PLC地址逻辑
这一步是整个转换中最容易出错的地方,也是很多新手卡住的点。
电气图里,停止按钮SB2画的是常闭触点,它串在控制回路里。设计逻辑是:不按停止按钮时,SB2常闭触点闭合,回路可以导通;按下停止按钮,SB2常闭触点断开,回路断电,接触器释放。
如果把SB2直接接到PLC的输入端子上,那么这个输入端子在“不按按钮”时,常闭触点闭合,端子有信号;按下按钮,触点断开,端子无信号。所以在梯形图里,读取这个输入端的触点,应该用常开触点指令——外部常闭触点闭合时,梯形图里的常开触点导通,能流通过;外部常闭触点断开时,梯形图里的常开触点不通。
这个逻辑我当年绕了好久才转过弯来。一句话总结:外部接了常闭触点,程序里就要用常开触点去读。因为常闭触点的“常态”是闭合,把它当“有信号”处理;按下后断开是“无信号”处理。梯形图里的常开触点在位为1时导通,位为0时断开,刚好和外部常闭触点的状态变化一致。
3.3 第三步:“自锁”和“互锁”的梯形图表达
自锁是继电器控制的核心逻辑,在梯形图里实现同样简单。接触器KM1得电后,它的辅助常开触点闭合,让启动按钮两端短接,即使松开按钮,电流也能通过辅助触点维持线圈得电。在梯形图里,就是用输出线圈Q0.0自己的常开触点并联在启动按钮对应的触点上。
互锁则是用一个接触器的辅助常闭触点串在另一个接触器的线圈回路里。比如正转接触器得电时,它的常闭触点断开,切断了反转接触器的线圈回路,这样两个接触器不可能同时吸合。梯形图里用对应输出位的常闭触点串联实现。
3.4 第四步:逐回路翻译后再合并
把上面的三步综合起来,电机启保停电路的梯形图就出来了。以三菱FX系列为例,假设:
- 启动按钮SB1接到X0
- 停止按钮SB2接到X1(外部接常闭)
- 接触器KM1线圈接Y0
- 热继电器FR常闭触点接X2
梯形图程序如下:
// 电机启保停控制(三菱FX系列为例) // X0:启动按钮(常开) // X1:停止按钮(外部接常闭,程序用常开触点读取) // X2:热继电器FR(外部接常闭,程序用常开触点读取) // Y0:接触器KM1线圈 X0 X1 X2 Y0 --| |------|/|-----|/|-------( )-- | | | Y0 | |--| |---------------------|等等,这里要特别注意。我上面写的是X1和X2用常闭触点(|/|),但前面不是说外部接常闭要用常开触点读吗?这里有个容易混的点,解释一下:梯形图中的|/|是常闭触点,它在位为0时导通,位为1时断开。对于外部常闭的停止按钮:不按时外部闭合,输入位为1,程序里|/|断开,能流不通;按下时外部断开,输入位为0,程序里|/|导通,能流可以通过。
这样设计的结果是:正常运行时,X1位为1,程序里X1常闭触点处于断开状态,但能流走的是自锁支路,所以不影响。按下停止按钮时,X1位变为0,程序里X1常闭触点闭合,但此时自锁支路的Y0常开触点是闭合的……这就出问题了,停止按钮反而没法停车!
看到问题了吧?如果程序里用X1常闭触点,且自锁支路并联在启动按钮两边,当X1位从1变为0时,X1常闭触点导通,能流依然能通过自锁支路到达输出线圈,接触器不会释放。这就是典型的“停止按钮失效”错误。
所以正确的写法是:既然X1外部接了常闭触点,程序里就用常开触点读取它,并且这个常开触点串联在主回路上,启动按钮和自锁支路只是并联在启动位置上,但都在X1触点的后面。
正确的完整程序如下:
// 电机启保停控制(三菱FX系列) // X0:启动按钮(常开),X1:停止按钮(外部常闭) // X2:热继电器FR(外部常闭),Y0:接触器KM1线圈 X0 X1 X2 Y0 --| |--+--| |-----| |--------( )-- | | | Y0 +--| |---------------------这里X1和X2在梯形图里用的是常开触点,因为外部接的是常闭触点。外部不按停止按钮时,X1位=1,梯形图中X1常开触点导通;按下停止按钮,X1位=0,常开触点断开,整个回路断电。
这个坑几乎每个学PLC的人都踩过,包括我自己。解决的办法就是死死记住那个原则:外部常闭,程序常开;外部常开,程序常开。第二个常开没写错——外部常开的启动按钮,程序里也是常开触点。外部常闭的停止按钮,程序里还是常开触点。区别在于它们在电路中的位置和作用。
3.5 第五步:检查有无需要中间继电器过渡的环节
电气图里有些触点组合比较复杂,一个接触器的触点要控制多个回路,或者有些逻辑用中间继电器做了信号变换。PLC的软元件没有物理接线限制,一个位可以被无限次读取,所以大部分情况下不需要中间继电器。但有一种情况建议使用:当某个逻辑状态需要在程序中多次使用时,可以先算出来存到一个中间位M里,再在多个地方引用,这样程序更清晰、修改更方便。
3.6 第六步:把时间继电器换成定时器
电气图中的时间继电器有两种常见类型:通电延时型和断电延时型。在梯形图里分别用TON(通电延时定时器)和TOF(断电延时定时器)对应。三菱FX系列里最常用的是TON,用法是:
// 通电延时定时器示例:X0闭合5秒后,M0置位 X0 --| |-------------------( T0 K50 ) // 定时器T0的触点 T0 --| |-------------------( M0 )K50表示定时50个0.1秒,即5秒。这里要注意定时器的时基,三菱FX3U的T0~T199是100ms时基,T200~T245是10ms时基。选错了时基,定时时间差10倍,设备动作就对不上原设计。
3.7 第七步:逐回路翻译后汇总、优化
把每个独立的控制回路都翻译成梯形图后,再把它们合并到同一个程序里。合并时要注意:不同回路的输出线圈不能重复使用同一个地址,但一个输出位可以作为其他回路的条件(触点)反复使用。另外,程序执行顺序对结果的影响主要出现在同一输出被多处驱动的情况,所以规范做法是:每个输出线圈只在一处写输出指令,其他需要引用它的地方都用触点读取。
3.8 第八步:模拟验证与老设备对比
程序写完不能直接上设备。先用PLC编程软件的仿真功能跑一遍逻辑,把电气图里的各种操作场景逐一模拟:按下启动按钮,输出能得电并自锁吗?按停止按钮,输出能断开吗?热继电器动作,输出能断开吗?仿真通过后,再考虑上真机调试。
4. 进阶实例:正反转与星三角启动的转换细节
启保停电路只能热身,真正体现转换功力的是正反转和星三角降压启动这类多回路、有逻辑互锁的电路。这两个例子在工厂里极其常见,热搜词里也频繁出现,我把转换的关键点单独拿出来讲。
4.1 正反转电路:双重互锁怎么搬进梯形图
正反转控制电路的核心逻辑是:正转接触器KM1得电时,反转接触器KM2绝对不能得电,反之亦然。电气图里的实现方式是:KM1的辅助常闭触点串在KM2回路中,KM2的辅助常闭触点串在KM1回路中,这叫接触器互锁。在很多图纸中还有按钮互锁,即正转按钮的常闭触点串在反转回路中,防止直接按反转按钮时切换。
梯形图里实现这两种互锁非常直接。假设:
- 正转按钮SB1接X0,反转按钮SB2接X1
- 停止按钮SB3接X2(外部常闭),热继电器FR接X3(外部常闭)
- 正转接触器KM1接Y0,反转接触器KM2接Y1
// 正反转控制(带电气互锁和按钮互锁) // 正转回路 X0 X2 X3 Y1 Y0 --| |--+--| |-----| |-----|/|----( )-- | | | | Y0 | |--| |--------------| // 反转回路 X1 X2 X3 Y0 Y1 --| |--+--| |-----| |-----|/|----( )-- | | | | Y1 | |--| |--------------|上面梯形图里,Y1的常闭触点串在正转回路里,Y0的常闭触点串在反转回路里,这就是接触器互锁的软件化。按钮互锁体现在哪里?如果我不加额外处理,按钮X0和X1的常闭触点互串在对方回路里,程序就变成:按下X0时,X1常闭触点仍然闭合(因为X1没信号),正转可以启动;按下X1时,X0常闭触点仍然闭合(X0没信号),反转可以启动。这能实现直接切换吗?不行,因为Y0和Y1的常闭触点互相断开,正转启动后,反转回路里的Y0常闭触点断开了,此时按反转按钮,反转接触器也不会得电,必须先把正转停掉。这就是“接触器互锁”的效果。
如果想要“正转运行中直接按反转就能切换”的效果,需要在程序里加一个过渡逻辑——比如正转输出Y0断开后,反转才能启动。但这样在切换瞬间,如果正转接触器的触点还没完全释放,反转接触器就吸合,可能会造成电源短路。所以可靠的方案是保留接触器互锁,同时在程序里也做互锁,这就是“双重互锁”。实际项目中我强烈建议保留外部接触器互锁,PLC软件互锁是第二道保险,不能替代硬件互锁。
4.2 星三角降压启动:从时间继电器到定时器
星三角降压启动是经典中的经典。它的控制逻辑是:启动时,主接触器KM1和星形接触器KM3吸合,电机绕组接成星形,电压降低,电流减小;经过一段时间(通常5~10秒),KM3断开,三角形接触器KM2吸合,电机转入全压运行。
电气图里这个“一段时间”是用时间继电器KT实现的。梯形图里对应的是一个通电延时定时器。转换的关键点有三个:
第一,定时器的位(定时器触点)要用来控制星三角切换的时序:定时时间到,星形接触器先断开,三角形接触器再吸合,中间要有极短的间隔(可以用两个定时器实现,也可以利用PLC扫描周期的自然间隔,但安全起见建议用定时器做短延时)。
第二,星形接触器和三角形接触器之间必须有互锁,防止两者同时吸合造成相间短路。软件互锁加硬件互锁都不可少。
第三,很多图纸里星三角电路的启动按钮是自复位式的,按下启动、松开保持,靠自锁维持运行。梯形图里还是用自锁支路解决。
下面是一个简化的星三角启动梯形图(三菱FX系列):
// 星三角降压启动(简化版) // X0:启动按钮,X1:停止按钮(外部常闭),X2:热继电器(外部常闭) // Y0:主接触器KM1,Y1:星形接触器KM3,Y2:三角形接触器KM2 // T0:星三角切换延时定时器(100ms时基,K50 = 5秒) // 主接触器和星形接触器启动回路 X0 X1 X2 Y2 Y0 --| |--+--| |-----| |-----|/|----( )-- | | | Y0 |--| |------------------------ Y0 X1 X2 T0 Y2 Y1 --| |--+--| |-----| |-----|/|-----|/|----( )-- | | | Y1 |--| |------------------------ // 定时器,Y0得电后开始计时 Y0 T0 --| |----|/|-------------------( T0 K50 ) // 三角形接触器回路,定时时间到且主接触器在吸合状态 T0 Y1 X1 Y1 Y2 --| |--+--|/|-----| |-----|/|----( )-- | | | Y2 |--| |------------------------这段程序我故意把Y1和Y2互锁写进去,保证星形和三角形不会同时吸合。定时器T0的复位条件是它的常闭触点串联在线圈回路里,时间一到,T0自断,计时结束。实际项目中,K1星形转K2三角形的瞬间,KM3先断开,KM2再吸合,这个顺序是通过程序扫描顺序保证的:T0时间到,星形回路里的T0常闭触点断开,Y1输出断开,然后三角形回路才能得电。
我在这个程序里做了简化,实际工程中还会加启动信号保持、故障复位等逻辑,但核心时序就是这样一个结构。
4.3 星三角转换中容易被忽视的细节
星三角转换有一个特别容易被忽视的细节:时间继电器断电延时与通电延时的配合。有些老图纸里用的是一个通电延时继电器控制星形接触器断开后,再用它的延时断开触点去控制三角形接触器吸合。转换到PLC里,这个逻辑要理顺:星形接触器Y1断开后,定时器T0的输出状态已经翻转,三角形接触器Y2应该用T0的常开触点来驱动。如果用了T0的常闭触点去驱动三角形,时序就反了。
另外,星三角启动的切换时间不是越长越好。太短,电机还没降速完成就切三角形,冲击电流大;太长,电机长期缺相运行(星形接法下电压不足),容易发热。一般根据电机功率和负载惯性,在5~10秒之间调整,最好在实际设备上用钳形电流表监测启动电流曲线来确定最佳切换点。
5. 转换后的验证与常见坑位:这些错误我几乎见人踩过
就算程序编译通过,也不代表功能正确。电气图转梯形图这个过程中,有一些坑是反复出现的,每次新接触的人都可能踩进去。我把最常见的几个列出来,每个后面都附上规避方法。
5.1 仿真先行:空载验证逻辑
PLC编程软件的仿真功能(比如三菱GX Works2的模拟器、西门子TIA Portal的仿真、Codesys的在线仿真)是用来验证逻辑的最快方式。但仿真有个局限:它不能模拟真实I/O接线的常开常闭错误。比如你的停止按钮在输入端子上接成了常开触点,程序里却按“外部常闭”设计,仿真通过没问题,一上设备就发现停车停不下来。
所以仿真能辅助查逻辑错误,但不能替代对图纸和实际接线的反复核对。我养成的一个习惯是:拿到一张电气图,先画出I/O接线草图,标清楚每个外部元件接的是常开还是常闭,再对照I/O分配表逐点检查。这个步骤错了,后面全是白做。
5.2 停止按钮、热继电器、急停的安全回路处理
这是安全相关的重要问题,必须单独说。
停止按钮外部接常闭,程序用常开触点读取,这个原则前面讲过。为什么要这样设计?因为外部常闭触点在正常时闭合,如果外部接线断了或者触点接触不良,输入位为0,程序里读取的常开触点断开,设备不会启动。这就是“失电安全”原则——断线故障时设备处于停止状态,而不是开着停不下来。
热继电器同理,外部接常闭触点,程序里用常开触点读取。但热继电器动作后,输入位变为0,程序里常开触点断开,输出线圈断电,电机停止。此时如果操作工强行复位热继电器,输入位恢复为1,程序里常开触点闭合,但自锁支路已经断开,电机不会自动启动,需要重新按启动按钮。这是合理的。
急停按钮的处理方式和高安全等级要求。真正用于紧急停机的急停按钮,我不建议只依赖PLC程序处理,而是把急停按钮的常闭触点直接串联在接触器线圈的电源回路里,实现硬接线急停。这样即使PLC故障、程序跑飞,按下急停也能可靠切断输出接触器电源。PLC程序里再做一个急停反馈输入,用于报警和状态显示。这是安全回路设计的基本原则:应急功能靠硬件,控制功能靠软件。
5.3 扫描周期带来的差异:为什么梯形图里“同时动作”其实有先后
继电器控制系统是并联的,多个继电器可以同时吸合、同时释放,无先后之分。PLC是串行扫描的,程序按从上到下、从左到右的顺序逐条执行,虽然这个时间很快(毫秒级),但对于要求严格的同时性场景,会产生影响。
最典型的例子是星三角切换:电气图里时间继电器到点后,星形接触器和三角形接触器的动作几乎是同时的,电气互锁靠物理触点的机械动作保证。PLC程序里,Y1的断开和Y2的吸合天然有先后——它们不在同一行指令里,Y1的线圈指令执行完毕后,才执行Y2的线圈指令。这个时间差通常只有几个毫秒,但足以避免两个接触器同时吸合(前提是程序逻辑正确、外部接触器的释放时间足够快)。这也是为什么梯形图里的互锁逻辑和硬件互锁需要并存,双重保险。
5.4 转换的边界:哪些电气图功能不适合直接搬进PLC
不是所有电气图内容都值得或应该转换进梯形图。我列几个典型情况:
高速脉冲计数。有些电气图里用旋转编码器配合高速计数器实现位置或转速检测,这种功能直接用PLC的高速计数器指令实现,不走普通梯形图的触点线圈逻辑。
模拟量调节。一些电路里的电位器给定、电流电压反馈,在PLC里对应模拟量输入输出模块,程序上用比较指令、PID指令实现,和传统的继电器逻辑完全是两套思路。
安全联锁回路。涉及人身安全的功能,比如光栅、安全门、双手启动按钮等,应当保持硬接线的安全回路,PLC只做监控和显示,不做唯一保护。
纯主回路的部分。断路器、熔断器、热继电器的保护动作,大部分发生在主回路,PLC控制逻辑只关心它们的辅助触点状态,不对主回路本身做逻辑控制。
老设备上利用机械结构实现的某些“玄学功能”。比如依靠触点弹簧的延时释放实现的短暂动作顺序,转换到PLC里要重新考虑是否能用定时器模拟,还是说整个工艺本身就该优化了。转换的过程其实是一次逻辑梳理,千万别抱着“原图怎么画,我就怎么改”的心态。
5.5 程序注释与图纸版本管理
最后聊一个不是技术、但很要命的细节:图纸版本和程序版本对不上。
改造项目里,往往会有多个版本的电气图。我接过一个项目,拿到手的图纸是老版本,实际设备已经改过线,按老图纸写的程序一上机就发现输出对不上。后来拿到新版本图纸,花了半天重新核对I/O,最终才调试通过。从那以后我养成一个习惯:电气图拿到手先看版本号和修改日期,改动过的地方重点标注,梯形图程序里也写明每个I/O对应的图纸页码和位号。这样后续维护的人(包括三个月后的自己)翻起程序来才不会一头雾水。
程序注释我一般这样写:
// ============================================ // 功能:星三角降压启动控制 // I/O分配参照:电气图 DWG-2024-013 Rev.B // X0:启动按钮SB1(常开,图号3/12) // X1:停止按钮SB2(外部常闭,图号3/12) // X2:热继电器FR1(外部常闭,图号3/12) // Y0:主接触器KM1(图号3/12) // Y1:星形接触器KM3(图号3/12) // Y2:三角形接触器KM2(图号3/12) // 修改记录:2024-06-01 增加Y1/Y2互锁,防止切换瞬间短路 // ============================================这种注释写起来多花不了两分钟,但后面调试和交接时能省下大量沟通成本。
6. 从电气图到梯形图的“心法”:一个转换经验总结
说了这么多,最后分享几点这些年沉淀下来的体会。
很多人问:到底怎么才能又快又准地把电气图转成梯形图?我的回答是:先别急着打开编程软件,把纸笔拿出来,在图纸上把每个回路用彩色笔描一遍,标出主令电器、执行元件、互锁条件、延时环节,这个过程就是把硬接线逻辑翻译成逻辑表达式。你图纸上的回路理得越清楚,写梯形图就越快。如果图纸本身就看不懂,那问题不在PLC,而在电气基础。
还有一点很实用:当你卡在某个回路上时,先把它写成布尔代数表达式,再翻译成梯形图。比如启保停电路的控制逻辑可以写成:KM1 = (SB1 OR KM1) AND SB2 AND FR。这个表达式里,OR对应并联,AND对应串联,括号对应先并联后串联。布尔代数和梯形图之间是一一对应的,用表达式做中间过渡,比直接在图纸和梯形图之间跳转要轻松得多。
做设备改造时,我更建议用“最小改动原则”:能不改变的逻辑就不要改,老设备本来跑得好好的,你的任务是把它换成PLC控制,不是重新设计工艺。当然,如果老逻辑本身有缺陷,比如没有互锁、没有热保护,那还是借这个机会补上。
电气图转梯形图这项技能,归根结底考验的是两样东西:对继电器控制逻辑的理解,以及对PLC扫描机制和软元件特性的掌握。第一样靠多看图、多拆电路积累,第二样靠多写程序、多上设备调试磨出来。把基础打牢,再复杂的电路图在你眼里,也就是一个个可翻译的逻辑单元的组合。