S7-300样图
实验一 建立FDL通信连接
1)目的
掌握FDL通信
2)实验内容
①使用NetPro建立指定的FDL连接,参数自行设定
②在程序中调用AG_SEND/AG_RECV基于FDL进行通信,最大用户数据长度240Byte。
③在两个工程中建立未指定连接的FDL连接,最大用户数据长度236Byte。
④在两个工程中建立组播连接,注意组播连接的目标Profibus地址、本地和远程的LSAP,最大用户数据长度为236Byte 。
⑤在两个工程之间建立广播连接,一个为发送端,一个为接收端,注意广播连接的目标Profibus地址、本地和远程的LSAP,最大用户数据长度为236Byte。
思考:为什么指定的FDL连接比其他三种方式用户数据长度多4个Byte?
3)实验流程
①②建立FDL连接并通讯
因为是在两台电脑不同项目之间进行传输,所以在我的电脑组态如下:
图1-组态
双击CP 342-5(两台电脑连在同一个BUS线上,并且CPU与CP地址号都不要重合),设置BUS线属性如下图所示:
图2-BUS线属性
设置bus参数如下图所示:
图3-设置bus参数
注意:参数设置的具体细节可以参考书西门子工业网络通讯指南(上下)上册217页实例
同时设置为NO DP,如下图所示:
图4-设置为NO DP
使用NetPro建立指定的FDL连接如下:
图5-建立指定的FDL连接
设置FDL连接参数,选择点对点连接如下如所示:
图6-设置FDL连接参数
设置自身ID号以及LADDR(CP的起始地址),如图所示:
图7-设置自身ID号以及LADDR
设置连接地址号和LSAP:
图8-设置连接地址号和LSAP
编程:
要实现FDL通讯需要在两边电脑都调用FC5/FC6,但是需要注意是在CP下调用还是在标准库中调用,此处是CP与CP之间连接都需要在CP下调用,而不是标准数据库中调用,如下图所示:
图9-CP300下调用FC5/FC6
而不是:
图10-标准库下FC5/FC6
在OB1中编程如下:
图11-编程解释
在变量表中监视如下图所示:
图12-变量表中监视
其最大数据长度为240个字节
②建立未指定连接
前期组态、对BUS线设置都与前面一样。
设置NETPRO
图13-设置NETPRO
再设置连接:
图14-再设置连接
编程
未指定连接需要书写表头,接受FC6如果不需要甄别就不用写,如下图所示
图15-编程解释
详细编程见参考书西门子工业网络通讯指南(上下)上册234。
建立变量表监控:
图16-建立变量表监控
④组播
组态与前面实验相同,BUS线设置一样。
在NETPRO中设定组播如下:
图17-在NETPRO中设定组播
在设置LSAP号如下:
图18-设置LSAP号
编程如下:
图19-编程
建立变量表如下:
图20-建立变量表
⑤广播
组态与前面实验相同,BUS线设置一样。
在NETPRO中设定广播如下:
图21-在NETPRO中设定广播
设置地址
图22-设置地址
编程如下:
图23-编程
监视变量表如下图所示:
图24-监视变量表
4)总结
1. 建立FDL通信,其各种模式的各类细节参数设置的可以参考书西门子工业网络通讯指南(上下)上册217。
2. 组播是同组内(LSAP号相同)的都可以收到信息,发送也是发给同组内的所有,广播是在一个BUS线的所有设备都能够收到。
3. 一个CPU最多挂4个342-5,342-5的虚拟地址最大为2160字字节,在编写地址建议从0开始编写,不要跳着变,容易出错。跳着编写前面空着的部分还是会被0占用,在接受地CPU中还是会被占用(0),会浪费资源。比如CP342-5做主站I20-OUT0从站5个字节,那么在主站CPU中编写地址时必须大于20+5个,比如P#M0.0 byte 30,然而前20个字节是空着的被0占用还是从M20.0开始存储来自从站的数据,浪费空间。
4. CPU与CP组成一体时,其两个DP口是无关的,CP是起到数据交换扩展口的作用,CPU与CP完全可以不在同一BUS线上,完全可以CPU做从站,CP做主站,他们比较独立,两者不干扰,数据会有CP传输。
5. 指定的FDL连接比其他三种方式数据长度多四个,是因为他没有表头四个字节的数据,它是直接传输过去,所以不需要。
敬请期待下一篇-基础协议篇—TCP通信
PS:友情提醒,所有文章属于一个系列,顺着看效果更好,欢迎大家翻阅我之前所写文章。欢迎大家关注工控谭俊豪,该系列会持续更新~
作者简介
谭俊豪:重庆大学机械工程学院学士,西门子中国公司培训生
本文为原创文章,于头条首发,欢迎关注转载,请注明出处和作者!