请问哪个有这两个功能块的详细的说明书啊。STEP7上说的不是很清楚。比如INDEX.MLEN.RECORD.比如说ID输出模块必须设值位15比如对于地址5;ID=DW#16#8005由其是这个没有理解到
问题补充:
就是这个INDEX数据记录编号是什么意思了,??请举个例、还有就是我看例子上说这个数要为47是为什么了?
产品版区:SIMATIC S7-300(F)/S7-400(F/H/FH)
悬赏分:5 | 解决时间:2011-04-09 14:32:54 | 提问者: 华华的 - 新生  第1级
最佳答案
利用SFB52 "RDREC" (读取记录),可以从已通过ID寻址的DP从站/PROFINET IO设备组件(模块或子模块)中读取编号为INDEX的数据记录。
在MLEN中指定要读取的最多字节数。目标区域RECORD的选定长度至少应等于MLEN字节的长度。
输出参数VALID如为TRUE,则表明已将数据记录成功传送到目标区域RECORD中。此时,输出参数LEN包含所取得的数据的长度(以字节计)。
输出参数ERROR用以指示是否发生数据记录传送错误。如果发生错误,则输出参数STATUS包含错误信息。
注意如果已用一个GSD文件(版本3以上的GSD)对DPV1从站进行了组态,且DP主站的DP接口已设置为"S7兼容",则不能使用SFC 52从用户程序的I/O模块读取数据记录。因为此时DP主站将寻址错误的插槽(已组态的插槽+3)。纠正方法:将DP主站的接口设置为"DPV1"。
工作原理
SFC 52 "RDREC"以异步方式工作,即处理过程涉及多个SFC调用。通过使用REQ = 1调用SFC52来启动作业。
作业状态通过输出参数BUSY和输出参数STATUS的2、3字节显示。其中,STATUS的字节2和3对应于异步工作SFC的输出参数RET_VAL(参见异步工作SFC中
REQ、RET_VAL和BUSY的含义)。
如果输出参数BUSY = FALSE,则表明数据记录传送完成。
参数 声明 数据类型 存储区 描述
REQ INPUT BOOL I、Q、M、D、L、常数 REQ = 1:传送数据记录
ID INPUT DWORD I、Q、M、D、L、常数 DP从站/PROFINET IO组件(模块或子模块)的逻辑地址对于输出模块,必须设置位15(例如对于地址5:ID:=DW#16#8005)。
对于组合模块,应确定两个地址中的较小地址。
INDEX INPUT INT I、Q、M、D、L、常数 数据记录号。
MLEN INPUT INT I、Q、M、D、L、常数 要获取的数据记录信息的最大长度(以字节计)
VALID OUTPUT BOOL I、Q、M、D、L 新数据记录已被接收且有效
BUSY OUTPUT BOOL I、Q、M、D、L BUSY = 1:读取过程尚未终止。
ERROR OUTPUT BOOL I、Q、M、D、L ERROR = 1:发生读错误。
STATUS OUTPUT DWORD I、Q、M、D、L 调用ID (字节2和3)或错误代码
LEN OUTPUT INT I、Q、M、D、L 所获取数据记录信息的长度
RECORD IN_OUT ANY I、Q、M、D、L 所获取数据记录的目标区域。
注意如果使用SFB 52读取PROFINET IO的数据记录,INDEX、MLEN和LEN参数中的负值将被解释为不带前缀符号的16位整数。
注意SFB52 "WRREC"接口与在"符合IEC 61131-3标准的PROFIBUS指南PROFIBUS通讯和代理功能块"标准中定义的FB "WRREC"完全相同。
描述
利用SFB52 "WRREC" (写入记录),可以向已通过ID寻址的DP从站/PROFINET IO设备组件(模块或子模块)传送编号为INDEX的数据记录。
指定要传送的数据记录的字节长度。因此,源区域RECORD的选定长度至少应等于LEN字节的长度。
输出参数DONE如为TRUE,则表明已将数据记录成功传送到DP从站。
输出参数ERROR用以指示是否发生数据记录传送错误。如果发生错误,则输出参数STATUS包含错误信息。
注意如果已用一个GSD文件(版本3以上的GSD)对DPV1从站进行了组态,且DP主站的DP接口已设置为"S7兼容",则不能使用SFC 53将数据记录写入用户程序的I/O模块。因为此时DP主站将寻址错误的插槽(已组态的插槽+3)。纠正方法:将DP主站的接口设置为"DPV1"。
工作原理
SFC 53 "WRREC"以异步方式工作,即处理过程涉及多个SFC调用。通过使用REQ = 1调用SFC53来启动作业。
作业状态通过输出参数BUSY和输出参数STATUS的2、3字节显示。其中,STATUS的字节2和3对应于异步工作SFC的输出参数RET_VAL(参见 异步工作SFC
中REQ、RET_VAL和BUSY的含义)。
请注意,必须为属于同一个作业的所有SFB53调用的实际参数RECORD分配同一个数值。该规则同样适用于LEN参数。
如果输出参数BUSY = FALSE,则表明数据记录传送完成。
参数 声明 数据类型 存储区 描述
REQ INPUT BOOL I、Q、M、D、L、常数 REQ = 1:传送数据记录
ID INPUT DWORD I、Q、M、D、L、常数 DP从站/PROFINET IO组件(模块或子模块)的逻辑地址对于输出模块,必须设置位15(例如对于地址5:ID:=DW#16#8005)。
对于组合模块,应确定两个地址中的较小地址。
INDEX INPUT INT I、Q、M、D、L、常数 数据记录号。
LEN INPUT INT I、Q、M、D、L、常数 要传送的数据记录的最大字节长度
DONE OUTPUT BOOL I、Q、M、D、L 数据记录已传送
BUSY OUTPUT BOOL I、Q、M、D、L BUSY = 1:写过程尚未终止。
ERROR OUTPUT BOOL I、Q、M、D、L ERROR = 1:发生写错误。
STATUS OUTPUT DWORD I、Q、M、D、L 调用ID (字节2和3)或错误代码
RECORD IN_OUT ANY I、Q、M、D、L 数据记录
注意如果使用SFB 53将数据记录写入PROFINET IO,则INDEX、MLEN和LEN参数中的负值被解释为不带前缀符号的16位整数。
参考资料:
http://www.gongkong.com/webpage/datum/200803/1-B849-E9EDF5FA3FB9.htm
http://search.gongkong.com/search.aspx?query=SFB52&orderby=0&k=zh&page=1&tip=yes
回答者:
驿站927
-
资深顾问  第13级
2011-04-01 21:21:11
提问者对于答案的评价:
ok
http://www.cechina.cn/downLoad/soft.aspx?id=247799&cname=%E4%BC%81%E4%B8%9A%E8%BD%AF%E4%BB%B6
回答者: 塞上雁 - 中级工程师  第10级
2011-04-01 15:46:46
《使用SFC51/SFB52/SFB54诊断PROFINET IO使用入门》第 9 页解释了 ID 的含义。
http://www2.ad.siemens.com.cn/download/Upload/AS/application/A0374.zip
回答者: 罗丹的侯.鸟 - 高级工程师  第11级
2011-04-01 16:12:17
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!