1、怎样使用通讯功能块FC50和FC60编程全解怎样使用通讯功能块 FC50 和 FC60 编程?显示订货号说明:使用下面的连接通讯,必定在 S7-400 的S7程序中调用通讯功能块 FC50AG_LSEND 和 FC60AG_LRECV 。TCP连接ISO-on-TCP 连接 (RFC1006)ISO 传输连接UDP 连接FDL 连接通讯功能块 FC50 “AG_LSEND”和FC60 “AG_LRECV”的特点FC50和FC60 是异步通讯功能块。FC50和FC60的运行需要几个 OB1周期。FC50由输入参数 ACT 使能。通讯任务结束由 “DONE”或“ERROR”指示。AG_LSEND
2、和AG_LRECV 能够经过同一个连接同时通讯。最新版本的功能块 FC50 AG_LSEND 和 FC60 AG_LRCV 能够在 SIMATIC_NET_CP 库CP 400 Blocks 里找到。例程说明S7 程序包括来自 SIMATIC_NET_CP 库的通讯功能块 FC50 “AG_LSEND”和FC60 “AG_LRECV”的调用。FC50“AG_LSEND”用于发送数据到 S7 或S5 站,PC 也许第三方系统。 FC60 “AG_LRECV”用于接收来自 S7或 S5 站,PC站或第三方系统的数据。例程中通讯功能块 FC50AG_LSEND 和FC60AG_LRCV 用于 ISO
3、-on-TCP 连接的通讯。第一创办 S7-400 站的硬件配置。注意:将MB10 配置为时钟标志。发送任务由该时钟标志触发。保存并编译 S7-400 站的硬件组态并装载到 CPU。例程中用到了准时器 T10 。尔后在 NetPro 中为 CPU 配置上面提到的通讯连接。若是通讯伙伴也在该 STEP7 项目中一起配置,能够配置一个指定的通讯连接。若是通讯伙伴没有与 S7-400 站在同一个 STEP7 项现在,能够配置一个未指定的通讯连接。配置通讯连接时,确认 IP地址和 Profibus 地址已经正确分配。 同样,确认 PORT,TSAP,LSAP 已经正确分配。这些用于鉴别通讯伙伴间的通讯
4、连接。FC50 “AG_LSEND”和FC60 “AG_LRECV”的输入参数“ID”和LADDR“”必定被指定。该参数在通讯连接的属性对话框“老例”选项卡中设置。图.01STEP7 的程序由块 OB100,OB1,FB200,DB200,DB201,FC50 和FC60 组成。OB100:OB100 是启动组织块,当 CPU 重新启动(暖启动)时运行。在这个组织块中经过 M1.0 使能第一次通讯触发器。OB1:OB1 循环组织块。在这个组织块中调用 FB200 (背景数据块: DB200) ,使用 M1.0作为参数 (INIT_COM) 。FB200一旦执行则复位 M1.0。图.02FB20
5、0FB200 在OB1 中调用。在 FB200 中调用了 FC50 “AG_LSEND”和 FC60 “AG_LRECV”。在FC50 的输入参数“ACT”获取一个上升沿后触发发送任务。 时钟标志位 M10.7 和 “SND_BUSY”参数控制发送任务的触发。当发送任务正在执行时,“SND_BUSY”被置位,此时不能够触发新的发送任务。接收央求的触发由变量 RCV_DISABLE控制,其值等于FALSE,所以FC50AG_LRCV总是准备接收数据,这样数据 能够在任何时候都被接收。由于功能块的执行是异步的,并能够连续几个周期,所以“锁定”功能特别重要。若是不等待第一个发送工作成功完成或出错停止
6、就不中止的触发新的发送任务会引起通讯过载。输入参数“ID”和“LADDR”的值必定取自NetPro入参数指定包括将要发送数据的数据区地址和长度中通讯连接的属性对话框(发送缓冲区),比方:(拜会 图01)。需要为 FC50BYTE100的“SEND”输。在“LEN”输入参数中键入要发送的字节数,本例中是 100。输出参数 “DONE”,“ERROR”和“STATUS”用于任务评估,并且只在同一个周期内有效。图.03图.04当发送任务成功完成后,“ SND_BUSY”被复位。 尔后能够触发下一个发送任务。图.05若是发送任务出错停止,“ SND_BUSY”也会被复位 ,FC50输出参数 “STAT
7、US”的值被保存用于故障剖析。若是“STATUS”输出参数的值是 0x7000Hex(28672Dec),FC50 “AG_LSEND”再次被调用。图.06若是输出参数“STATUS”的值是0x8183Hex(32381Dec)也许 0x8304Hex(31996Dec), 也就是说通讯连接不能够建立的时候,那仅每 10秒倡议一次发送任务。图.07输入参数 “ID”和 “LADDR”的值必定取自 NetPro中通讯连接的属性对话框 (拜会图 01)。需要为 FC60 的输入参数“RECV”指定包括接收数据的数据地域地址和长度 (接收缓冲区),比方:BYTE100 。图.08输出参数“NDR用于
8、表示已经接收到了新数据。输出参数 LEN表示接收到的数据长度。若是没有成功接收到数据,输出参数“ STATUS”的值被保存用于故障剖析。图.09若是输出参数 STATUS 的值是 0x8183Hex(32381Dec)也许 0x8304Hex(31996Dec),即不能够建立连接时,变量RCV_DISABLE 被置位10秒。在此期间,没有数据被接收。只有在过了 10秒后才可能再次接收数据。图.10成功接收数据的长度保存在静态变量里。图.11在FB200 中,对 FC50AG_LSEND 和FC60AG_LRCV 的STATUS 各种值出现次数有评估。这些信息保存在FB200 的Structur
9、e种类的变量STATISTIC 中,这是 FB200 统计信息接口参数。图.12能够经过变量 #STATISTIC.ON_OFF 打开/关闭STATUS 评估。图.13特例若是经过 TCP连接进行数据交换, 只有在接收缓冲区满后才会置位“ NDR”输出参数。输出参数“LEN”的数值总是指示接收缓冲区的总长度。下载 STEP7 项目:例程 STEP7 项目包括一个调用带有状态赋值的 FC50 和 FC60 功能的例子。这个例子在 STEP7V5.5SP2 中创建。NET_S7400_LSEND_LRECV.zip (195KB)提示从SIMATIC_NET_CP 库中复制最新的通讯块 FC50 和FC60 并在自己的程序中调用它们。重点字发送,接收条目号:18513371 日期:2012-07-23