登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:高手请进 :)

点击:944 回复:4

下面是我写的一段程序,功能是输入一个数值,程序在表内寻找与之相对应的数据,找到之后把后面的数据往前移一个字,把找到的这个数据覆盖,表格最后一个覆盖为0,表格范围减一,程序调试的时候字能正确往前移,但就是显示程序出错,我看来看去都找不出错在哪,望高手指教。或有更好方法实现这个功能
//打开数据块,得到表格指针
     L     P##point_1
     LAR1  
     L     W [AR1,P#0.0]
     T     #block_no
     OPN   DB [#block_no]
     L     D [AR1,P#2.0]
     LAR1  
//得到表格范围数据与第一个数据指针,初始化循环次数
     L     W [AR1,P#0.0]
     T     #table
     L     0
     T     #Cyc_find
     T     #Cyc_move
     +AR1  P#2.0
//寻找与输入编号相同的数据
_003: L     W [AR1,P#0.0]
     L     #P_NO
     ==I  
     JC    _002
     +AR1  P#2.0
     L     #Cyc_find
     L     1
     +I    
     T     #Cyc_find
     JU    _003
//得到位移次数
_002: L     #table
     L     #Cyc_find
     -I    
     L     1
     -I    
//位移循环开始
_001: T     #Cyc_move
     L     W [AR1,P#2.0]
     T     W [AR1,P#0.0]
     +AR1  P#2.0
     L     #Cyc_move
     LOOP  _001
//循环结束,表格范围-1
     L     0
     T     W [AR1,P#0.0]
     L     #table
     L     1
     -I    
     T     #table
07-07-06 15:24
1楼
该帖内容不符合相关规定!
07-07-06 15:47
为什么不用两个指针呢!!!!真是很奇怪,C的查询基础啊!!
07-07-06 18:43
我只是初学者,没有学过C,刚刚搞明白间接寻址,也不容易了. 已经搞定了,好像是不能用JU指令,总之不用JU之后就可以了
最后修改:2007-7-9 15:43:44
07-07-09 12:23
是的,用了JU以后,程序认为是死循环,然后就是系统错误了。
07-07-09 23:11

工控新闻

更多新闻资讯