资深工程师分享:PLC程序设计思路,初学者福利
前几天有个学员咨询一个程序设计的问题,程序的控制要求如下:需要控制5台电机的运行,每台电机运行时需要记录运行时间,电机启动运行时,根据记录的运行时间,从小到大,每个2s依次启动电机的运行。
我想对于这个程序的控制要求来讲,他的难点在于如何对这些电机运行时间进行排列,排列好了后,如何根据排列的顺序去起动电机的运行,从这个控制要求中我们可以看出,这主要是分为两个部分来完成这个程序的设计的:
第一部分:用于对电机的运行时间进行从小到大顺序的排列;
第二部分:根据排列好的数据,如何判断需要起动那一台电机。
这里我们以西门子S7-200SMART系列PLC为例,先说说,如何编写一个数据排列的带参数的子程序。
数据排列带参数子程序设计思路:西门子S7-200系列的PLC中不像三菱的FX系列PLC具有数据排列的指令,因此我们要实现这个数据的排列功能,必须自己去搭建一个这样的功能块,在搭建这个功能块的时候,会使用到间接寻址和循环指令,同时还需要应用到带参数的子程序。
那么如何编写一个数据排列的子程序呢?假设有5个数据需要把他们的数据的大小按照顺序从小到大排列,那么我们可以先在这五个数中找到最大的数放在最后面。然后在剩下的四个数中找到最大的数放到倒数第二个的位置,接着在剩下的三个数中找到最大的值放到倒数第三的位置,依次下去,这样当全部比较完后,我们的数据就按照从小到大的顺序排列好了。那么很明显,我们需要用两个循环指令进行嵌套。外层的循环指令需要循环4次,而内层的循环指令的循环次数是会变化的,因为第一次从5个数据中找出最大值,循环4次,第二次的时候从4个数据中找出最大值,循环3次,依次下去,每次需要改变循环的次数。
如何找出最大值呢? 我们可以进行比较,首先用第二个数跟第一个数比较,如果第二个数比第一个数大,那么指针往下移动变成第二个数跟第三个数比较,如果第二个数比第三个数大,那么对第二个数和第三个数进行交换,依次下去,当比较完成后,最大的数就放到最后的地址里面去了。
程序设计:
(1)建立变量表
(2)根据变量表,编写数据排列子程序
第二部分的内容: 根据排列好的数据,如何判断需要起动那一台电机。
在启动电机时,我们需要把每一台电机运行的时间拿过来与排列好的数据进行比较,看看他是位于我们这个排列好的数据中的的什么位置。然后根据这个位置来判断启动的时候。
设计思路:
在这里面我们会用到两个功能,第一个功能时把我们电机运行的时间,按照编号顺序放到表格中,例如VW20到VW28分别表示电机1到电机5的运行时间,把它放到表格中,而后把我们排列好的数据,拿过来与表格中的数据进行比较(可以使用查表指令),看看最小的值时位于表格中的哪个位置,根据查表指令所查找的位置来启动那条电机,比如查找出来的值时3则表示的就是第三台电机的运行时间最少,可以启动这第三台电机,这里我们需要用到表格指令及间接寻址。
程序:
总结
本程序作为一个框架程序,主要应用到了以下几个内容,间接寻址的应用,循环指令的应用,带参数子程序的应用,查表指令的使用,希望读者看完后,对自己以后设计程序时思路会有所启发,若有考虑不周之处或更好的方法,望指出,谢谢。
本文为技成曾鑫老师原创作品,未经同意转载必究
↓↓↓下载可免费观看西门子系列课程
PLC程序架构,理解这些,让你编写程序更容易,思路更清晰
经常会遇到朋友问我们如何编写PLC程序,当然单纯的写个程序有各种不同的思路,没有什么固定的模式,每个工程师都有自己的编写程序的习惯,但是新的编程人员还没有形成自己的习惯,我呢根据自己的经验,分享给大家,仅供参考。
首先,前面的文章和视频也提过,做项目的一个流程,工艺过程、选型、等我们今天就略过,我们先从做符号表开始,如下图所示,可以在默认变量表里编写地址和符号,也可以新建多个变量表,把变量进行分类,方便查询和使用建立符号表
接着就可以做多个重复功能的FB功能块,如电机、气缸和多个重复功能的,例如本例子中我们有4个电机、8个气缸,先建立两个FB块,FB1/MOTOR和FB2/CYLINDER,这两个程序块如何编写,这篇文章就不赘述,我们今天就谈框架。建立基础功能块
基本功能的FB块建立好之后,我们就可以进行调用,建立新的FB块,FB3/FB_MOTOR_CTRFB_DT_CYLINDER_CTR,FB_CT_CYLINDER_CTR如下图所示,把所有的执行元件都调用。
调用基础功能块
接着我们就应该考虑模式的控制,分为手动和自动上面一段是手动控制,下面一段是自动控制,先建立变量,手动的在一个DB块中,自动的在另一个DB块中,这样不至于程序混乱。控制模式编辑
手动变量数据块
自动变量数据块
其中手动变量连接的是上位机触摸屏的变量,这样达到手动模式,就可以直接控制执行元件的动作,如果自动模式下,我们建立自动控制程序,如下图所示,每个区域分成一个FC块,这样更容易区分建立FC自动控制块
自动变量的连接
在自动逻辑中输出自动程序变量连接FB调用块中的对应变量即可自动控制,自动程序如何写,我们今天不做赘述。整个程序的流程框架基本上如此,再加上一些报警的控制和显示,完成任务!
相关问答
怎么搭建PLC的最小系统?
要搭建一个最小的PLC系统,您需要以下基本组件:1.中央处理器(CPU):PLC系统的核心部件,用于执行PLC程序和控制逻辑。2.输入输出模块(I/O):用于将外部信...4...
plc电气工程师怎么入门_电气工程师_帮考网
PLC电气工程师入门的步骤如下:1.学习基础理论知识:PLC电气工程师需要掌握电气原理、电子技术、自动化控制等基础理论知识,这些知识可以通过自学或...
如何通过以太网远程控制PLC?
远程控制plc可以通过远程电脑进行连接,这样需要使用现场有人配合,准备电脑甚至于改动线路。通过EMCP物联网云平台就可以实现在任何有外网的情况下实时监控、控...
如何实现PLC远程监控及远程调试?
如何实现PLC远程监控及远程调试?随着工业物联网的发展,作为设备厂家需要提供设备联网方案给到工业用户,需要对设备运行数据远程采集,对设备远程维护,实现高...
三菱PLC培训班有哪些需要注意的
[回答]东莞市汇缘教育培训学校的项目培训:PLC学习培训、电工培训、伺服电机学习培训、机械臂编程培训PLC}通信培训、三菱PLC学习培训、机电一体化学习培训...
机械电子专业的学生需要掌握哪些编程语言?
取决你具体学的是么?机器学习的底层优化:C/C++,适当学习一些assembly和intrinsics。-机器学习框架和算法的开发优化:C/C++,CUDA。根据工作的侧重可能需要...
透传模块怎么和plc相连?
透传模块和plc相连的方法:在出水口和进水口各安装一个无线传输发送设备来收集数据,在PLC上装一个无线接收模块,通过无线透传的点对多方式,就可以把污水处理...
如何实现污水处理厂数据无线透传组建PLC网络?
可以考虑用无线数据传输模块来解决这个问题。在出水口和进水口各安装一个无线传输发送设备来收集数据,在PLC上装一个无线接收模块,通过无线透传的点对多方式,...
如何搭建一个变频器系统?
变频器,本质是一个可以控制的交流电源而已,从控制角度来看,搭建所谓的变频器系统比较简单,主要是开始选型要正确了,然后考虑工艺和设备的具体状况,设计好线...变...
英语翻译该方案主要利用TMS6437嵌入式主板、相机、光源、触...
[回答]ThisschemeismainlyusedTMS6437embeddedmainboards,cameras,lamp-house,touchscreensandPLCtob...