如何把从IW512里,不同时刻(两个时刻相隔5秒)取到的数据逐一放到DB10.DBW地址里?比如我将第一个数据放进去,L IW512 ; T DB10.DBW0 ;那我怎么把第二次取到的数据放进DB10.DBW2?
最佳答案
1、不同时刻(两个时刻相隔5秒)取到的数据逐一放到DB10.DBW地址里?
、要存多少数据?不能无限制地存放吧!我们暂且忽略这一点,来讨论问题。
、 可以应用系统组织块 初始化组织块(OB100)。
、可以应用系统组织块 循环中断组织块(OB35)。 OB35 的执行周期(Execution(ms),范围是 1--60000ms),本例设为 5000ms(5秒)。
2、在初始化组织块(OB100)中保持初始化程序,程序在通电后只执行一次,其后才执行OB1:
L P#0.0 //初始地址指针
T MD10 //保存初始地址指针
3、 循环中断组织块OB35 (每5000ms(5秒))中断一次,每次中断所执行的程序:
L MD10 //取指针地址
LAR1 //装入地址指针AR1中
OPN DB 10 //打开DB10
L PIW512 //读数据
T DBW [AR1,P#0.0] //按地址指针指示的地址写数据
+AR1 P#2.0 //地址指针指向下一数据地址
T MD 10 //保存指针
.......
4、编程注意事项:
、上述指令只是一些主要的指令,请楼主根据实际的应用进行完善。
、程序中的MD 10为专用,即不能做其他用途。
、在组态时必须建立数据块DB10,必须定义有足够的长度。
、在上述OB35中的“L MD 10 //保存指针” 中指令后必须一个控制存储长度的指令,不能无限制存下去。这一点很重要,请楼主自己考虑!
5、相关的资料:
、《组织块使用说明》下载:
http://download.gongkong.com/file/2005/12/10/OBSpecification.pdf
、《关于S7-300和S7-400指针寻址的说明与例程(更新版)》下载:
http://www.ad.siemens.com.cn/download/SearchResult.aspx?searchText=F0215
、《step7编程之地址概念详解》连接:
http://wenku.baidu.com/view/b2b4d3375a8102d276a22fd3.html
或
http://www.chinakong.com/rencai/disp.asp?id=1633&leibie=4
、《西门子STL间接寻址常问问题集》
http://www.ad.siemens.com.cn/download/docMessage.aspx?
ID=6175&loginID=&srno=&sendtime=
提问者对于答案的评价:
对于 T DBW [AR1,P#0.0]这句我不太理解,当第一次执行扫描的时候,AR1=0,即T DBW 0;为什么要加P#0.0呢?
最佳答案作者回复:
对于 T DBW [AR1,P#0.0]这句我不太理解,当第一次执行扫描的时候,AR1=0,即T DBW 0;为什么要加P#0.0呢?地址指针的格式要求为P#0.0。建议你看看。看了就明白了:
《step7编程之地址概念详解》连接:
http://wenku.baidu.com/view/b2b4d3375a8102d276a22fd3.html
或
http://www.chinakong.com/rencai/disp.asp?id=1633&leibie=4
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc345409.html