您现在所在的是:

西门子SIEMENS

回帖:2916个,阅读:515570 [上一页] [1] ... [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] ... [292] [下一页]
14384
六脉加易筋经
文章数:2327
年度积分:621
历史总积分:14384
注册时间:2014/2/10
发站内信
发表于:2015/1/19 21:55:57
#1860楼
廖老师您好,《S7-300/400 PLC应用技术》第3版书上第122页例子中L P#10.0,后面注释是将32位内部区域指针装入累加器1,而第161页中,L P#20.0,后面注释是指针常数P#20.0装入累加器1的低字。看不懂,L
P#10.0和L P#20.0看上去2个指令几乎一样,就是10.0和20.0有差别,为什么前者是32位内部区域指针,后者是指针常数,前者是32位的,后者是装入低字(那不是16位了?)
568
hxysawyer
文章数:3
年度积分:50
历史总积分:568
注册时间:2015/1/19
发站内信
发表于:2015/1/19 23:07:06
#1861楼
回复 #20楼 whj00001
慢慢学习下
此帖发自论坛手机版
6047
liaosun
文章数:1398
年度积分:50
历史总积分:6047
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2015/1/20 7:12:51
#1862楼
以下是引用六脉加易筋经2015/1/19 21:55:57的发言:
廖老师您好,《S7-300/400 PLC应用技术》第3版书上第122页例子中L P#10.0,后面注释是将32位内部区域指针装入累加器1,而第161页中,L P#20.0,后面注释是指针常数P#20.0装入累加器1的低字。看不懂,L
P#10.0和L P#20.0看上去2个指令几乎一样,就是10.0和20.0有差别,为什么前者是32位内部区域指针,后者是指针常数,前者是32位的,后者是装入低字(那不是16位了?)

寄存器间接寻址分为区域内和区域间间接寻址。
两条L指令都是将指针常数装入累加器1。后一条指令之后用LAR1指令将累加器的内容装入AR1。区域内间接寻址的特点是指针的高字节为0.所以P#10.0和P#20.0都是区域内间接寻址的指针常数。
至于为什么P#20.0是16位的,这与+AR1指令的要求有关,可以理解为加到AR1的是地址偏移量。下面是该指令的帮助信息:

+AR1 (加到AR1)将在语句或ACCU 1-L中指定的偏移量加到AR1的内容上。首先将整数(16位)扩展为符号正确的24位,然后将其加到AR1的最低有效的24位
(AR1中的相对地址的一部分)。在AR1中,区域ID的部分(位24、25和26)保持不变。执行该指令时不考虑状态位,也不会影响状态位。
+AR1: 要加到AR1的内容中的整数(16位)由ACCU 1-L中的值指定。允许的值范围为 -32768至 +32767。
11283
heshilih
文章数:1116
年度积分:572
历史总积分:11283
注册时间:2010/8/25
发站内信
发表于:2015/1/20 8:21:28
#1863楼
越来越深澳了,得加油学习呀
1588
liutian0201
文章数:48
年度积分:-334
历史总积分:1588
注册时间:2008/7/14
发站内信
发表于:2015/1/20 8:48:01
#1864楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>
1588
liutian0201
文章数:48
年度积分:-334
历史总积分:1588
注册时间:2008/7/14
发站内信
发表于:2015/1/20 15:43:48
#1865楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>
14384
六脉加易筋经
文章数:2327
年度积分:621
历史总积分:14384
注册时间:2014/2/10
发站内信
发表于:2015/1/20 16:41:38
#1866楼
廖老师您好,《S7-300/400 PLC应用技术》第3版书上第163页的FC1程序中,第4条指令L     W [AR1,P#0.0],后面注释是取指针第1个字内的数据块编号,第9条指令L     D [AR1,P#2.0],后面的注释是取指针内数据区的起始地址。这2条指令格式一样,怎么一个是取地址内的内容(数据块编号),一个是取起始地址?
6047
liaosun
文章数:1398
年度积分:50
历史总积分:6047
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2015/1/20 20:33:09
#1867楼
以下是引用六脉加易筋经2015/1/20 16:41:38的发言:
廖老师您好,《S7-300/400 PLC应用技术》第3版书上第163页的FC1程序中,第4条指令L     W [AR1,P#0.0],后面注释是取指针第1个字内的数据块编号,第9条指令L     D [AR1,P#2.0],后面的注释是取指针内数据区的起始地址。这2条指令格式一样,怎么一个是取地址内的内容(数据块编号),一个是取起始地址?
参数类型为Pointer的输入参数Start_Addr占6个字节,P##Start_Addr是第1个字节的地址。执行第二条指令后,AR1中是输入参数Start_Addr(指针)的首地址,所以第4条指令装入累加器的是指针第1个字内的数据块编号,第9条指令装入的是指针第2个字节开始的双字,即指针内数据区的起始地址。
如果Start_Addr的实参为DB2.DBX4.0,第9条指令装入的就是DBX4.0的地址(即DB4的地址)。
14384
六脉加易筋经
文章数:2327
年度积分:621
历史总积分:14384
注册时间:2014/2/10
发站内信
发表于:2015/1/21 13:54:07
#1868楼
廖老师您好,请问某设备带5个S7-300和一个ET 200M模块,ET 200M模块的BF灯一直不停闪烁。厂家最后查出原因是PLC中的某文件丢失。哪些情况会造成PLC中的部分文件丢失。
14384
六脉加易筋经
文章数:2327
年度积分:621
历史总积分:14384
注册时间:2014/2/10
发站内信
发表于:2015/1/21 16:55:59
#1869楼
廖老师您好,《S7-300/400 PLC应用技术》第3版书上164页2#的1000 0111 0000 0000 0000 0000 1010 1000的第3到18位是000 0000 0000 1010 1,书上写可以看出是地址P#V21.0,怎么看出这是21.0?1010 1=21,为什么不能是P#V21?
[此贴子已经被作者于2015/1/21 19:16:26编辑过]

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

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

62.4004