S71200与S7300 CP ISO on TCP通信300用TIA PORTAL.docx
《S71200与S7300 CP ISO on TCP通信300用TIA PORTAL.docx》由会员分享,可在线阅读,更多相关《S71200与S7300 CP ISO on TCP通信300用TIA PORTAL.docx(19页珍藏版)》请在冰豆网上搜索。
![S71200与S7300 CP ISO on TCP通信300用TIA PORTAL.docx](https://file1.bdocx.com/fileroot1/2023-1/5/6cb5a348-0e78-49c8-a46f-af920f6149b4/6cb5a348-0e78-49c8-a46f-af920f6149b41.gif)
S71200与S7300CPISOonTCP通信300用TIAPORTAL
S7-1200CPU与S7-300CPISOonTCP通信(S7-1200作为客户端,S7-300使用TIAPORTAL)
S7-1200CPU与S7-300之间通过ISOonTCP通信,需要在双方都建立连接,连接对象选择“Unspecified”。
所完成的通信任务为:
①S7-1200将DB3里的100个字节发送到S7-300的DB4中
②S7-300将DB3里的10个字节发送到S7-1200的DB4中
硬件和软件需求及所完成的通信任务
硬件:
①S7-1200CPU/S7-300CPU+CP343-1
②PC(带以太网卡)
③TP电缆
软件:
STEP7V11orHigher
S7-1200组态
1.打开STEP7V11软件并新建项目
在STEP7V11的“PortalView”中选择“Createnewproject”创建一个新项目
2.添加硬件并命名PLC
然后进入“Projectview”,在“Projecttree”下双击“Addnewdevice”,在对话框中选择所使用的S7-1200CPU添加到机架上,命名为PLC_1,如图1所示。
图1.添加新设备
为了编程方便,使用CPU属性中定义的时钟位,定义方法如下:
在“Projecttree”>“PLC_1”>“Deviceconfiguration”中,选中CPU,然后在下面的属性窗口中,“Properties”>“Systemandclockmemory”下,将系统位定义在MB1,时钟位定义在MB0,如图2所示。
时钟位我们主要使用M0.3,它是以2Hz的速率在0和1之间切换的一个位,可以使用它去自动激活发送任务。
图2.系统位与时钟位
3.为PROFINET通信口分配以太网地址
在“DeviceView”中点击CPU上代表PROFINET通信口的绿色小方块,在下方会出现PROFINET接口的属性,在“Ethernetaddresses”下分配IP地址为192.168.0.1,子网掩码为255.255.255.0,如图3.所示。
图3.分配IP地址
S7-1200编程
1.在PLC_1的OB1中调用“TCON”通信指令
①在第一个CPU中调用发送通信指令,进入“Projecttree”>“PLC_1”>“Programblocks”>“OB1”主程序中,从右侧窗口“Instructions”>“Communications”>“OPENUserCommunications”下调用“TCON”指令,创建连接,如图4所示。
图4.调用“TCON”通信指令
②创建DB2分配连接参数,见图5所示
图5.创建连接数据块DB2(Con_DB)
③定义PLC_1的“TCON”连接参数
PLC_1的TCON指令的连接参数需要在指令下方的属性窗口“Properties”>“Configuration”>“Connectionparameter”中设置,如图6所示。
图6.定义TCON连接参数
连接参数说明:
Endpoint
:
可以通过点击选择按钮选择伙伴CPU:
PLC3
Connectiontype
:
选择通信协议为ISOonTCP(也可以选择TCP或UDP协议)
ConnectionID
:
连接的地址ID号,这个ID号在后面的编程里会用到
Connectiondata
:
创建连接时,生成的Con_DB块。
见图2所示
Activeconnectionsetup
:
选择本地PLC_1作为主动连接
Addressdetails
:
定义通信伙伴方的端口号为:
2000;如果选用的是ISOonTCP协议,则需要设定的TSAP地址(ASCII形式),本地PLC_1可以设置成“PLC1”,伙伴方Unspecified可以设置成“PLC3”。
2.定义PLC_1的“TSEND”发送通信块接口参数
① 调用“TSEND”在OB1内调用发送100个字节数据到PLC2中
进入“Projecttree”>“PLC_1”>“Programblocks”>“OB1”主程序中,从右侧窗口“Instructions”>“Communications”>“OPENUserCommunications”下调用“TSEND”指令,如图7所示。
图7.调用TSEND
② 创建并定义PLC_1的发送数据区DB块。
通过“Projecttree”>“PLC_1”>“Programblocks”>“Addnewblock”,选择“Datablock”创建DB块,选择绝对寻址,点击“OK”键,定义发送数据区为100个字节的数组,如图8~9所示。
图8.创建发送数据区DB块
注意:
对于双边编程通信的CPU,如果通信数据区使用DB块,既可以将DB块定义成符号寻址,也可以定义成绝对寻址。
使用指针寻址方式,必须创建绝对寻址的DB块。
图9.定义发送数据区为字节类型的数组图PLC1_TSENDC_DATA
③ 定义PLC_1的“TSEND”发送通信块接口参数,如图10所示。
图10.定义TSEND接口参数
参数说明:
输入接口参数:
REQ
:
=M0.3
//使用2Hz的时钟脉冲,上升沿激活发送任务
ID
:
=1
//创建连接ID
LEN
:
=100
//发送数据长度
DATA
:
=P#DB3.DBX0.0BYTE100
//发送数据区的数据,使用指针寻址时,DB块要选用绝对寻址
输出接口参数:
DONE
:
=M300.0
//任务执行完成并且没有错误,该位置1
BUSY
:
=M300.1
//该位为1,代表任务未完成,不能激活新任务
ERROR
:
=M300.2
//通信过程中有错误发生,该位置1
STATUS
:
=MW302
//有错误发生时,会显示错位信息号
3.在PLC_1的OB1中调用接收指令T_RCV并配置基本参数
为了实现PLC_1接收来自PLC_2的数据,则在PLC_1中调用接收指令T_RCV并配置基本参数。
① 调用“TRCV”在OB1内调用
进入“Projecttree”>“PLC_1”>“Programblocks”>“OB1”主程序中,从右侧窗口“Instructions”>“Communications”>“OPENUserCommunications”下调用“TRCV”指令,配置接口参数,如图11所示。
图11.调用TRCV指令并配置接口参数
参数说明:
输入接口参数:
EN_R
:
=TRUE
//准备好接收数据
ID
:
=1
//连接号,使用的是TCON的连接参数中ID号
LEN
:
=8
//接收数据长度为10个字节
DATA
:
=P#DB5.DBX0.0BYTE10
//接收数据区的地址
输出接口参数:
NDR
:
=M310.0
//该位为1,接收任务成功完成
BUSY
:
=M310.1
//该位为1,代表任务未完成,不能激活新任务
ERROR
:
=M310.2
//通信过程中有错误发生,该位置1
STATUS
:
=MW312
//有错误发生时,会显示错误信息号
RCVD_LEN
:
=MW314
//实际接收数据的字节数
② 创建并定义PLC_1的接收数据区DB块。
通过“Projecttree”>“PLC_1”>“Programblocks”>“Addnewblock”,选择“Datablock”创建DB块,选择绝对寻址,点击“OK”键,定义接收数据区为100个字节的数组,如图12~13所示。
图12.创建接收数据区DB块
注意:
对于双边编程通信的CPU,如果通信数据区使用DB块,既可以将DB块定义成符号寻址,也可以定义成绝对寻址。
使用指针寻址方式,必须创建绝对寻址的DB块。
图13定义接收数据区为字节类型的数组
S7-300组态
1.使用STEP7V11软件添加新设备并命名PLC3
然后进入“Projectview”,在“Projecttree”下双击“Addnewdevice”,在对话框中选择所使用的S7-300CPU添加到机架上,命名为PLC3,如图14所示。
图14.添加新设备
2.使用STEP7V11软件配制硬件组态
进入“PLC3”,在“Projecttree”下双击“Deviceconfiguration”,在对话框中选择所使用的S7-300CP通讯卡添加到机架上,如图15所示。
图15.组态CP卡
为了编程方便,使用CPU属性中定义的时钟位,定义方法如下:
在“Projecttree”>“PLC3”>“Deviceconfiguration”中,选中CPU,然后在下面的属性窗口中,“Properties”>“clockmemory”下时钟位定义在MB0,如图16所示。
时钟位我们主要使用M0.3,它是以2Hz的速率在0和1之间切换的一个位,可以使用它去自动激活发送任务。
图16.系统位与时钟位
3.为PROFINET通信口分配以太网地址
在“DeviceView”中点击CP设备上代表PROFINET通信口的绿色小方块,在下方会出现PROFINET接口的属性,在“Ethernetaddresses”下分配IP地址为192.168.0.3,子网掩码为255.255.255.0,如图17所示。
图17.分配IP地址
4.创建CPU的逻辑网络连接
在项目树“Projecttree”>“Devices&Networks”>“Networksview”视图下,创建两个设备的连接。
用鼠标点中PLC_3上CP343-1的PROFINET通信口的绿色小方框,然后拖拽出一条线,到另外一个PLC_1上的PROFINET通信口上,松开鼠标,连接就建立起来了,如图18所示。
图18.建立两个CPU的逻辑连接
5.网络组态
打开“NetworkView”配置网络,选中CPU,然后选中“Connnection”在连接列表里建立新的连接并选择连接对象和通信协议,如图19.所示。
图19.创建新的连接并选择ISO-on-TCP协议
点击确定,配置详细连接参数如IP地址及TSAP号,如图20.所示。
图20.详细通讯参数
配置完连接并编译存盘后。
S7-300编程
1.软件编程
在OB1中,从“Instruction”>“Communicationprocessor”>“SimaticNETCP”下,调用AG_SEND、AG_RECV通信指令。
创建发送和接收数据块DB3和DB4,定义成100个字节的数组。
如图21~22
图21.调用AG_SEND
图22.调用AG_RECV
CALL“AG_SEND”
//调用AG_SEND
ACT
:
=%M0.2
//为1时,激活发送任务
ID
:
=1
//连接号,要与连接配置中一致
LADDR
:
=W#16#100
//CP的地址,要与配置中一致见图3
SEND
:
=P#DB3.DBX0.0BYTE10
//发送数据区
LEN
:
=10
//发送数据的长度
DONE
:
=%M10.0
//为1时,发送完成
ERROR
:
=%M10.2
//为1时,有故障发生
STATUS
:
=%MW12
//状态代码
CALL“AG_RECV”
//调用AG_RECV
ID
:
=1
//连接号,要与连接配置列表中一致,
LADDR
:
=W#16#100
//CP的地址,要与配置中一致,见图3
RECV
:
=P#DB4.DBX0.0BYTE100
//接收数据区
NDR
:
=%M20.0
//为1时,接收到新数据
ERROR
:
=%M20.1
//为1时,有故障发生
STATUS
:
=%MW22
//状态代码
LEN
:
=%MW24
//接收到的实际数据长度
注意:
AG_SEND/AG_RECV管用LADDER定义为CP卡硬件地址,参考图15
监控通信结果
下载S7-1200和S7-300中的所有组态及程序,监控通信结果,如图23所示。
在S7-1200CPU中向DB3中写入数据:
“1”、“2”、“3”....,则在S7-300中的DB4块收到数据也为“1”、“2”、“3”...。
在S7-300CPU中向DB3中写入数据:
“10”、“20”、“30”....,则在S7-1200中的DB4块收到数据也为“10”、“20”、“30”...。
图23.监控表