西门子6es7215-1hg31-0xb0
西门子6es7215-1hg31-0xb0
西门子6es7215-1hg31-0xb0
上海斌勤电气《康奎业务经理》
电话;24小时为您服务
(siemens西门子) 诚信走天下,走遍天下有朋友
cpu自带的以太网接口可以使用open ie的方式实现如下协议,分别介绍如下:
• tcp
• udp
• iso-on-tcp
注意:以下内容任何用户可以免费使用,复制和传递他人,程序的作者及拥有者不负责软件的功能性和兼容性,使用者须自己承担责任,由于内容免费,所以不保证错误的更正和热线支持!
1. tcp通信
1.1通信程序块的准备
如下的通信块可以用来建立tcp通信,您需要把这些程序块拷贝到您的项目中:
1) fb65 "tcon" 用于建立连接,连接时需要udt65来提供参数
2) fb66 "tdiscon" 用于断开连接
3) fb63 "tsend" 用于发送数据到s7站点、s5站点、pc站或者第三方设备
4) fb64 "trcv" 用于从s7站点、s5站点、pc站或者第三方设备接收数据
5) udt65 "tcon_par"存放用户通信参数
6) fc97 "set_tcp_endpointx" 用于修改udt65类型变量内通信对象参数
fb63,64,65,66这四个功能块可以在standard library -> communication blocks里得到:
图 01: fb63,64,65,66
fc97与udt65需要从如下项目中打开获得:
( 42 kb )
图 02: fc97与udt65
首先建立一个s7-300或者s7-400站,拷贝如上程序块到项目中。
1.2通信程序编写
1.2.1 生成数据块
在程序中生成一个db块,块号不限(本例为db101),在块中建立变量db_var,类型为udt65
图 03: 生成udt65类型变量
1.2.2在ob1中编程
首先调用fc97 "set_tcp_endpointx"
图 04: 调用fc97
fc97参数说明如下:
• id: 连接id
• dev_id
dev_id = b#16#1 用于本plc型号(注意不是通信对方)为 im151-8 pn/dp cpu
dev_id = b#16#2 用于本plc型号(注意不是通信对方)为 cpu31x-2pn/dp或im154-8 cpu
dev_id = b#16#3 用于本plc型号(注意不是通信对方)为 cpu319-3pn/dp
dev_id = b#16#5用于本plc型号(注意不是通信对方)为 cpu41x-3pn/dp
• active: 主动或是被动建立连接,通信双方必须一个主动,一个被动
• loc_port: cpu本地的tcp端口
• rem_port: 通信伙伴的tcp远程端口
• ip_addr1 ... ip_addr4: 通信伙伴的ip地址
• v23:本机是否是cpu31x-2pn/dp firmware 版本为2.3或以下版本
• con_db:用udt65生成的变量
图05: 调用fb65 "t_con"
调用fb65 ,通过提供给fb65的输入参数"req"一个上升沿来建立连接。 “id”为连接id,“connect”参数填写用udt65生成的变量, 连接建立后会一直保持,直到调用fb66 "tdiscon"断开连接,cpu停止或者断电。
1.2.3 调用发送和接收程序
图06: 调用 fb63,64发送接收数据
fb63 "tsend" 发送请求依靠输入参数"req"的上升沿来实现,如果“busy”位为true时不要触发"req"。输出参数 "done", "error" 和 "status" 用于评估工作的情况。
fb64 "trecv" 用于接收数据,en_r始终为true, “id “填写连接id,”data”填写接收数据区,输出参数"ndr" 用于表示新的数据已经收到,输出参数"len" 表示接收的数据长度。
1.2.4断开连接
调用fb66 "tdiscon",“id “填写连接id,输入参数"req"的上升沿来实现断开连接操作。
图 07: 调用fb66 "tdiscon"
2. udp通信
2.1通信程序块的准备
如下的通信块可以用来建立udp通信,您需要把这些程序块拷贝到您的项目中:
1) fb65 "tcon" 用于建立连接,连接时需要udt65来提供参数
2) fb66 "tdiscon" 用于断开连接
3) fb67 "tusend"用于发送数据到s7站点、s5站点、pc站或者第三方设备
4) fb68 "turcv"用于从s7站点、s5站点、pc站或者第三方设备接收数据
5) udt65 "tcon_par"存放用户通信参数
6) udt66 "taddr_par"存放用户通信参数
7) fc95"set_udp_endpoint"用于建立本地udp通信参数
8) fc96"set_udp_remote"用于建立远程udp通信参数
fb65,66,67,68这四个功能块可以在standard library -> communication blocks里得到:
图 08: fb65,66,67,68
fc95,96与udt65,66需要从如下项目中打开获得:
( 41 kb )
图 09: fc95,96与udt65,66
首先建立一个s7-300或者s7-400站,拷贝如上程序块到项目中。
2.2通信程序编写
2.2.1 生成数据块
然后在程序中生成一个db块,块号不限(本例为db101),在块中建立变量db_var,类型为udt65
图 10: 生成udt65类型变量
然后在程序中生成另一个db块,块号不限(本例为db102),在块中建立变量db_var,类型为udt66
图 11: 生成udt66类型变量
2.2.2在ob1中编程
首先调用fc95,96
图 12:调用fc95,96
定义的本地udp端点连接参数:
通过fc95 "set_udp_endpoint"设置,下列参数需要考虑:
• id: 连接id
• dev_id
dev_id = b#16#1 用于本plc型号(注意不是通信对方)为 im151-8 pn/dp cpu
dev_id = b#16#2 用于本plc型号(注意不是通信对方)为 cpu31x-2pn/dp或im154-8 cpu
dev_id = b#16#3 用于本plc型号(注意不是通信对方)为cpu319-3pn/dp
dev_id = b#16#5用于本plc型号(注意不是通信对方)为cpu41x-3pn/dp
• loc_port: cpu本地的tcp端口
通过fc96 "set_udp_remote"定义远端的udp端点. 下列参数需要考虑:
rem_port: 通信方端口号
ip_addr1 ... ip_addr4: 通信方ip地址
图 13: 调用fb65 "t_con"
调用fb65 ,通过提供给fb65的输入参数"req"一个上升沿来建立连接。 “id”为连接id,“connect”参数填写用udt65生成的变量, 连接建立后会一直保持,直到调用fb66 "tdiscon"断开连接,cpu停止或者断电。
2.2.3 调用发送和接收程序
图 14: 调用fb67,68接收和发送数据
fb67 "tusend"发送请求依靠输入参数"req"的上升沿来实现,如果“busy”位为true时不要触发"req"。输出参数 "done", "error" 和 "status" 用于评估工作的情况。"addr"填写udt66生成的变量。
fb68 "turcv" 用于接收数据,en_r始终为true, “id “填写连接id,”data”填写接收数据区,输出参数"ndr" 用于表示新的数据已经收到,输出参数"len" 表示接收的数据长度。"addr"填写udt66生成的变量。
2.2.4断开连接
调用fb66 "tdiscon",“id “填写连接id,输入参数"req"的上升沿来实现断开连接操作。
图 15: 调用fb66 "tdiscon"
3. iso on tcp通信
3.1通信程序块的准备
如下的通信块可以用来建立iso on tcp通信,您需要把这些程序块拷贝到您的项目中:
1) fb65 "tcon" 用于建立连接,连接时需要udt65来提供参数
2) fb66 "tdiscon" 用于断开连接
3) fb63 "tsend" 用于发送数据到s7站点、s5站点、pc站或者第三方设备
4) fb64 "trcv" 用于从s7站点、s5站点、pc站或者第三方设备接收数据
5) udt65 "tcon_par"存放用户通信参数
6) fb420 "set_iso_endpoint" 用于修改udt65内通信对象参数
7) fc21 被fb420调用
fb63,64,65,66这四个功能块可以在standard library -> communication blocks里得到:
图 16: fb63,64,65,66
fb420 fc21与udt65需要从如下项目中打开获得:
( 50 kb )
图 17: fb420 fc21与udt65
首先建立一个s7-300或者s7-400站,拷贝如上程序块到项目中。
3.2通信程序编写
3.2.1 生成数据块
在程序中生成一个db块,块号不限(本例为db101),在块中建立变量db_var,类型为udt65
图 18: 生成udt65类型变量
3.2.2在ob1中编程
首先生成一个fb块,本例为fb400:
在静态变量区建立一个结构“t_tsap“,包含如下变量:
1) loc_rack_slot (byte)= b#16#2 表示有两个前导字符 0xe0 (cpu31x-2pn/dp 或者 cpu319-3pn/dp规定)和 0x02(cpu槽号)
本地 tsap | 远程tsap | |
ascii | tcp-1 | tcp-1 |
hexadecimal | e0.02.54.43.50.2d.31 | 54.43.50.2d.31 |
2) loc_tsap(bbbbbb14)= 本地用户定义的ascii字符 (默认 -> 'tcp-1')
3) rem_rack_slot(byte)= b#16#0 不使用两个前导符,只适用于第三方设备!如果是西门子plc作为通信对象,则需要根据实际情况填写cpu 槽号,例如b#16#2
4) rem_tsap (bbbbbb16)= 远程用户定义的ascii字符(默认 -> 'tcp-1'):
图 19: 生成t_tsap结构
调用fb420
图 20: 调用fb420
• id: 连接id
• dev_id
dev_id = b#16#1 用于本plc型号(注意不是通信对方)为 im151-8 pn/dp cpu
dev_id = b#16#2 用于本plc型号(注意不是通信对方)为 cpu31x-2pn/dp或im154-8 cpu
dev_id = b#16#3 用于本plc型号(注意不是通信对方)为cpu319-3pn/dp
dev_id = b#16#5用于本plc型号(注意不是通信对方)为cpu41x-3pn/dp
• active: 主动或是被动建立连接, 通信双方必须一个主动,一个被动
• t_tsap: 静态变量区的结构变量,用于iso on tcp 通信的tsap地址
• ip_addr1 ... ip_addr4: 通信伙伴的ip地址
• con_db:用udt65生成的变量
图21: 调用fb65 "t_con"
调用fb65 ,通过提供给fb65的输入参数"req"一个上升沿来建立连接。 “id”为连接id,“connect”参数填写用udt65生成的变量, 连接建立后会一直保持,直到调用fb66 "tdiscon"断开连接,cpu停止或者断电。
3.2.3 调用发送和接收程序
图22: 调用 fb63,64发送接收数据
fb63 "tsend" 发送请求依靠输入参数"req"的上升沿来实现,如果“busy”位为true时不要触发"req"。输出参数 "done", "error" 和 "status" 用于评估工作的情况。
fb64 "trecv" 用于接收数据,en_r始终为true, “id “填写连接id,”data”填写接收数据区,输出参数"ndr" 用于表示新的数据已经收到,输出参数"len" 表示接收的数据长度。
3.2.4断开连接
调用fb66 "tdiscon",“id “填写连接id,输入参数"req"的上升沿来实现断开连接操作。
图 23: 调用fb66 "tdiscon"
关键词
s5兼容通信、 tcp、 udp、 iso on tcp 、pn 、open ie