搞不懂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初学建议,不用买PLC,利用PLC仿真功能入门PLC
PLC,是一门实践性很强的技术,因为它是服务工业生产的,而工业设备最基本也是最重要的要求就是,可靠稳定。
而PLC技术不同于计算机编程,一套合格完善的PLC控制系统,PLC程序之占一部分,还需要和各种外围设备配合,比如变频器,伺服,三相异步电机,气缸,液压系统。以及接近开关,编码器,开关按钮等。把这些外围传感器以及驱动设备,有机地结合成一个整体,才能发挥作用。所有,仅仅是PLC程序,没有任何意义。而仅仅是在纸上或PPT中的程序也没有意义,必须在PLC编程软件中编译通过B并下载到PLC才可以。因为你不是林正英,把程序画在纸上,贴到电机上,电机就转。
所以,学习PLC,实践很重要。这一点,又不同于计算机编程,只要有个计算机就行了。而学习PLC,不光要有计算机,还有有实物,这对初学者来说,确实是一个负担。因为工业产品价格都不便宜,而且售后对工业产品来说很重要。因为你一旦买到有问题的产品,或是因为各种原因导致产品损坏,那是很麻烦的。
那么,有没有办法呢?有,当然有,我们可以充分利用PLC的仿真功能。所谓仿真,就是用软件虚拟一个PLC,验证我们的程序,当然,PLC仿真也不是万能的,它都能干什么呢?
1.帮我们学习PLC梯形图的基本元素
梯形图,是PLC基础中的基础,是PLC编程原理的具体体现,特别是在工厂从事设备维护,维修的电工朋友,梯形图是联系电气控制和自动控制的纽带。常开,常闭,自锁,互锁,定时器,计数器,这些是PLC的基础。无论多么负载的梯形图程序,都是有这些基本要素组成的。因此,掌握这些要素,才算是入门。如何掌握呢?光看书是没用的,在纸上画符是没用的,只有练。那么,怎么验证我们的程序呢?仿真!
比如,对于定时器的使用,是很多初学者的最大障碍,而定时器,是完全可以使用PLC仿真验证的,即使你没有PLC,也完全可以用仿真来学习定时器的使用。
2.验证我们编写的程序
等我们学会了梯形图的基本元素,就可以尝试写程序了,没有人一上来就可以写很复杂的程序,都是从简单到复杂,一步步过度的。当然,天才除外。不过天才的概率是极低的。所以,初学者还应该脚踏实地,一步一个脚印。犯错不可怕,可怕的是屡次犯同样的错误和犯错后不知所措。如何验证我们的程序是否正确呢?仿真!
通过仿真,我们可以发现程序中的错误,可以深入了解PLC的循环扫描原理。
3.仿真各种数学计算
数学计算,是PLC编程中经常用到的,因为很多工艺计算都需要数学计算。有些人可能不以为意,数学计算有什么好仿真的!大错特错,电脑不同于人脑,如果你在写程序的时候,数据类型搞错,变量搞错,肯定得不到正确的结果。而数学计算,是最容易通过仿真发现错误的。
4.特殊功能块
有些功能,也是可以仿真的,比如PID功能块,就可以通过仿真,来验证我们的设置和程序是否正确。
仿真,可以解决我们学习中的大部分疑惑,当然仿真不是万能的,有些是无法仿真的。比如,边沿触发,有些PLC可能就不能仿真,不过,随着技术的发展,这种PLC越来越少了。
至于控制伺服,没有伺服当然是不能仿真的,只能仿真伺服控制的逻辑是否正确。通讯,当然是不能仿真的,不过,有很多工具软件,可以帮助我们学习通讯,以及解决调试过程中的问题,比如各种串口工具。所以,从一定程度上讲,PLC通信是可以仿真的。像西门子PLC的博途平台,它的网络通信,比如TCP通信,S7通信就是可以仿真的,当然,这个仿真只能验证我们程序调用FB以及程序的结构是不是正确的,但对初学者来说,完全够了。
5.变频器,接触器,继电器控制
有人又要问了,要不要买变频器,接触器,继电器?有钱可以买,但不建议买,我们是有钱,但不是有病。买这些东西非常不划算。变频器对这些元件的控制,其实就是对输出点的控制。PLC仿真,完全可以模拟对这些自动化元件的控制。
总之,PLC能仿真的,都是初学者最该学习和掌握的,而不能仿真的,初学者无论如何是很难学会的。比如,通讯,控制伺服,如果你连梯形图都搞不懂,就学通讯,控制伺服,你觉得可能吗??
相关问答
plc如何实现不同程序循环?
要用PLC实现程序的无限循环,我们可以使用时间顺序循环的指令,指令如下:1、用时间继电器T0驱动T1。2、再由T1驱动T2。3、T2驱动T3。4、直到最后一个,用TN...
如何在三菱PLC编程软件中全部复制全部程序段?-ZOL问答
建议用三菱的GPPW全系列PLC编程软件,支持中文,还支持PLC的模拟仿真。先将程序转换一下,然后点击写入PLC,根据提示操作就行了,写入的同时会自动把原来的程序覆盖...
plc单独编程到调试过程详情?
熟悉控住对象、PLC选型及确定硬件配置、设计PLC的外部接线。设计控制程序、程序调试和编制技术文件。1了解控制对象,确定控制要求这一步是系统设计的基础。...
plc程序先写手动还是自动?
先写手动。手动程序按一个按钮产生一个动作,需要多个按钮,一个动作至少一个按钮。自动程序按一个按钮产生一系列完整的动作,不需要再干预,直到按下停止按钮...
做plc是直接编程还是先做调试?
1.先做调试再编程。2.因为在做plc编程之前,需要先了解设备的硬件结构和工作原理,然后通过调试来验证设备的正确性和稳定性,最后再进行编程。3.在调试过程中...
plc先接线还是先编程?
PLC的接线和编程是没有严格意义上的先后顺序的。接线是属于安装的过程,编程是属于软件编写过程,可以同时进行,也可以先把线全部接好,再进行编程,也可以先把...
把程序PLC中读出来之后,PLC中还有程序吗?
读取PLC中的程序并不会从PLC中删除程序,除非有特殊的操作指令。PLC的程序存储在非易失性存储器中,即使读取到外部设备,PLC内部仍会保留程序。读取后,可以对...
plc编程十大经典程序?
PLC编程十大经典程序有:1.定时/计时程序;2.单路数字量输出程序;3.开关量按键程序;4.比较数字量程序;5.数据存储程序;6.报警记录程序;7.模拟量输出...P...
三菱FX系列PLC能不能在RUN(运行模式下)更改程序并上传到PLC?
看看你是FX什么系列,FX0系列是必须停机才可以上传到PLC里面,FX1S,FX1N,FX2N,FX3系列都可以在线修改程序,但是必须在PLC编程软件里面“工具”---选项----运...
plc除了梯形图还有什么编程?
PLC除了梯形图还有其他的编程方法。因为PLC还有类似于功能块图、指令表、结构化文本等多种编程方式,不同的编程方式可以适用于不同的实际场景,提高编程的灵活...