加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

如何使用通信块FC5/FC6编制通信应用程序?

(2014-11-05 23:05:35)
标签:

s7-300

工控老鬼

启程自动化培训

深圳plc培训

分类: 启程PLC培训

如何使用通信块FC5/FC6编制通信应用程序?

 

标签(TAG):FC5/6  

说明:
必须在 S7-300的S7程序中调用通信功能块FC5 ('AG_SEND',用于发送数据)和FC6 ('AG_RECV',用于接收数据) 以通过以下协议实现通信。 

  • TCP 连接
  • ISO-on-TCP 连接 (RFC 1006)
  • ISO transport 连接
  • UDP 连接
  • FDL 连接

FC5 ('AG_SEND') 和 FC6 ('AG_RECV') 通信块的特征

  • FC5 和 FC6 是异步通信块
  • 在这个例子中FC5 和 FC6 必须在OB1 中被调用 (参见 条目号: 2795485)
  • FC5 和 FC6 的运行需要多个OB1循环周期
  • FC5 通过输入参数'ACT' 激活使用
  • 通信过程结束标志变量为'DONE' 或 'ERROR'
  • AG_SEND 和 AG_RECV 可以在一个连接同时进行通信
  • 功能块包含在S7-300 和 S7-400 控制器的'SIMATIC_NET_CP'库中

例程介绍

 S7 程序包含两个通信块(FC5 'AG_SEND'/FC6 'AG_RECV',属于SIMATIC_NET_CP 库)的调用。FC5 'AG_SEND'用于给其它S7站点,PC站或第三方系统发送数据。FC6 'AG_RECV'用于接收来自其它S7站点,PC站或第三方系统的数据。

首先,新建 S7-300 站的硬件配置。确保标志位10配置为时钟标志位. 发送任务是通过这个时钟标志触发的。保存并编译S7-300 站的硬件配置,下载到CPU。

然后,在NetPro里配置上面提到的CPU的一个通信连接。如果通信对象在STEP 7项目里配置,就能配置一个特定的通信连接。如果通信对象和S7-300站不在同一STEP 7项目里配置,那就配置一个非特定通信连接。配置网络连接时要确保IP 地址和PROFIBUS 地址分配正确。同样要确保端口号,TSAP 和 LSAP分配正确。它们是用来在通信连接中与通信对象区分的独特标识。

通信功能块FC5 'AG_SEND' 和 FC6 'AG_RECV' 的输入参数'ID'的值可以从STEP 7 通信连接属性对话框的'常规'栏获得。

http://support.automation.siemens.com/CN/llisapi.dll/csfetch/17853532/NET_Beispiel_FC5_FC6_01.gif
图01:通信连接配置

通信功能块FC5 'AG_SEND' 和 FC6 'AG_RECV' 的输入参数'LADDR'的值可以从STEP 7 硬件配置界面里工业以太网CP属性对话框的'地址'栏获得。

该值要以十六进制的形式填入通信块:

256(十进制)=100(十六进制)

http://support.automation.siemens.com/CN/llisapi.dll/csfetch/17853532/NET_Beispiel_FC5_FC6_02.gif
图02:工业以太网CP 属性对话框-> '地址'栏

STEP7程序中包括下述程序块:OB100, OB1, FB200, DB200, DB201, FC5 和 FC6。

OB100:

OB100是一个启动OB块,在CPU重启(暖启动)时运行一次。第一次通信通过M1.0进行触发。

OB1:
OB1被周期性调用。在OB1中,FB200 (背景数据块: DB200)被调用, 参数'INIT_COM'赋值给M1.0。在 FB200执行完时,M1.0被复位。

http://support.automation.siemens.com/CN/llisapi.dll/csfetch/17853532/NET_Beispiel_FC5_FC6_03.gif
图03:OB1 

FB200:
FB200在OB1循环中被调用。FB200功能块调用FC5 'AG_SEND' 和 FC6 'AG_RECV'。FC5的输入变量 'ACT' 的上升沿会触发发送任务。发送任务的触发由clock marker M10.7和变量'SND_BUSY'控制。发送任务进行时,'SND_BUSY'被置位,这样就阻止了新的发送任务被触发。因为此功能是异步的,而且可能持续几个周期,所以这种互锁功能是很重要的。在第一个发送任务未成功完成或者有错误发生时持续触发新的发送任务会导致通信过载。

输入参数'ID' 和'LADDR'的值必须与NetPro (见图 01)里的通信连接属性对话框一致。 FC5的输入参数'SEND'指的是存储被发送数据的数据区域(发送缓冲区)的地址和长度,例如:P#DB201.DBX0.0 BYTE 100。 输入参数'LEN'指的是发送的字节数(例如100).。输出参数'DONE', 'ERROR' 和 'STATUS'用于对发送任务的评估,而且只在同一周期有效。

http://support.automation.siemens.com/CN/llisapi.dll/csfetch/17853532/NET_Beispiel_FC5_FC6_04.gif
图04:FB200: 调用FC5 'AG_SEND'

数据发送任务成功完成,'SND_BUSY'参数被复位。接下来可触发一个新的数据发送任务。

如果数据发送任务因出错而中断,,'SND_BUSY'参数被复位,FC5的输出参数 'STATUS'的值被保存做故障分析。

http://support.automation.siemens.com/CN/llisapi.dll/csfetch/17853532/NET_Beispiel_FC5_FC6_05.gif
图05:FB200: 'SND_BUSY'参数复位和'STATUS'参数值保存

输入参数'ID' 和'LADDR'的值必须与NetPro (见图 01)里的通信连接属性对话框一致。 FC5的输入参数'SEND'指的是存储被发送数据的数据区域(发送缓冲区)的地址和长度,例如:P#DB201.DBX100.0 BYTE 100。

http://support.automation.siemens.com/CN/llisapi.dll/csfetch/17853532/NET_Beispiel_FC5_FC6_06.gif
图06:FB200: 调用FC6 'AG_RECV'

输出参数'NDR'指示是否已接收到新数据,输出参数 'LEN'则指示接收到的数据长度。

如果数据未成功接收,输出参数值会被保存以备分析。

 http://support.automation.siemens.com/CN/llisapi.dll/csfetch/17853532/NET_Beispiel_FC5_FC6_07.gif
图07:FB200

特别注意:

 

如果数据交换是通过TCP连接,输出参数'NDR'仅在接收缓冲区完全填满时置位。

 

 

您好,欢迎来到启程自动化培训中心,全新课程火爆预约中!

------------------------【点击查看】-----------------------

《S7-200综合班》课时:30天学费:3500

《S7-300专家班》课时:30天学费:4500

《S7-系统集成全科班》课时:60天学费:6800

《Eplan电气系统设计》课时:5天学费:2500

《WinCC系统组态》课时:5天学费:2500

-----------------------------------------------------------

详细课程情况请点击:http://www.gongkong8.com/course/

课程咨询电话:0755-85292922 QQ:800040685(点击直接交流)

启程为您提供最专业的自动化、PLC、系统技成相关技术的培训。专注只为成就您的高薪!【工控老鬼推荐培训机构 
+++++++++++++++++++++++++++++++++++++
自动化专业技术博客:http://blog.sina.com.cn/wincchome

自动化专业技术微博:http://weibo.com/i/1721143974

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有