您现在所在的是:

PLC论坛

回帖:47个,阅读:18506 [上一页] [1] [2] [3] [4] [5] [下一页]
1165
zhw76
文章数:39
年度积分:50
历史总积分:1165
注册时间:2005/2/23
发站内信
发表于:2008/8/25 22:52:00
#30楼
如果在触模屏上限制D0数值输入范围1-1000的话,那么以下程序刚好十条:

   X0
-------||-----------------------------[FMOVP     K0  K4Y0 K100]
           |
           |
           |---------[< Z0 D0 ]-------------------------[INC    Z0]
           |
           |
           |--------------------------------------------[ SET   Y0Z0 ]
1329
xiongwanghua
文章数:154
年度积分:50
历史总积分:1329
注册时间:2006/11/7
发站内信
发表于:2008/8/30 16:50:00
#31楼
我觉得简单,数字大于等于0或1000.你在触摸屏上做一数字输入元件不久行了吗?程序里面像做密码程序一样来写就简单了
小熊猫
匿名用户
文章数:N/A
年度积分:0
历史总积分:0
注册时间:2008/7/13
发站内信
发表于:2008/8/30 23:25:00
#32楼
该用户被锁定,回复内容不予显示!
1168
gm99cn
文章数:80
年度积分:50
历史总积分:1168
注册时间:2007/10/18
发站内信
发表于:2008/8/31 10:59:00
#33楼
在发一个CPU执行的语句尽量少的程序。先字操作再位操作,以96点为例(多了不好模拟)。
IW0输入值,范围0-96(IW0<0和=0一样无输出;IW0>96和=96一样全输出)。
     L     IW     0
     T     LW     0                    //LW0个数
     L     3                           //总数量 这里=32*3
aa01: T     LW     2                    //LW2 =int(总数量/32)
     L     32
     *I    
     T     LW     4                    //LW4指针双字高位
     L     LW     0
     <=I                               //指针双字高位<=LW0个数?
     JCN   aa02                        // >则跳转
//指针双字高位<=LW0个数,指针双字赋1。
     L     LW     4
     L     32
     -I    
     LAR1                              //地址指针
     L     DW#16#FFFFFFFF
     T     QD [AR1,P#0.0]              //赋值
     JU    aa03
aa02: NOP   1
//指针双字高位>LW0个数。
     L     LW     4
     L     31
     -I                                //指针字节低位
     L     LW     0
     >I                                //指针字节低位>LW0个数?
     JCN   aa04                        //<=则跳转
//指针字节低位>LW0个数,指针双字赋0。
     TAK  
     L     1
     -I    
     LAR1                              //地址指针
     L     DW#16#0
     T     QD [AR1,P#0.0]              //赋值
     JU    aa03
aa04: NOP   1
//指针双字高位>LW0个数,/指针字节低位<=LW0个数。
     TAK  
     L     1
     -I    
     LAR1                              //地址指针
     L     LW     0                    //读总个数
     TAK  
     -I    
     T     LW     6                    //LW6双字内个数
     L     16
     ==I                               //双字内个数=16?
     JCN   ab01                        //不=则跳转
//双字内个数=16,指针双字赋 0000FFFF。
     L     W#16#FFFF
     T     QW [AR1,P#0.0]
     TAR1  
     L     16
     +I    
     LAR1                              //地址指针+1字(16位)
     L     W#16#0
     T     QW [AR1,P#0.0]              //赋值
     JU    aa03
ab01: NOP   1
//;;9
     JP    ab02                        //双字内个数>16则跳转
//双字内个数<16
//LW6-字内个数
     TAR1  
     T     LW     8
     L     16
     +I    
     LAR1                              //地址指针+1字(16位)
     L     W#16#0
     T     QW [AR1,P#0.0]              //赋值
     L     LW     8
     LAR1  
     JU    ab03                        //跳转到字内赋值
ab02: NOP   1
//双字内个数>16
     L     W#16#FFFF
     T     QW [AR1,P#0.0]              //赋值
     TAR1  
     L     16
     +I    
     LAR1                              //地址指针+1字(16位)
     L     LW     6                    //LW6双字内个数
     L     16
     -I    
     T     LW     6                    //LW6-字内个数
ab03: NOP   1
//字内赋值
     L     0
     T     LB    10
     L     16
ab04: T     LW     8                    //循环次数
     L     LB    10
     INC   1
     T     LB    10                    //LB10=LB10+1
     L     LW     6
     <=I                               //比较
     =     Q [AR1,P#0.0]               //赋值
     TAR1  
     L     1
     +I    
     LAR1                              //地址指针+1位
     L     LW     8
     LOOP  ab04
aa03: L     LW     2
     LOOP  aa01
//完
以上为西门子S7-300代码。
mail:gaojian@gaojian100.cn网址:gaojian100.cn
39382
知道一点
文章数:23163
年度积分:1074
历史总积分:39382
注册时间:2004/6/12
发站内信
工控人谈电商
2013国庆活动
2011国庆活动
发表于:2008/9/1 9:34:00
#34楼
这是一个程序?96点?

哈哈 1000点还不占满啦
快乐 幸福 自由 比什么都重要
1168
gm99cn
文章数:80
年度积分:50
历史总积分:1168
注册时间:2007/10/18
发站内信
发表于:2008/9/1 13:35:00
#35楼
估摸你也没细看,这段程序控制点数可调。
在第三行,“L  3   //总数量 这里=32*3”,把这里的3改为X,X∈{整数|X>0},点数=32*X。如X=100。
mail:gaojian@gaojian100.cn网址:gaojian100.cn
890
dyhui
文章数:7
年度积分:50
历史总积分:890
注册时间:2003/2/10
发站内信
发表于:2008/9/1 15:44:00
#36楼
X(需开灯数量)除以16(16位的PLC指令)后取整的Y0,根据Y0来点亮16*Y0的灯数!
求2的X(需开灯数量)想方,然后再减1的Y1!根据Y1点亮其余的灯数!
1072
春意机电
文章数:32
年度积分:50
历史总积分:1072
注册时间:2007/3/15
发站内信
发表于:2008/9/2 12:35:00
#37楼
用十行是不可能的。
1072
春意机电
文章数:32
年度积分:50
历史总积分:1072
注册时间:2007/3/15
发站内信
发表于:2008/9/2 12:35:00
#38楼
用十行是不可能的。
39382
知道一点
文章数:23163
年度积分:1074
历史总积分:39382
注册时间:2004/6/12
发站内信
工控人谈电商
2013国庆活动
2011国庆活动
发表于:2008/9/2 13:40:00
#39楼
以下是引用春意机电在2008-9-2 12:35:00的发言:
用十行是不可能的。
看看33楼。

其它的用 -1 or +1 不可以。
联机试试再下结论。


[此贴子已经被作者于2008-9-5 20:58:14编辑过]
快乐 幸福 自由 比什么都重要

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

124.8008