西门子400排序问题(除了排列组合是否可以堆栈?) 点击:2432 | 回复:2



bc12305

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:27
  • 注册:2011年11月14日
发表于:2012-12-07 21:50:28
楼主
现在刚毕业在做一个污水处理的工程遇到了个比较棘手的难题,也许是新手,望有经验的工程师们帮忙解决下。具体情况是这样的:水过滤为V型滤池 ,有八组每一组都有独立的PLC进行控制 ,一组故障不会干扰别组运行。但是在反冲洗的时候是这样判断的,当八个滤池任何一个满足反冲洗条件的,都会向中控PLC发出冲洗请求。中控PLC收到子站PLC发来的冲洗请求的时候就必须要进行一个很详细的排序,因为滤池反冲洗只能有一个冲洗,别的满足条件的组则排序等待(就是同一时间只能有一个滤池进行冲洗)。问了很多人说是需要用堆栈比较简便 ,但是问他们具体怎么做也给不出相关资料。本人只能用最笨的排列组合来做。希望有经验的给下见解,能给个比较详细的堆栈程序更好,没有程序给个相关堆栈的资料也行 。望 帮帮忙!!!十万火急!!!



王者-曹建军

  • 精华:2帖
  • 求助:0帖
  • 帖子:813帖 | 2407回
  • 年度积分:0
  • 历史总积分:16025
  • 注册:2011年12月25日
发表于:2012-12-07 21:56:43
1楼

1、STEP7 300的堆栈命令?
详见:
详见《基于Siemens S7-300/400 PLC的FIFO功能实现》连接:
http://blog.cechina.cn/xxkjfw/228942/message.aspx
《实现每次20字节FIFO功能FB200功能块的代码,以及实际应用举例》连接:
http://blog.cec.pandabuying.com/hylotus/228942.aspx
2、排序命令有吗?
没有。需要自己编制。例如:
转帖:
用STL语言实现冒泡排序:
假定十个数据,放在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

 这是300的! 

bc12305

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:27
  • 注册:2011年11月14日
发表于:2012-12-07 22:11:54
2楼
回复内容:
对:王者-曹建军关于1、STEP7 300的堆栈命令?详见:详见《基于Siemens S7-300/400 PLC的FIFO功能实现》连接:http://blog.cechina.cn/xxkjfw/228942/message.aspx《实现每次20字节FIFO功能FB200功能块的代码,以及实际应用举例》连接:http://blog.cec.pandabuying.com/hylotus/228942.aspx2、排序命令有吗?没有。需要自己编制。例如:转帖:用STL语言实现冒泡排序:假定十个数据,放在DB1中,安放顺序如下:DBD0DBD4…DBD36下面是西门子的程序OPN   DB    1                 /////打开DB1这个数据块      L     10  ////装载10到MB0中,因为有十个数据,要进行十次排序,9次也可以的LL0:  T     MB    0      L     P#0.0   ////装载地址指针,这是关键,不要搞错了      LAR1        L     9LL1:  T     MB    2   ////内部循环,进行9次,直到把最大值排到最后      L     DBD 【AR1,P#0.0】      L     DBD 【AR1,P#4.0】      内容的回复:

不会就这么点吧

热门招聘
相关主题

官方公众号

智造工程师