三菱PLC程序设计思路分享,程序设计的问题,程序的控制要求如下:需要控制5台电机的运行,每台电机运行时需要记录运行时间,电机启动运行时,根据记录的运行时间,从小到大,每个2s依次启动电机的运行。
我想对于这个程序的控制要求来讲,他的难点在于如何对这些电机运行时间进行排列,排列好了后,如何根据排列的顺序去起动电机的运行,从这个控制要求中我们可以看出,这主要是分为两个部分来完成这个程序的设计的:
**部分、用于对电机的运行时间进行从小到大顺序的排列
**部分、根据排列好的数据,如何判断需要起动那一台电机
这里我们以西门子S7-200SMART系列PLC为例,先说说,如何编写一个数据排列的带参数的子程序。
数据排列带参数子程序设计思路:
西门子S7-200系列的PLC中不像三菱的FX系列PLC具有数据排列的指令,因此我们要实现这个数据的排列功能,必须自己去搭建一个这样的功能块,在搭建这个功能块的时候,会使用到间接寻址和循环指令,同时还需要应用到带参数的子程序。那么如何编写一个数据排列的子程序呢?
假设有5个数据需要把他们的数据的大小按照顺序从小到大排列,那么我们可以先在这五个数中找到*大的数放在*后面。然后在剩下的四个数中找到*大的数放到倒数**个的位置,接着在剩下的三个数中找到*大的值放到倒数第三的位置,依次下去,这样当全部比较完后,我们的数据就按照从小到大的顺序排列好了。那么很明显,我们需要用两个循环指令进行嵌套。外层的循环指令需要循环4次,而内层的循环指令的循环次数是会变化的,因为**次从5个数据中找出*大值,循环4次,**次的时候从4个数据中找出*大值,循环3次,依次下去,每次需要改变循环的次数。
如何找出*大值呢?我们可以进行比较,首先用**个数跟**个数比较,如果**个数比**个数大,那么指针往下移动变成**个数跟第三个数比较,如果**个数比第三个数大,那么对**个数和第三个数进行交换,依次下去,当比较完成后,*大的数就放到*后的地址里面去了。
程序设计:
(1)建立变量表
(2)根据变量表,编写数据排列子程序