发布于 2008-02-14 09:00:03
0楼
有的,我就是使用中文板的,下面小取一节看看,你看是不是?
通过SFB 8/FB 8"USEND"进行无协调的数据发送
描述
SFB/FB 8"USEND"向类型为"URCV"的远程伙伴SFB/FB发送数据。执行发送过程而不需要和SFB/FB伙伴进行协调。也就是说,在进行数据传送时不需要伙伴SFB/FB进行确认。
S7-300:在REQ的上升沿处发送数据。在REQ的每个上升沿处传送参数R_ID、ID和SD_1。在每个作业结束之后,可以给R_ID、
ID和SD_1参数分配新数值。
S7-400:在控制输入REQ的上升沿处发送数据。通过参数SD_1到SD_4来指向要发送的数据,但并非都需要用到所有四个发送参数。
然而,必须确保参数SD_1到SD_4/SD_1和RD_1到RD_4/RD_1 (在相应通讯伙伴SFB/FB"URCV"上)所定义的区域在以下几个方面保持一致:
?编号
?长度,和
?数据类型。
参数R_ID必须在两个SFB中完全相同。
如果传送成功完成,则通过状态参数DONE来表示,此时其逻辑数值为1。
参数 声明 数据类型 存储区域 描述
REQ INPUT BOOL I、Q、M、D、L 控制参数请求,在上升沿激活数据交换
ID INPUT WORD M、D、常数 寻址参数ID,参见用于S7通讯的SFB/FB和SFC/FC的公用参数
R_ID INPUT DWORD I、Q、M、D、L、
常数 寻址参数R_ID,参见用于S7通讯的SFB和SFC的公用参数
DONE OUTPUT BOOL I、Q、M、D、L DONE状态参数: 0: 作业还未启动或仍然在运行 1: 作业已经无错地执行完毕
ERRORSTATUS OUTPUTOUTPUT BOOLWORD I、Q、M、D、LI、Q、M、D、L ERROR和STATUS状态参数,出错显示:ERROR=0 STATUS的数值: 等于等于0000H:既不是警告也不是出错 不等于0000H:警告,STATUS提供详细信息ERROR = 1 出错。STATUS提供关于错误类型的详细信息。
S7-300:SD_1S7-400:SD_i(1?) IN_OUT ANY M、D、T、ZI、Q、M、D、T、C 指针,指向第i个发送数据区。
只允许使用下列数据类型BOOL(不允许用于:位域)、BYTE、CHAR、WORD、INT、DWORD、DINT、REAL、DATE、TOD、TIME、S5TIME、DATE_AND_TIME、COUNTER、TIMER。注意:
如果使用ANY指针访问一个数据块,则必须要指定该数据块(例如:P# DB10.DBX5.0 Byte 10)。
错误信息
ERROR
STATUS (十进制) 解释
0 11 警告:- 由于前一个作业还没有结束,所以不能执行新作业。- 正在以较低优先级处理此作业。
0 25 通讯已经启动。作业正在处理。
1 1 通讯故障,例如:- 没有装载连接描述(本地或远程)- 连接被中断(例如:电缆断线、CPU关闭、或CP处于STOP模式)- 没有建立到通讯伙伴的连接?超出并行作业/实例的最大数目
1 4 发送数据区指针SD_i中的出错,包括数据长度或数据类型。
1 10 不能访问本地用户存储区(例如,访问一个已经删除的数据块)。
1 12 当调用SFB时- 指定了一个不属于SFB"USEND"的背景数据块- 没有指定任何背景数据块,而指定了全局数据块。- 没有找到任何背景数据块(从PG中装载新背景数据块)。
1 18 - 在连接ID中已经存在R_ID。- 此外对于S7-300:?CPU在RUN模式 (要求CPU或CP进行从STOP到RUN的切换)时,实例超载。
1 20 - S7-400:没有足够的工作存储器可用。如果仍然有足够的总工作存储器可用,则解决方案是压缩工作存储器。- H系统:在更新期间不能进行SFB的第一次调用,因为正在创建工作存储器中的通讯缓冲区。同样在更新期间不能改变工作存储器。- S7-300:?超出并行作业/实例的最大数目?CPU在RUN模式(要求CPU或CP进行从STOP到RUN的切换)时,实例超载。?当第一次调用时可以
1 27 CPU中没有用于此功能块的功能代码。
数据一致性
S7-300:为确保数据一致性,只能在当前发送操作结束之后,重新向发送区SD_1写入数据。状态参数DONE的数值变为1时就是这种情形。
S7-400和S7-300通过集成接口:当激活一个发送操作时(REQ的上升沿),从用户程序中复制要从发送区SD_i发送的数据。在块调用之后,可以在不破坏当前发送数据的前提下向这些区域写入数据。
注意只有当DONE状态参数数值为1时,发送操作才完成。
在浩瀚的海洋里遨游!