plc高速计数器的最大值与最小值的读取方法
作者:老电工时间:2015-11-12 15:42:53
如何读出plc高速计数器的最大值和最小值
利用冒泡法:
西门子300/400程序:
假定十个数据,放在DB1中,安放顺序:
DBD0
DBD4
…
DBD36
下面程序:
复制代码 代码示例:
OPN DB 1 /////打开DB1这个数据块
L 10 ////装载10到MB0中,因为有十个数据,要进行十次排序,9次也可以的
LL0: T MB 0
L P#0.0 ////装载地址指针,这是关键,不要搞错了
LAR1
L 9
LL1: T MB 2 ////内部循环,进行9次,直到把最大值排到最后
L DBD 【AR1,P#0.0】
L DBD 【AR1,P#4.0】
<R
JC LL2 ////比较前后两个值,如果前面大于后面的,则前后数据交换
L DBD 【AR1,P#0.0】
T #m_temp
L DBD 【AR1,P#4.0】
T DBD 【AR1,P#0.0】
L #m_temp
T DBD 【AR1,P#4.0】
LL2: +AR1 P#4.0 ////指针自动进行加4,因为是浮点数,所以要跳过4个字节
L MB 2
LOOP LL1 ///这个指令自动的将A寄存器里的值减1
L MB 0
LOOP LL0
比如西门子S7-300/400中,MW20,MW22,MW24,MW26,MW28从中找出最大值和最小值,可以利用SCL,A:= MAX (IN1:=a, IN2:=b, IN3:=c, IN4:=d);
A:= MIN (IN1:=a, IN1:=b, IN1:=c, IN1:=d);来取最大值和最小值。
如三菱plc 可用SER指令如:SER D100 D0 D10 K10,其中D100 K10是指以D100为首的10个寄存器,而D0是要查找的数据 D10则是目标的个数注意不是目标的数据 而D11则是第一个符合目标的值D12是最后一个符合的目标值 D13是最小值的位置 D14就是最大值的位置。