首页 上一页 1 2 下一页 尾页

请读一下下面这段小程序 点击:1832 | 回复:26



小鱼熬酱

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 47回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2007年6月18日
发表于:2007-08-28 17:13:00
楼主
    各位:请大家读一下下面这个小程序段,劳烦各位给注释一下,看得我有点头晕,谢谢了!!

      L     MW    20
      ITB   
      L     W#16#2000
      OW    
      T     MW    24
      L     MW    22
      ITB   
      L     W#16#2000
      OW    
      T     MW    26



yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2007-08-28 20:11:00
1楼
L     MW    20   //将MW20-》ACCU1
      ITB     //将ACCU1中的数据转换为BCD
      L     W#16#2000  //将16进制Word数据2000送入Accu1,原ACCu1数据送入Accu2
      OW    //字或,实际就是对数据的第12,13位置位
      T     MW    24   //送入MW24中
      L     MW    22
      ITB   
      L     W#16#2000
      OW    
      T     MW    26
实际上这个程序就是将数据的第12,13位置1后分别送入MW24和MW26,由于数据内容相同,程序可以简化为:
      L     MW    20
      ITB   
      L     W#16#2000
      OW    
      T     MW    24
      T    MW  26
而在西门子编程中,采用对12,13位数据置位的方法的典型应用就是修改S5time的时基。

千山独步

  • 精华:0帖
  • 求助:0帖
  • 帖子:159帖 | 3098回
  • 年度积分:4
  • 历史总积分:21261
  • 注册:2007年2月02日
发表于:2007-08-28 20:36:00
2楼
学习一下!

小鱼熬酱

  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 47回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2007年6月18日
发表于:2007-08-29 08:27:00
3楼
   yuanle老师:
       这段小程序是为了改变时基的啊!我能再向您请教一下不,为什么要改变时基呢,把16进制数2000赋值过去是什么样的结果呢?
   在什么情况下需要更改时基呢?
   我是个初学者,问题多多,呵呵,请不要见怪啊!
        

liu xianghou

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 195回
  • 年度积分:0
  • 历史总积分:179
  • 注册:2007年8月17日
发表于:2007-08-29 10:57:00
4楼
MW20和MW22的内容是一样的吗?怎么能把MW22的内容简掉?
S5TIME的时间格式是12、13位时基,0-11位是BCD码表示多少个时基,所以时基改了时间也就改了

不过我觉得不太像是改时基的,运算之后时基有可能是1S也有可能是10S

小鱼熬酱

  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 47回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2007年6月18日
发表于:2007-08-29 11:49:00
5楼
 liu xianghou老师:您好!
     请问,S5TIME的时间格式为什么是12,13位时基呢?您能给我解释解释什么是时基吗? W#16#2000  16进制数2000的BCD码形式是
 1000 0001 1001 0010   那么怎么才能知道相或的结果是改变12,13位呢,如果将MW20中赋值3(10进制)那么跟2000(16进制)相或的结果可是数值上改变太大了啊!实在是搞不明白,所以请大家好好教教我这个初学者好不好

小鱼熬酱

  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 47回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2007年6月18日
发表于:2007-08-29 11:52:00
6楼
  还有请问大家,为什么要改变时基,时基到底是做什么用的??如何改变时基,具体怎么应用???拜托,很想搞明白,或许大家可以介绍我看看哪本书也可以的。谢谢了!

liu xianghou

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 195回
  • 年度积分:0
  • 历史总积分:179
  • 注册:2007年8月17日
发表于:2007-08-29 12:36:00
7楼
12、13位为什么是时基我也不清楚,只是西门子就是这么规定的。时基就是时间基准(也就是分辨率)。比如S5T#500MS换成16进制看的话就是W#16#0050。实际时间=时基*时间值(0-11位)。16进制的2000二进制表示为2#0010_0000_0000_0000
这个好像都是很基本的概念啊

如果要改变时基的话可以直接对12、13位进行操作啊,或者是先或后与

