s7 通信:s71200做客户端_s7300做服务器端 使用 step7 v11,s7-1200 的 profinet 通信口可以做 s7 通信的服务器端或客户端。s7-1200 仅支持 s7 单边通信,仅需在客户端单边组态连接和编程,而服务器端只准备好通信的数据就行。
所以在编程组态和建立连接方面,s7-1200cpu 如果做为客户端,只需在 s7-1200 这一侧建立连接,并使用单边编程方式 put,get 指令进行通信,而 s7-300cpu 侧不用做任何工作。
所需要条件:
① s7-1200 /s7-300 cp343-1设备
② step7 v11
所完成的通信任务:
① s7-1200cpu 将本地 db3 中的数据写到 s7-300cpu 中 db4 中。
② s7-300cpu 通过 cp 卡将本地 db3 中的数据写到s7-1200cpu 中 db4 中。
在s7-1200 cpu一侧配置编程 1. 使用 step7 v11软件新建一个项目并完成硬件配置
在项目树 “project tree”>“devices & networks” >“networks view” 视图下,创建两个设备的连接。用鼠标点中 plc_1 profinet 通信口上,然后拖拽出一条线,到另外一个 cp343-1 的 profinet 通信口的绿色小方框上,松开鼠标,连接就建立起来了。
2. 网络组态
打开 “network view” 配置网络,点中左上角的“连接”图标,这时所有 cpu 变成亮蓝色,然后选中s7-1200cpu,右键选择添加新的连接, 在连接列表里建立新的连接并选择连接对象和通信协议,如图1. 所示。
图1. 建立s7连接
图2. 定义连接对方地址
图3. 定义通信双方 tsap号
注意:s7-300预留给s7连接tsap地址:03.02;如果通信伙伴是s7-400,则要根据cpu槽位来决定tsap地址,例如: cpu400在3号槽,则tsap地址为03.03。
配置完网络连接,编译存盘并下载。
3. 软件编程
在ob1中,从“instruction”>“s7 communication”>下,调用get、put通信指令。创建发送和接收数据块 db3和db4,定义成100个字节的数组。程序见图4
图4. 程序调用功能
call “get” ,%db2 //调用 get,使用背景db块:db2
req :=%m0.7 //系统时钟 2秒脉冲
id :=w#16#0100 //连接号,要与连接配置中一致,创建连接时的连接号
ndr :=%m4.0 //为1时,接收到新数据
error :=%m4.1 //为1时,有故障发生
status :=%mw6 //状态代码
addr_1 :=p#db3.dbx0.0 byte 100 //从通信伙伴数据区读取数据的地址
rd_1 :=p#db4.dbx0.0 byte 100 //本地接收数据地址
call “put” , %db5 //调用 put,使用背景db块:db5
req :=%m0.7 //系统时钟 2秒脉冲
id :=w#16#0100 //连接号,要与连接配置中一致,创建连接时的连接号
done :=%m8.0 // 为1时,发送完成
error :=%m8.1 // 为1时,有故障发生
status :=%mw10 // 状态代码
addr_1 :=p#db4.dbx0.0 byte 100 // 发送到通信伙伴数据区的地址
sd_1 :=p#db3.dbx0.0 byte 100 // 本地发送数据区
4. 监控结果
通过在s7-1200侧编程进行s7通讯 ,实现两个cpu之间数据交换,监控结果如图5.
图5. 监控结果
常见问题 在 simatic s7-1200 cpu 的用户程序中如何编写“get” 和“put” 指令来传递多于 160 字节数据?
回答:
“get” 指令一行调用三次,使用同一个连接号,这样才能接收 400 个字节的数据。
“put” 指令一行调用两次,使用同一个连接号,这样才能接收 240 个字节的数据。
s7 通信:s7-1200 做客户端 s7-300pn 口做服务器端 使用 step7 v11,s7-1200 的 profinet 通信口可以做 s7 通信的客户端或服务器,s7-1200 仅支持 s7 单边通信,仅需在客户端单边组态连接和编程,而服务器端只准备好通信的数据就行。
所以在编程组态和建立连接方面,s7-1200cpu 如果做为客户端,只需在 s7-1200 这一侧建立连接,并使用单边编程方式 put,get 指令进行通信,而 s7-300cpu 侧不用做任何工作。
所需条件:
① s7-1200/s7-300(集成pn口)
② step7 v11
所完成的通信任务:
① s7-1200 cpu 读取 s7-300 cpu中 db1 的数据到 s7-1200 的 db3 中。
② s7-1200 cpu 将本地 db4 中的数据写到 s7-300 cpu中 db2 中。
在s7-1200 cpu一侧配置编程
1. 使用 step7 v11 软件新建一个项目并完成硬件配置
在项目树 “project tree”>“devices & networks” >“networks view” 视图下,创建两个设备的连接。用鼠标点中 plc_2 上 s7-1200cpu 的 profinet 通信口的绿色小方框,然后拖拽出一条线,到另外一个plc_1 上的profinet通信口上,松开鼠标,连接就建立。
2. 网络组态
打开 “network view” 配置网络,首先点中左上角的“connections”图标,选择“s7 connection”,然后选中 s7-1200 cpu,然后右键选择“add new connection”添加新的连接,如图1. 所示。
图1. 添加连接
然后在“create new connection”窗口中,选择“unspecified”,然后点击“add”建立 s7 连接,如图2.所示。
图2.建立 s7 连接
“s7_connection_1”为建立的连接,选中连接,在属性的“general”条目中定义连接对方 s7-300pn 口的 ip 地址,如下图3.所示。
图3. 定义连接对方的 ip 地址
图4. 定义通讯双方的 tsap 号
注意:s7-300 预留给 s7 连接 tsap 地址:03.02;如果通信伙伴是 s7-400 ,则要根据 cpu 槽位来决定 tsap 地址,例如: cpu400 在 3 号槽,则 tsap 地址为 03.03。
图5. 连接 id 号
配置完网络连接,编译保存并下载。
图6. 通讯连接状态
3. 软件编程
在ob1中,从“instruction” >“communication” >“s7 communication”下,调用 get、put 通信指令,创建接收和发送数据块 db3 和 db4,定义成 101 个字节的数组,程序调用如下图7.所示。
图7. 程序调用功能
功能块管脚说明:
call “get” ,%db1 //调用 get,使用背景db块:db1;
req :=%m0.7 //系统时钟 2秒脉冲 ;
id :=w#16#0100 //连接号,要与连接配置中一致,创建连接时的连接号,如图5.所示;
ndr :=%m2.0 //为1时,接收到新数据;
error :=%m2.1 //为1时,有故障发生;
status :=%mw4 //状态代码;
addr_1 :=p#db1.dbx0.0 byte 10 //从通信伙伴数据区读取数据的地址;
rd_1 :=p#db3.dbx0.0 byte 10 //本地接收数据地址;
call “put” , %db2 //调用 put,使用背景db块:db2;
req :=%m0.7 //系统时钟 2秒脉冲;
id :=w#16#0100 //连接号,要与连接配置中一致,创建连接时的连接号,如图5.所示;
done :=%m3.0 // 为1时,发送完成;
error :=%m3.1 // 为1时,有故障发生;
status :=%mw6 // 状态代码;
addr_1 :=p#db2.dbx0.0 byte 10 // 发送到通信伙伴数据区的地址;
sd_1 :=p#db4.dbx0.0 byte 10 // 本地发送数据区。
4. 监控结果
通过在 s7-1200 侧编程进行 s7 通讯,实现两个 cpu 之间数据交换,监控结果下图8.所示。
?
s7 通信:s7-300pn 口做客户端 s7-1200 做服务器端 使用 step7 v11,s7-1200 的 profinet 通信口可以做 s7 通信的客户端或服务器,s7-1200 仅支持 s7 单边通信,仅需在客户端单边组态连接和编程,而服务器端只准备好通信的数据就行。
所以在编程组态和建立连接方面,s7-300pn口做客户端,只需要在 s7-300cpu 一侧建立单边连接,使用单边编程方式 put,get 指令进行通信,而 s7-1200cpu 将不用做任何编程工作。
注意:如果在s7-1200一侧使用 db 块作为通信数据区,必须将 db 块定义成绝对寻址(选择“标准-与s7-300/400 兼容”),否则会造成通信失败。
所需条件:
① s7-1200/s7-300(集成 pn 口)
② step7 v11
所完成的通信任务:
① s7-300 cpu 读取 s7-1200 cpu中 db1 的数据到 s7-300 的 db3 中。
② s7-300 cpu 将本地 db4 中的数据写到 s7-1200 cpu中 db2 中。
在s7-300 cpu一侧配置编程
1. 使用 step7 v11 软件新建一个项目并完成硬件配置
在项目树 “project tree”>“devices & networks” >“networks view” 视图下,创建两个设备的连接。用鼠标点中 plc_1 上 317cpu 的 profinet 通信口的绿色小方框,然后拖拽出一条线,到另外一个plc_2 上的profinet通信口上,松开鼠标,连接就建立。
2. 网络组态
打开 “network view” 配置网络,首先点中左上角的“connections”图标,选择“s7 connection”,然后选中 317-2pn/dp cpu,然后右键选择“add new connection”添加新的连接,如图1. 所示。
图1. 添加连接
然后在“create new connection”窗口中,选择“unspecified”,然后点击“add”建立 s7 连接,如图2.所示。
图2.建立 s7 连接
“s7_connection_1”为建立的连接,选中连接,在属性的“general”条目中定义连接对方 s7-1200pn 口的ip地址,如下图3.所示。
图3. 定义连接对方的 ip 地址
图4. 定义通讯双方的 tsap 号
注意:s7-1200预留给s7连接两个tsap地址:03.01和03.00
图5. 连接 id 号
配置完网络连接,编译保存并下载。
图6. 通讯连接状态
3. 软件编程
在 ob1 中,从“instruction” >“communication” >“s7 communication”下,调用get、put通信指令,创建接收和发送数据块 db3 和 db4,定义成 101 个字节的数组,程序调用如下图7.所示。
图7. 程序调用功能
功能块管脚说明:
call “get” ,%db1 //调用 get,使用背景db块:db1;
req :=%m0.7 //系统时钟 2秒脉冲 ;
id :=w#16#0001 //连接号,要与连接配置中一致,创建连接时的连接号,如图5.所示;
ndr :=%m2.0 //为1时,接收到新数据;
error :=%m2.1 //为1时,有故障发生;
status :=%mw4 //状态代码;
addr_1 :=p#db1.dbx0.0 byte 10 //从通信伙伴数据区读取数据的地址;
rd_1 :=p#db3.dbx0.0 byte 10 //本地接收数据地址;
call “put” , %db2 //调用 put,使用背景db块:db2;
req :=%m0.7 //系统时钟 2秒脉冲;
id :=w#16#0001 //连接号,要与连接配置中一致,创建连接时的连接号,如图5.所示;
done :=%m3.0 // 为1时,发送完成;
error :=%m3.1 // 为1时,有故障发生;
status :=%mw6 // 状态代码;
addr_1 :=p#db2.dbx0.0 byte 10 // 发送到通信伙伴数据区的地址;
sd_1 :=p#db4.dbx0.0 byte 10 // 本地发送数据区。
4. 监控结果
通过在 s7-300 侧编程进行 s7 通讯,实现两个 cpu 之间数据交换,监控结果下图8.所示。
s7-1200 cpu 通过ethernet与s7-200 cpu 通信 s7-1200 cpu 与 s7-200 cpu 之间的以太网通信只能通过 s7 通信来实现,因为 s7-200 的以太网模块只支持s7 通信。而在 step7 v11中, s7-1200 的 profinet 通信口可以做 s7 通信的服务器端或客户端。当s7-200作为客户端,s7-1200作为服务器,见“s7-1200 cpu 通过ethernet与s7-200 cpu 通信”;当s7-200作为服务器,s7-1200作为客户端,由于s7-1200 仅支持 s7 单边通信,需在客户端单边组态连接和编程,而作为服务器端的s7-200只需设置为服务器准备好通信的数据就行。
硬件和软件需求及所完成的通信任务 硬件:
① s7-1200 cpu 硬件版本v2.0或更高
② s7-200 cpu + cp243-1
③ pc (带以太网卡)
④ pc/ppi 电缆
⑤ tp以太网电缆
软件:
① step7 v11 sp2
② step 7 micro/win v4.0 sp9
所完成的通信任务:
① s7-1200 将通信数据区 db1 中的212 个字节发送到 s7-200 的vb 数据区。
② s7-1200 读取 s7–200中的vb数据区存储到s7-1200 的数据区db2 。
s7-200 server 端的组态 1. 打开 step 7 micro/win 软件,创建一个新项目,在“plc”>“type”选择所使用 cpu 的型号,如图1. 所示。
图1. 选择s7-200 cpu 类型
2. 选择“工具”>“以太网向导” 进入 cp243-1 的向导配置,如图2. 所示。
图2. 使用以太网向导
3. 选择cp243-1 模板的位置。
cp243-1 紧邻 cpu 安装,所以模板位置为0 ,也可以通过“读取模块”读出模板位置,如图3. 所示。
图3. 选择模板位置
4. 设置 cp243-1 模板的 ip 地址
ip 地址:192. 168. 70. 101 ,子网掩码:255. 255. 255. 0,如图4.所示。
图4. 设置网络地址
5. 设置模块所占用输出地址字节和连接数,如图5. 所示。
图5. 设置占用输出地址及网络连接数
6. 将cp243-1 定义为 server 端,如图6. 所示。
图 6. 定义为 server 端
注意:本例s7-200中安装的cp243-1紧邻cpu,位置为0,故tsap地址为10.00;若cp243-1在位置为1,则tsap地址为10.01。
7. 选择crc校验,如图7. 所示。
图7. 选择crc 较验
8. 为配置分配存储区
根据以态网的配置,需要一个v存储区,用户可以指定一个未用过的v存储区的起始地址,也可以点击“建议地址”按钮使用建议地址。如图8. 所示。
图8. 为配置分配存储区
9. 生成以太网用户子程序。如图9. 所示。
图9. 生成子程序
10. 调用向导中生成的子程序,并将程序下载到cpu中。如图10. 所示。
图10. 调用子程序
s7-1200 client 端的配置编程 1. 使用 step7 v11软件新建一个项目并完成硬件配置,网络组态
1.1 在“项目树”>“设备组态”>“网络视图”下,按如下图片中1~6的步骤建立s7连接,如图11. 所示。
图11. 建立s7连接
1.2 按如下图片中1~3的步骤填写连接参数,如图12. 所示。
图12. 定义连接对方ip地址
1.3 在“地址详细信息”中设置通信伙伴的tsap地址,如图13. 所示。
图13. 定义通信双方tsap号
注意:通讯伙伴的tsap地址设定必须与cp243-1的组态一致,如图6所示。
2. 软件编程
2.1 创建发送数据块db1(接收区数据块db2类似),定义为212个字节的数组,如图14.和15. 所示。
图14. 创建发送数据块db1
图15. 定义212个字节的数组
2.2 在ob1中,从“指令”-->“s7 通信”下,调用get、put通信指令,程序见图16。
图16. 程序调用功能
call “put” , %db3 //调用 put,使用背景db块:db3
req :=%m0.7 //系统时钟 2秒脉冲
id :=w#16#0100 //连接号,要与连接配置中一致,创建连接时的连接号
done :=%m2.0 // 为1时,发送完成
error :=%m2.1 // 为1时,有故障发生
status :=%mw4 // 状态代码
addr_1 :=p#db1.dbx1000.0 byte 212 // 发送到通信伙伴数据区的地址
sd_1 :=p#db1.dbx0.0 byte 212 // 本地发送数据区
call “get” , %db4 //调用 get,使用背景db块:db4
req :=%m0.7 //系统时钟 2秒脉冲
id :=w#16#0100 //连接号,要与连接配置中一致,创建连接时的连接号
ndr :=%m2.2 //为1时,接收到新数据
error :=%m2.3 //为1时,有故障发生
status :=%mw6 //状态代码
addr_1 :=p#db1.dbx2000.0 byte 212 //从通信伙伴数据区读取数据的地址
rd_1 :=p#db2.dbx0.0 byte 212 //本地接收数据地址
3. 监控结果
通过在s7-1200侧编程进行s7通信,实现两个cpu之间的数据交换,监控结果如图17。
图17. s71200和s7200监控数据
注意:s7-200中v区对应于db1,即在put指令中使用的通信伙伴数据区addr_1=p#db1.dbx1000.0 byte 212在s7-200中对于为vb1000~vb1211。
湖南 长沙 西门子 6es7232-4ha30-0xb0