找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
//Destination area pointer
LAR1 P##t_DST_Any
L W#16#1002
T LW [AR1,P#0.0] //Fixed number 10H, 02H = Byte
L 512
T LW [AR1,P#2.0] //Data length = 512
L #t_UserDB
T LW [AR1,P#4.0] //DB number =user DB number
L 0
SLD 3
T LD [AR1,P#6.0] //Start address = DBX0.0
L B#16#84
T LB [AR1,P#6.0] //84H = Data block
//Move system data to user data block
CALL "BLKMOV"
SRCBLK :=#t_SRC_Any
RET_VAL:=#t_RET_VAL
DSTBLK :=#t_DST_Any
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
1、想读懂这段程序,首先仔细看看下述有关 ANY数据的格式及ANY指针使用方法。
、ANY数据的格式,请见截图1与截图2。
、读懂这段程序的必备知识的相关资料
《S7-300/400PLC ANY指针使用详解》连接:
http://blog.sina.com.cn/s/blog_669692a601019hvt.html
2、解读第一段程序:
LAR1 P##t_SRC_Any // P##t_SRC_Any(数据块首地址)存入指针AR1中。
L W#16#1002 //填写S7的固定数10H, 02H表示数据类型位字节。
T LW [AR1,P#0.0] //见截图1中Byte0与截图2中Byte1。
L 512
T LW [AR1,P#2.0] //填写重复因子(数据长度)为512,见截图1中Byte2与Byte3。
L #t_SystemDB
T LW [AR1,P#4.0] //填写DB的序号 为 系统DB 序号,见截图1中Byte4与Byte5。。
L 0
L "M_IDB_PNIO".STAT11
+I // "M_IDB_PNIO".STAT11与偏移量(0)相加。
SLD 3 // 相加结果左移3位(相当于结果乘以8)后形成地址指针的地址格式(见下述解释)。
T LD [AR1,P#6.0] //将形成地址指针的地址作为数据区的首址,见截图1中Byte6与Byte7。。。
L B#16#84 //取十六进制常数84H
T LB [AR1,P#6.0] //将84H存入截图1的Byte6中,84H表示为数据块(有关84H的用法见下述解释)。
2、有关解释:
、解释:相加结果左移3位(相当于结果乘以8)后形成地址指针的地址格式:
存储器间接寻址中的双字指针规定的格式为:
其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。
AR:
0000 0000 0000 0BBB BBBB BBBB BBBB BXXX
这样规定,就意味着AR的取值只能是:0.0 ——65535.7
例如:当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4。
、84H表示为数据块:
AR:
1000 0YYY 0000 0BBB BBBB BBBB BBBB BXXX
比较一下两种格式的不同,我们发现,这里的第31bit被固定为1,同时,第24、25、26位有了可以取值的范围。聪明的你,肯定可以联想到,这是用于指定存储区域的。对,bit24-26的取值确定了要寻址的区域,它的取值是这样定义的:
区域标识符
26、25、24位
P(外部输入输出):000
I(输入映像区) :001
Q(输出映像区):010
M(位存储区) :011
DB(数据块):100
DI(背景数据块):01
L(暂存数据区,也叫局域数据):111
如果我们把这样的AR内容,用HEX表示的话,那么就有:
当是对DB区域寻址时,AR=840xxxxx
3、解读第二段程序:
与第一段意义相同,在此就不赘述了。
4、//Move system data to user data block
CALL "BLKMOV"
SRCBLK :=#t_SRC_Any
RET_VAL:=#t_RET_VAL
DSTBLK :=#t_DST_Any
这是调用系统功能块SFC 20 。详见:
SFC20的功能,详见下述资料中的3.1 使用SFC20 “BLKMOV”复制存储区域:
、<S7-300400的系统软件和标准功能>下载:
http://www2.ad.siemens.com.cn/download/Upload/AS/manual/1023.pdf
、SFC20(BLKMOV)和ANY类型的用法:
http://blog.sina.com.cn/s/blog_669692a601019hvt.html
关于指针的含义可以参考手册:
SIMATIC 用STEP 7 V5.5 编程 手册
https://support.industry.siemens.com/cs/cn/zh/view/45531107
604页 27.3.4.2 参数类型 POINTER 的格式
610页 27.3.4.5 参数类型 ANY 的格式
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!