liu xianghou

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 195回
  • 年度积分:0
  • 历史总积分:179
  • 注册:2007年8月17日
发表于:2007-08-29 12:38:00
8楼
你操作的时候并没有把HEX2000转成BCD码操作啊

小飞霞

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 244回
  • 年度积分:0
  • 历史总积分:579
  • 注册:2007年2月09日
发表于:2007-08-29 13:45:00
9楼
学习了

小鱼熬酱

  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 47回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2007年6月18日
发表于:2007-08-29 14:42:00
10楼
 liu xianghou老师:
      我知道自己的错误在哪里了,我一直没有把二进制与BCD码搞明白。
    我又看了一些关于BCD码的资料,其实BCD码就是二进制数。
    我以前总是这样认为的:把16、8进制数转换成十进制,然后用BCD码表示,结果就把(2000)16的BCD码写成上面那样了。
  谢谢了,我看明白上面的程序了,谢谢大家啊,它就是将两个定时器的时基定义为了1S,没什么。
   呵呵,顺便又温习了一下BCD码

单身穷人

  • 精华:0帖
  • 求助:0帖
  • 帖子:56帖 | 293回
  • 年度积分:0
  • 历史总积分:1430
  • 注册:2004年2月12日
发表于:2007-08-29 18:48:00
11楼
    学习了 

liu xianghou

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 195回
  • 年度积分:0
  • 历史总积分:179
  • 注册:2007年8月17日
发表于:2007-08-29 20:25:00
12楼
但是你只是把第13位置为1了,可是第12位却不一定是1。比如MW20原为S5T#50S,那OW后的结果就是S5T#1H23M20S了,时基就是10S了

五孔钱

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 120回
  • 年度积分:0
  • 历史总积分:194
  • 注册:2007年8月16日
发表于:2007-08-29 20:47:00
13楼
路过,学习一下

小鱼熬酱

  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 47回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2007年6月18日
发表于:2007-08-30 08:35:00
14楼
西门子的书上说: L     W#16#2000  其中  2 表示时基  000表示时间BCD码形式

卧龙人

  • 精华:0帖
  • 求助:0帖
  • 帖子:38帖 | 800回
  • 年度积分:0
  • 历史总积分:1504
  • 注册:2006年8月14日
发表于:2007-09-05 22:08:00
15楼
 学习了 

不死小强

  • 精华:0帖
  • 求助:0帖
  • 帖子:15帖 | 57回
  • 年度积分:0
  • 历史总积分:129
  • 注册:2007年4月03日
发表于:2007-09-11 08:17:00
16楼
mark!

freeskyman

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 55回
  • 年度积分:0
  • 历史总积分:135
  • 注册:2005年5月29日
发表于:2007-09-11 22:24:00
17楼
学习

Yorktown

  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 532回
  • 年度积分:0
  • 历史总积分:768
  • 注册:2002年6月28日
发表于:2007-09-12 11:22:00
18楼
下面关于间接寻址的说法正确吗?
如果传送指令为:“MOVD  2505  *VD500”。这里*VD500中指出的不是存放2505的地址,而是存放2505的地址的地址。例如VD500中存放的是VB0,则VD0才是存放2505的地址。该指令的功能是将十进制数2505传送给VD0地址中。指令中的目标操作数的数值在指令中并未给出,只给出了贮存操作数的地址的地址VD500,这种以给出操作数地址的地址形式的寻址方式是间接寻址。

ZHANGCL

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 108回
  • 年度积分:0
  • 历史总积分:988
  • 注册:2001年12月29日
发表于:2007-09-12 11:33:00
19楼
这个问题手册后面有例程

Yorktown

  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 532回
  • 年度积分:0
  • 历史总积分:768
  • 注册:2002年6月28日
发表于:2007-09-12 11:35:00
20楼
请教高手了:
楼上这段关于[color=#0000FF]间接寻址[/color]的叙述如何用程序表示啊?

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页