大家好,欢迎来到IT知识分享网。
许多初学PLC的朋友在初次写程序的时候基本上都是在主程序中进行一些小程序的练习,比如写一个电机正反转或者星三角启动程序等等,这时候程序非常简单,全部都写在主程序中没有问题,但是实际工作中使用PLC做的项目通常都是相对比较复杂的,以我的工作经验来说,如果过我们把所有的程序都写在主程序里面,那就会导致程序比较臃肿和混乱,调试的时候更是会感到“头大”,因此我们就需要考虑有没有什么好的方法来解决这个问题?还有一种情况就是如果有一段程序我想要程序一旦满足条件,我就想不管别的程序想立即执行这段程序,该如何做?

实际项目中的程序结构
我们今天要讲的子程序和中断程序就可以解决上述两个问题,并且我还想着重给大家强调一下,主程序、子程序、中断程序这几个概念往小了说绝对不仅限于某个品牌的PLC,而是所有品牌的PLC都会有这个概念,往大了讲几乎只要牵涉到编程的东西,比如软件开发编程、工业机器人编程、数控机床编程、单片机编程等等,不管用的C语言也好、梯形图或者别的什么语言也罢,主程序、子程序、中断程序这几个编程的核心概念都是有的,可能只是叫法不一样而已,所以大家借着学习PLC的机会应该完全理解这几个概念,这样才能为以后的深入学习打下牢固的基础。

子程序嵌套调用执行顺序
那么什么是主程序?从字面意思解释即可就是主要的程序,我觉得说“主要”还有点谦虚,准确来说是必须要有的程序,一个程序之中可以没有子程序、中断程序但是主程序是必须要有的,PLC程序执行就是从主程序的第一行到最后一行循环扫描执行,如果第一行就是子程序,那就进入子程序里面执行完里面的程序,再从子程序里面出来再返回主程序原来的位置执行下一行程序,如果主程序里面什么程序都没有,那就是空跑一边主程序什么事情都不做而已,主程序就是可以不做事,但是必须有。

中断程序执行
接下来说一下什么是子程序?子程序就是根据功能或者其它标准进行划分后创建的程序块,在主程序中调用各个子程序之后,子程序就可以运行了,值得注意的是子程序里面还可以调用子程序。比如一个项目你可以根据功能将其划分为初始化程序、手动程序、自动程序、故障处理等等,并且根据这些子程序的功能编写相应的程序,然后在主程序中调用即可,这种划分方法使得程序结构非常清晰,并且很好排查故障,手动有问题就去手动程序块里查问题,自动有问题就去自动程序块里查问题,哪里有问题查哪里而无需关注其余的程序块,大大提高了程序的调试效率。
再有假设你有100个电机需要控制正反转,你会怎么做?写100遍这个程序?工作量大、容易出错不说,后面如果客户提出需求要改下里面的逻辑,你再去一个一个改?下次别的项目再碰到同样的需求再去写一遍?上述问题的解决方法肯定不是再去100遍,对于大多数工程师能想到的是写一个电机正反转子程序,调用100次,这时候只需要填写子程序的引脚即可,相比前一种在写100次程序已经好了很多,减少了工作量,并且有新逻辑需要修改时,只需要修改一下子程序里面的程序即可,而对于高级工程师可能会把这个子程序创建成库文件,方便下次别的项目直接调用,还有他会把所有的参数通过循环传送给子程序接口,只需要简简单单几行程序即可实现100个电机正反转的控制,下次变成200个电机,只需要修改循环次数为200即可,反过来想想前两种的工作量肯能会累到吐血。

子程序示例
最后来说一下什么是中断程序,以实际生活为例,假设你正在看电视,听到有客人敲门,你肯定不会等看完电视之后再去给客人开门,而是先停止看电视去给客人开门,给客人安排好了之后你再去看电视。PLC程序执行也是这样,PLC正常情况下在一遍一遍扫描执行程序,当有个中断事件发生时候,它会停止当前的程序执行,先去执行中断程序,等执行完中断程序之后再继续回到原来的程序点继续往下执行,因为中断程序优先级比普通程序高,所以先执行,当然同样是中断事件也会有不同的优先级,当两个中断事件同时发生时,就先执行优先级高的中断事件所关联的中断程序。总而言之就是中断事件优先级高的中断程序先执行,接下来执行中断事件优先级低中断程序的,最后执行普通程序。

中断程序示例
好了,关于主程序、子程序和中断程序给大家聊到这里,此次只是给大家介绍下基本概念,后面我会详细讲解每种程序,如果对电工知识及PLC知识感兴趣请关注我并查看主页内往期的技术分享,我会持续分享关于PLC和电工方面知识,欢迎大家在评论区留言讨论,同时也希望大家能够点赞、收藏、并转发给你身边想学习电工及PLC的朋友,谢谢大家!#PLC##自动化##电工#
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/172305.html