1.概述
1.1 s7-1200 的profinet 通信口
s7-1200 cpu 本体上集成了一个 profinet 通信口,支持以太网和基于 tcp/ip 的通信标准。使用这个通信口可以实现 s7-1200 cpu 与编程设备的通信,与hmi触摸屏的通信,以及与其它 cpu 之间的通信。这个profinet 物理接口是支持10/100mb/s的 rj45口,支持电缆交叉自适应,因此一个标准的或是交叉的以太网线都可以用于这个接口。
1.2 s7-1200支持的协议和最大的连接资源
s7-1200 cpu 的profinet 通信口支持以下通信协议及服务
• tcp
• iso on tcp ( rcf 1006 )
• s7 通信 (服务器端)
通信口所支持的最大通信连接数
s7-1200 cpu profinet 通信口所支持的最大通信连接数如下:
• 3个连接用于hmi (触摸屏) 与 cpu 的通信
• 1个连接用于编程设备(pg)与 cpu 的通信
• 8个连接用于open ie ( tcp, iso on tcp) 的编程通信,使用t-block 指令来实现
• 3个连接用于s7 通信的服务器端连接,可以实现与s7-200,s7-300以及 s7-400 的以太网s7 通信
s7-1200 cpu可以同时支持以上15个通信连接,这些连接数是固定不变的,不能自定义。
tcp(transport connection protocol)
tcp是由 rfc 793描述的标准协议,可以在通信对象间建立稳定、安全的服务连接。如果数据用tcp协议来传输,传输的形式是数据流,没有传输长度及信息帧的起始、结束信息。在以数据流的方式传输时接收方不知道一 条信息的结束和下一条信息的开始。因此,发送方必须确定信息的结构让接收方能够识别 。在多数情况下tcp应用了ip (internet protocol) ,也就是“tcp/ip 协议”, 它位于 iso-osi 参考模型的第四层。
协议的特点:
• 与硬件绑定的高效通信协议
• 适合传输中等到大量的数据 (<=8192 bytes)
• 为大多数设备应用提供
– 错误恢复
– 流控制
– 可靠性
• 一个基于连接的协议
• 可以灵活的与支持tcp协议的第三方设备通信
• 具有路由兼容性
• 只可使用静态数据长度
• 有确认机制
• 使用端口号进行应用寻址
• 大多数应用协议,如telnet、ftp都使用tcp
• 使用 send/receive 编程接口进行数据管理需要编程来实现
1.3 硬件需求和软件需求
硬件:
① s7-1200 cpu
② s7-300 cpu + cp343-1(支持s7 client)
③ pc(带以太网卡)
④ tp以太网电缆
软件:
① step 7 basic v10.5
② step 7 v5.4
2. iso on tcp 通信
s7-1200 cpu 与s7-300/400 之间通过iso on tcp 通信,需要在双方都建立连接,连接对象选择“unspecified”。
所完成的通信任务为:
① s7-1200将db3里的100个字节发送到s7-300的db2中
② s7-300将输入数据ib0发送给s7-1200的输出数据区qb0。
2.1 s7-1200 cpu 的组态编程
组态编程过程与 s7-1200 cpu 之间的通信基本相似 (见 6.3 ),这里简单描述一下步骤:
① 使用step 7 basic v10.5 软件新建一个项目
在step 7 basic 的“portal view”中选择 “create new project”创建一个新项目
② 添加新设备
然后进入“project view”,在“project tree”下双击“add new device”,在对话框中选择所使用的s7-1200 cpu添加到机架上,命名为 plc_1。
③ 为 profinet 通信口分配以太网地址
在“device view”中点击 cpu 上代表profinet 通信口的绿色小方块,在下方会出现profinet 接口的属性,在 “ethernet addresses”下分配ip 地址为 192.168.0.1 ,子网掩码为255.255.255.0。
④ 在 s7-1200 cpu 中调用“tsend_c”通信指令并配置连接参数和块参数
在主程序中调用发送通信指令,进入“project tree” > “ plc_1”>“program blocks”>“main”主程序中,从右侧窗口“instructions”> “extended instructions”>“communications”下调用“tsend_c”指令,并选择“single instance”生成背景 db块。然后单击指令块下方的“下箭头”,使指令展开显示所有接口参数。
然后,创建并定义发送数据区 db 块。通过“project tree”>“ plc_1”> “program blocks” >“add new block” ,选择 “data block”创建 db 块,选择绝对寻址,点击“ok”键,定义发送数据区为 100个字节的数组。
根据所使用的参数创建符号表,如图1所示。
配置连接参数,如图2所示。
配置块接口参数,如图3所示。
图1 创建所使用参数的符号表图plc tag
图2 配置连接参数
图3 配置 tsend_c 块参数
⑤ 调用“trcv”通信指令并配置块参数如图6 47所示。
因为与发送使用的是同一连接,所以使用的是不带连接的发送指令“trcv”,连接“id”使用的也是“tsend_c”中的“connection id”号,如图4所示。
图4 配置 t_rcv 块参数
2.2 s7-300 cpu 的iso on tcp通信的组态编程
① 使用step 7 软件新建一个项目并进行硬件组态
创建完新项目,在项目的窗口下,右键菜单里,选择“insert new object”>“simatic 300 station” ,插入一个s7-300 站。
为了编程方便,我们使用时钟脉冲激活通信任务,在cpu的“properties”>“cycle/clock memory”中设置,如图5所示。
图5 设置时钟脉冲
每一个时钟位都按照不同的周期/频率在0和1之间切换变化,见表1。
表1:时钟位频率
位
7
6
5
4
3
2
1
0
周期(s)
2
01. jun
1
0.8
0.5
0.4
0.2
0.1
频率(hz)
0.5
0.625
1
jan 25
2
02. mai
5
10
② 配置以太网模块
进入“hw config”中,组态所使用的 cpu 及“cp343-1”模板。并新建以态网 ethernet (1) ,配置“cp343-1”模板ip 地址为:192.168.0.2,子网掩码为: 255.255.255.0 。如图6所示。配置完硬件组态及属性,编译存盘并下载所有硬件组态。
图6 s7-300 硬件配置
③ 网络组态
打开 “netpro” 配置网络,选中 cpu,在连接列表里建立新的连接并选择连接对象和通信协议,如图7所示。
图7 创建新的连接并选择 iso-on-tcp 协议
这时会跳出通用信息,如图8所示。
图8 通用信息
然后,进入“addresses”配置通信双方的ip 地址及tsap 地址,如图9所示。
图9 配置通信的ip 地址及tsap 地址
配置完连接并编译存盘后,将网络组态下载到cpu300中。
④ 软件编程
在ob1中,从“libraries”>“simatic_net_cp”>“cp300”下,调用fc5(ag_send)、fc6(ag_recv)通信指令。创建接收数据区为 db2,定义成100个字节的数组。
call “ ag_recv” //调用fc6
id :=1 // 连接号,要与连接配置列表中一致,见图8
laddr :=w#16#100 //cp的地址,要与配置中一致,见图8
recv :=p#db2.dbx 0.0 byte 100 //接收数据区
ndr :=m10.0 //为1时,接收到新数据
error :=m10.1 //为1时,有故障发生
status :=mw12 //状态代码
len :=mw14 //接收到的实际数据长度
call “ag_send” //调用fc5
act :=m0.2 //为1时,激活发送任务
id :=1 // 连接号,要与连接配置中一致
laddr :=w#16#100 //cp的地址,要与配置中一致
send :=ib0 //发送数据区
len :=1 //发送数据的长度
done :=m10.2 //为1时,发送完成
error :=m10.3 //为1时,有故障发生
status :=mw16 //状态代码
2.3 监控通信结果
下载s7-1200和s7-300中的所有组态及程序,监控通信结果,如图10、图11所示。
在s7-1200 cpu中向db3中写入数据:“11”、“22”、“33”,则在s7-300中的db2块收到数据也为“11”、“22”、“33”。
在s7-300 cpu中,将“2#1111_1111”写入ib0,则在s7-1200 cpu中qb0中收到的数据也为“2#1111_1111”。
图10 s7-1200监控表
图11 s7-300 变量表
3. tcp 通信
使用tcp 协议通信,除了连接参数的定义不同,通信双方的其它组态及编程与前面的iso on tcp 协议通信完全相同。
s7-1200 cpu中,使用 tcp 协议与s7-300通信时,plc_1的连接参数,如图12所示。通信伙伴 s7-300 的连接参数,如图13所示。
图12 s7-1200 的tcp连接参数的配置
图13 s7-300 的tcp连接参数的配置