欢迎来到西门子工业支持中心网站!
欢迎来到西门子工业支持中心网站!
悬赏:10西币 | 解决时间:2021-12-14 21:39
产品版区:
SIMATIC S7-300(F)/S7-400(F/H/FH)
2016LWW
2016LWW - 毕业实践员  第4级
很多300程序,都这样写是什么意思?希望大家用通俗的话指导一下,
感谢。。。。
LAR1 P##t_SRC_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_SystemDB
T LW [AR1,P#4.0] //DB number = system DB number
L 0
L "M_IDB_PNIO".STAT11
+I
SLD 3
T LD [AR1,P#6.0] //Start address = DBX(DB705.DBW1676 + 0).0
L B#16#84
T LB [AR1,P#6.0] //84H = Data block
//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
问题补充:
LAR1 P##t_SRC_Any这句话啥意思,关键源跟目的也是临时变量ANY,怎么关联呀?谢谢
最佳答案
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
回答者:
阿鸣
回答时间:2021-12-11 12:41
提问者对于答案的评价:
谢谢
这些代码不是一两句可以解释清楚的。
结合 ANY 类型指针,指针的结构去理解。
//Destination area pointer 这行注释的上面部分是构造传送的源,ANY 类型的指针
//Destination area pointer 到 //Move system data to user data block 之间是构造目的地的 ANY 类型的指针
下面则是用了块传送指令。
S7-300和S7-400寻址 ID:79632832 2013年9月12日
https://support.industry.siemens.com/cs/document/79632832
西门子STL间接寻址常问问题集
https://support.industry.siemens.com/cs/document/76492353
SIMATIC S7-300和S7-400编程的语句表
https://support.industry.siemens.com/cs/document/109751814
间接寻址
http://www.ad.siemens.com.cn/productportal/Prods/published/Prog/Prog_2.4/Prog_2.4.html
利用ANY指针参数化SFC 20 (BLKMOV)
https://support.industry.siemens.com/cs/document/2738030
这里开始是形成源地址指针的
LAR1 P##t_SRC_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_SystemDB
T LW [AR1,P#4.0] //DB number = system DB number
L 0
L "M_IDB_PNIO".STAT11
+I
SLD 3
T LD [AR1,P#6.0] //Start address = DBX(DB705.DBW1676 + 0).0
L B#16#84
T LB [AR1,P#6.0] //84H = Data block
上面是源地址指针的形成
下面开始是目标地址指针
//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
到这里上面是目标地址指针
下面就是调用BLKMOV 从原地址复制到目标地址,类似从P#DB1.DBX0.0 BYTE 50复制到P#DB2.DBX0.0 BYTE 50,这样,具体的地址要根据里面的临时变量确定
//Move system data to user data block
CALL "BLKMOV"
SRCBLK :=#t_SRC_Any
RET_VAL:=#t_RET_VAL
DSTBLK :=#t_DST_Any
关于指针的含义可以参考手册:
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 的格式
本回答有1位钻石用户推荐
你需要学习一下STL的编程知识,多看看STL编程手册,指令含义
是的,先看看STL编程手册,了解一下程序用到的指令含义,再有什么问题可以请教教论坛里大神们,这样也学的扎实不是,,,
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!