西门子 6ES7365-0BA01-0AA0
西门子 6ES7365-0BA01-0AA0
西门子 6ES7365-0BA01-0AA0
SIEMENS(西门子销售中心)
上海西邑电气技术有限公司
zx-plc.com )
联系人:万紫云(销售经理)
注意:以下内容任何用户可以免费使用,复制和传递他人,程序的作者及拥有者不负责软件的功能性和兼容性,使用者须自己承担责任,由于内容免费,所以不保证错误的更正和热线支持!
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断开连接