「案例」如何编写3台电机轮换的PLC程序?
导读:
有很多读者问我怎么让一个电机工作8小时后停止?三台或者多台电机轮换的一个程序怎么编写。这里小编就以“3台电机轮换”的一个案例来讲解,本案使用西门子200smartSR30型号的PLC。
一、控制要求
某工厂需要24小时工作,有3台电机需要轮流工作,当一台电机启动8小时以后,更换下一台电机启动,以此轮换。如果运行的电机出现故障以后,切换下一台电机运行并输出对应的报警指示灯。
二、I\O表
注:停止、过载、缺相、急停的输入信号接的是常闭。
三、控制程序
1.建立子程序
(1)变量表
建立变量表(图1),完成的子程序如图2所示。
(2)形参子程序
程序段1:每次调用程序的时候先把L11.3的状态清除,以免重复调用的时候出现干扰。
程序段2:启动的时候需要时间设定的小时或分钟大于0才可以启动,如果程序已经在运行了,则无法再触发启动.
程序段3:典型的起保停电路,当停止、报警、定时完成,触发会断开电路。
程序段4:当有过载L0.2或者缺相L0.3时会触发报警输出L11.2,复位的时候会暂时断开输出,如果故障没有解除,即使复位也没办法把报警消除。
程序段5:当故障复位输入的时候会复位报警。
程序段6:当第一次启动的时候会把运行时间清零,如果不清楚为什么,请看程序段2。
程序段7:当运行的时候,外部定时信号输入时,运行时间S会加一。
程序段8:当运行时间S=60时,运行时间M加一,然后把运行时间S清零。
程序段9:当运行时间M=60时,运行时间H加一,然后把运行时间M清零。
程序段10:运行的时候,运行的时间和设定的时间相等时,会输出定时完成信号,并断开程序段3的运行。
2.控制程序
程序段1:在自动的模式下,当电机3定时完成或报警的时候才会切换到一号电机启动,如果说电机启动2正在运行,第3台电机故障了也不会切换到第一台电机启动。
程序段2:启动I0.0或一号电机启动都可以对电机进行启动,对运行位输出。停止、急停、过载、缺相,由于外部用的是常闭开关,没有触发的情况下,对应的通道会为1,所以这里使用了常闭触点。
当停止或则急停触发时会使电机停止,当过载或缺相触发时,使电机停止,并输出报警。VW0、VW2是对电机运行的时间设定,VW4、VW6、VW8是电机的运行时间。
程序段3:原理和程序段1一致,只是对应的地址不一样,请参考程序段1。
程序段4:原理和程序段2一致,只是对应的地址不一样,请参考程序段2。
程序段5:原理和程序段1一致,只是对应的地址不一样,请参考程序段1。
程序段6:原理和程序段2一致,只是对应的地址不一样,请参考程序段2。
程序段7:当电机1或者电机2、电机3报警的时候会输出报警指示灯。
程序段8:当电机1或者电机2、电机3运行的时候会输出运行指示灯。
程序段9:如果报警指示灯和报警指示灯没亮的时候输出停止指示灯。
3.数据块
对每台时间进行初始化设定,如果需要可修改的时间,可以在触摸上建立组态程序,关联对应的变量。
总结:
以上就是整个项目的PLC程序,如果需要其他功能可以对程序修改,本案例是小编针对控制要求编写的程序,在手动情况下可单独对一台电机进行控制,在自动模式下为了确保电机正常轮换,请不要启动多台电机,如果说有一台电机出现故障,轮换的时候会跳过有故障的电机。
注:以上程序只供学习参考,如果说要用于实际生产中,需要根据项目和现场控制进行修改。
(来源:技成培训网原创,作者:邹志锐,转载请注明出处!)
搞不懂PLC循环程序编写,那都算不上大佬
前言
学习S7-300/400,不能仅仅局限于阅读或编写一段程序,更要从本质上认识PLC,方能更好的驾驭它。
一、PLC的循环处理过程
CPU中的程序分为操作系统 和用户程序 。
操作系统 用来处理PLC的起动、刷新输入/输出过程映像区、调用用户程序、处理中断和错误、管理存储区和通信等任务。
用户程序 由用户根据需求自己编写,以完成特定的控制任务。STEP7将用户编写的程序和数据维护在"块"中,如功能块FB、功能FC和数据块DB等。
PLC采用循环扫描的方式执行用户程序,即扫描工作方式。
图1 PLC的扫描工作方式
1. PLC得电或由STOP模式切换到RUN模式时,CPU起动,同时清除没有保持功能的位存储器、定时器、计数器,清除中断堆栈和块堆栈的内容,复位保存的硬件中断等。
2. 执行"系统起动组织块"OB100,该组织块可以自定义编程,实现一些初始化的工作;
3. 系统进入周期扫描,并起动循环时间监控;
4. CPU将输出过程映像区的数据写入输出模块;
5. 读取输入模块的状态,并写入输入过程映像区;
6. CPU调用OB1,执行用户程序,期间,根据需要可调用其他逻辑块(FB、SFB、FC及SFC),来实现控制任务;
7. 在循环结束时,操作系统执行所有挂起的任务,例如下载和删除块、接收和发送全局数据等;
8. CPU返回"第3步",重新启动循环时间监控。
9、在执行用户程序的过程中,如果有中断事件发生,当前执行的块将暂停执行,转而执行相应的组织块,来响应中断。该组织块执行完成后,之前被暂停的块将从中断的地方继续开始执行。OB1具有很低的优先级,除了OB90外,所有的组织块都能中断OB1。
二、过程映像区
PLC的存储器中,特别设置了一片区域用来存放输入信号和输出信号的状态,分别称之为输入过程映像区和输出过程映像区。在循环程序处理过程中,CPU不会直接访问I/O模块,而是访问CPU内部的过程映像区。
如图1所示,在整个扫描周期内,CPU会分配一段时间集中将输出过程映像区的状态传送给输出模块。同样,输入模块的状态/数据也是集中、统一读入输入过程映像区。在程序的执行阶段,CPU只和输入/输出过程映像区做数据交互,这样做的好处是,即使外部输入信号的状态发生变化,输入过程映像区的状态也暂时不变,可防止程序执行时发生"紊乱";而给到输出模块的数据是"同时"的,也可有效避免执行机构的动作序列的不同步。
对过程映像区的访问可以以位、字节、字 以及双字 的方式进行。
图2 过程映像区直接寻址
如图2所示,假设其为输入过程映像区的一部分:
· I1.3 即可访问到粉色部分的内容,即寻址一个位;· IB0 即可访问绿色部分的内容,即寻址一个字节;· IW2 :即可访问蓝色部分的内容,即寻址一个字;· ID4 即可访问橙色部分的内容,即寻址双字;三、扫描循环时间
扫描循环时间是指图1中相邻两次"循环时间监控"之间的时间,它与用户程序的复杂程度及CPU执行指令的速度有关。如下为315和416两款CPU的指令执行速度,相比315,CPU416的执行速度快很多。
CPU 315-2DP:0.3ms/1000条指令;
CPU416-2DP:0.08ms/1000条指令
扫描循环时间不是一成不变的,以下事件都会延长循环时间:
· 中断 · 诊断和故障处理 · 测试和调试功能 · 通讯 · 传送和删除块 · 压缩用户程序存储器 · 读/写MMC卡图3 最大循环时间与最小循环时间
如图3所示,在硬件组态中,可以修改最大循环时间,默认150ms。如果实际的循环时间超出设置的最大时间,CPU会调用组织块OB80,在其中响应这个故障。如果OB80中未编写程序,CPU将转入STOP模式。
400的CPU中还可以设置最小扫描周期,当用户程序较为简单,使得循环时间太短时,过程映像区会太过频繁的刷新,设置最小扫描周期可以避免这种情况。
四、系统的响应时间
PLC的外部输入信号发生变化的时刻到它所控制的外部输出信号发生变化的时刻之间的时间间隔,称之为系统的响应时间。它由以下三部分组成:
1、输入电路的滤波时间
输入模块通过RC滤波电路来过滤输入端引入的干扰,并消除因外接输入触点的动作时产生的抖动而引起的不良影响,滤波电路的时间常数决定了输入滤波时间的长短,一般为10ms左右。
2、输出电路的滞后时间
输出模块的滞后时间与模块的类型有关,
· 继电器型输出电路的滞后时间一般在10ms左右;
· 双向晶闸管型输出电路在负载通电时的滞后时间约为1ms,负载由通电到断电时的最大滞后时间为10ms;
· 晶体管型输出电路的滞后时间一般在1ms以下。
3、CPU扫描循环工作方式带来的滞后时间
由扫描工作方式引起的滞后时间最坏的情况下,可达2-3个扫描周期。
PLC总的响应延迟时间一般只有几毫秒到几十毫秒,对于一般的系统是无关紧要的。在一些特殊应用场合,要求输入、输出信号之间的滞后时间尽可能短的时候,可以选用扫描速度更快的PLC或采取中断等措施。
相关问答
PLC编程初学,最好有LAD图2.用一个按钮控制2盏灯,第1次按下...
[最佳回答]你这是是要用那种信号的plc编程啊,不同信号语句是不一样的
如何让旧的plc装上新的程序再用啊?
根据PLC的型号选择合适的编程软件,选用匹配的编程电缆读出旧的PLC中的程序,然后保存到电脑中,再把新的PLC与电脑连接,把保存的程序写入到新的PLC中,就OK了,...
plc的变址如何重复使用?
在PLC编程中,变址是指在程序中使用变量来存储地址值,使得程序可以根据计数器或其他条件对不同的地址进行操作。要实现变址的重复使用,可以采用以下方法:1....
PLC编程灯亮2秒后灭3秒后再亮4秒后再灭5秒依次循环,求高手指点?
PLC编程可以通过使用定时器和延时器来实现灯的循环亮灭。首先,我们可以设置一个定时器T1为2秒,并将其输出与灯的控制接口相连,使得灯在T1计时到达时亮起。接着...
西门子系统循环编程怎么编?
西门子系统的循环编程可以使用西门子的编程软件STEP7或TIAPortal来实现。以下是一般的步骤:1.打开STEP7或TIAPortal软件,并创建一个新的项目或打开一个...
西门子PLC单灯循环编程?
比较简单的方法,程序长,抛砖引玉,大家考虑用简单的。图片不好显示全,步骤是这样的。1、按键按下后置位一个标志位。用这个标志位去控制下面的计数器。2、用...
plc编程,按下按钮第一台电机启动,延时几秒后第二台启动。停止时第二台先停延时几秒后第一台停?
这个需要编写一个小程序来控制,比如用vb编写一个,里面加上两个timer控件,在第一个中设置5000毫秒计时一次,这时控制第二个timer启动,第一个关闭,第二个也关...
如何使用一体化的PLC对旧控制器进行改造?
说一些个人意见吧,通常对旧的电气控制设备改造的时候,如果希望改动比较小,那么通常是利用PLC去替代之前的二次控制回路中的继电控制部分,这样能最大限度的利...
西门子plc编程软件中网络1、网络2是什么意思?有什么用?-ZOL问答
2人讨论9430次围观关注问题写回答讨论回答(2)a370036089SIEMENS的指令里面没有这个指令的,是编程者自己定义的一个中间继电器的变量。对照程序的上下段...
plc单独编程到调试过程详情?
熟悉控住对象、PLC选型及确定硬件配置、设计PLC的外部接线。设计控制程序、程序调试和编制技术文件。1了解控制对象,确定控制要求这一步是系统设计的基础。...