当前位置: 螺丝 >> 螺丝市场 >> 西门子S71200与S71200以太
西门子S7-与S7-以太网通讯
S7-与S7-之间的以太网通信可以通过TCP或ISOonTCP协议来实现,使用的通信指令是在双方CPU调用T-block(TSEND_C,TRCV_C,TCON,TDISCON,TSEN,TRCV)指令来实现。通信方式为双边通信,因此TSEND和TRCV必须成对出现。因为S7-CPU目前只支持S7通信的服务器(Sever)端,所以它们之间不能使用S7这种通信方式。
S7-支持的协议和最大的连接资源
S7-CPU的PROFINET通信口支持以下通信协议及服务
TCP
ISOonTCP(RCF)
S7通信(服务器端)
通信口所支持的最大通信连接数
S7-CPUPROFINET通信口所支持的最大通信连接数如下:
3个连接用于HMI(触摸屏)与CPU的通信
1个连接用于编程设备(PG)与CPU的通信
8个连接用于OpenIE(TCP,ISOonTCP)的编程通信,使用T-block指令来实现
3个连接用于S7通信的服务器端连接,可以实现与S7-,S7-以及S7-的以太网S7通信
S7-CPU可以同时支持以上15个通信连接,这些连接数是固定不变的,不能自定义。
1.1.1实战要求
要求具有一定的西门子S7-PLC的硬件与编程基础。对西门子S7-具有一定的网络专业知识基础。要求具有一定西门子S7-PLC的硬件与编程基础。要求对具有一定的电气技术基础的专业人员。要求对自动化教学工厂设备具有一定的了解!要求至少一台装有西门子TIA(博图)Basic12.0的软件的PC电脑。1.1.2实战目标
掌握西门子S7-CPU与S7-7之间的TCP通讯编程。掌握西门子S7-CPU与S7-之间的ISOonTCP通讯编程。掌握西门子的S7-PLC通讯基础编程掌握能够灵活的运用到自动化教学工厂中的实训设备中。1.1.3实战准备
准备好相关的元器件
准备好至少2台西门子S7-PLC准备好装有所需要的软件的PC计算机剥线钳,压线钳,一字螺丝刀,十字螺丝刀,插针等若干0.5mm-0.75mm导线准备好网线与水晶头1.1.4实战开始
一、正确的接好相关硬件接线,以及保护!正确的安装好相关的软件!
二.S7-CPU通过ETHERNET与S7-CPU通信
1.创建新项目及建立逻辑连接
(1)打开STEP7Basic软件并新建项目
在STEP7Basic的“PortalView”中选择“Createnewproject”创建一个新项目
(2)添加硬件并命名PLC
然后进入“Projectview”,在“Projecttree”下双击“Addnewdevice”,在对话框中选择所使用的S7-CPU添加到机架上,命名为PLC_1,如图1-97所示。
同样方法再添加通信伙伴的S7-CPU,命名为PLC_2。
图1-97添加新设备
为了编程方便,我们使用CPU属性中定义的时钟位,定义方法如下:
在“Projecttree”“PLC_1”“Deviceconfiguration”中,选中CPU,然后在下面的属性窗口中,“Properties”“Systemandclockmemory”下,将系统位定义在MB1,时钟位定义在MB0,如图1-98所示。
时钟位我们主要使用M0.3,它是以2Hz的速率在0和1之间切换的一个位。可以使用它去自动激活发送任务。
图1-98系统位与时钟位
(3)为PROFINET通信口分配以太网地址
在“DeviceView”中点击CPU上代表PROFINET通信口的绿色小方块,在下方会出现PROFINET接口的属性,在“Ethernetaddresses”下分配IP地址为..0.1,子网掩码为...0,如图1-99所示。
图1-99分配IP地址
(4)同样方法,在同一个项目里添加另一个新设备S7-CPU并为其分配IP地址为..0.2
(5)创建CPU之间的逻辑网络连接
在项目树“Projecttree”“DevicesNetworks”“Networksview”视图下,创建两个设备的连接。用鼠标点中PLC_1上的PROFINET通信口的绿色小方框,然后拖拽出一条线,到另外一个PLC_2上的PROFINET通信口上,松开鼠标,连接就建立起来了,如图1-所示。
图1-建立两个CPU连接
三、TCP通讯
1.在PLC_1中调用并配置“TSEND_C”、“T_RCV”通信指令
(1)在PLC_1的OB1中调用“TSEND_C”通信指令
在第一个CPU中调用发送通信指令,进入“Projecttree”“PLC_1”“Programblocks”“OB1”主程序中,从右侧窗口“Instructions”“ExtendedInstructions”“Communications”下调用“TSEND_C”指令,并选择“SingleInstance”生成背景DB块。然后单击指令块下方的“下箭头”,使指令展开显示所有接口参数,如图1-所示。
图1-生成TSEND
(2)定义PLC_1的“TSEND_C”连接参数
PLC_1的TSEND_C指令的连接参数需要在指令下方的属性窗口“Properties”“Configuration”“Connectionparameter”中设置,如图1-所示。
图1-定义TSEND_C连接参数
表1-9连接参数说明:
(2)定义PLC_1的“TSEND_C”发送通信块接口参数
首先,根据所使用的接口参数定义符号表在“Projecttree”“PLC_1”“PLCtags”中定义所使用的符号名,如图1-所示
图1-定义域所需要的符号表
然后,创建并定义PLC_1的发送数据区DB块。
通过“Projecttree”“PLC_1”“Programblocks”“Addnewblock”,选择“Datablock”创建DB块,选择绝对寻址,点击“OK”键,定义发送数据区为个字节的数组,如图1-及图1-所示。
图1-创建发送数据区DB块
注意:对于双边编程通信的CPU,如果通信数据区使用DB块,既可以将DB块定义成符号寻址,也可以定义成绝对寻址。使用指针寻址方式,必须创建绝对寻址的DB块。
图1-定义发送数据区为字节类型的数组
定义完通信数据区,继续定义PLC_1的“TSEND_C”发送通信块接口参数,如图1-所示。
图1-定义TSEND_C接口参数
参数说明:
输入接口参数:
REQ:=“2Hz_clock”//使用2Hz的时钟脉冲,上升沿激活发送任务
CONT:=TRUE//建立连接并一直保持连接
LEN:=//发送数据长度
CONNECT:=“PLC_1_Connection_DB”//连接数据DB块
DATA:=P#DB3.DBX0.0BYTE//发送数据区的数据,使用指针寻址时,
DB块要选用绝对寻址
COM_RST:=“T_C_COMR”//为1时,完全重启动通信块,现存的连接
会中断
输出接口参数:
DONE:=“TSENDC_DONE”//任务执行完成并且没有错误,该位置1
BUSY:=“TSENDC_BUSY”//该位为1,代表任务未完成,不能激活新
任务
ERROR:=“TSENDC_ERROR”//通信过程中有错误发生,该位置1
STATUS:=“TSENDC_STATUS”//有错误发生时,会显示错位信息号
(4)在PLC_1的OB1中调用接收指令T_RCV并配置基本参数
为了实现PLC_1接收来自PLC_2的数据,则在PLC_1中调用接收指令T_RCV并配置基本参数。
接收数据与发送数据使用同一连接,所以使用不带连接管理的T_RCV指令。根据所使用的接口参数定义符号表,如图1-所示。配置接口参数,如图所示:
图1-调用TRCV指令并配置接口参数
参数说明:
输入接口参数:
EN_R:=TRUE//准备好接收数据
ID:=1//连接号,使用的是TSEND_C的连接参
数中ConnectionID的参数地址
LEN:=1//接收数据长度为1个字节
DATA:=“Output_byte0”//接收数据区的符号地址
输出接口参数:
NDR:=“TRCV_NDR”//该位为1,接收任务成功完成
BUSY:=“TSENDC_BUSY”//该位为1,代表任务未完成,不能激活新
任务
ERROR:=“TRCV_ERROR”//通信过程中有错误发生,该位置1
STATUS:=“TRCV_STATUS”//有错误发生时,会显示错误信息号
RCVD_LEN:=“TRCV_RCVD_LEN”//实际接收数据的字节数
2.在PLC_2中调用并配置“TRCV_C”通信指令
(1)同样方法,在PLC_2中调用“TRCV_C”通信指令,进入“Projecttree”“PLC_2”“Programblocks”“Main”主程序中,从右侧窗口“Instructions”“ExtendedInstructions”“Communications”下调用“TRCV_C”指令,并选择“SingleInstance”生成背景DB块。
(2)定义连接参数,PLC_2的“TRCV_C”指令的连接参数需要在指令下方的属性窗口“Properties”“Connectionparameter”中设置,如图1-所示。
图1-TRCV_C的连接参数配置
连接参数的配置与TSEND_C的连接参数配置基本相似,各参数要与通信伙伴CPU对应设置。
(3)定义接收通信块参数
首先,创建并定义接收数据区DB块。通过“Projecttree”“PLC_2”“Programblocks”“Addnewblock”,选择“Datablock”创建DB块,选择符号寻址,点击“OK”键,定义接收数据区为个字节的数组,如图1-及图1-所示。
图1-创建接收数据区DB块
图1-定义接收区为个字节的数组
然后,定义所使用参数的符号地址,如图1-所示。
图1-TRCV_C指令所使用的符号地址
最后,定义接收通信块接口参数,如图1-所示。
图1-TRCV_C块参数配置
参数配置:
输入接口参数:
EN_R:=TRUE//准备好接收数据
CONT:=TRUE//建立连接并一直保持连接
LEN:=//接收的数据长度为个字节
CONNECT:=“PLC_2_Connection_DB”//连接数据DB块
DATA:=“PLC2_TRCVC_Data”.Static_1//接收数据区,DB块选用的是符号寻址
COM_RST:=“T_C_COMR”//为1时,完全重启动通信块,现
存的连接会中断
输出接口参数:
DONE:=“TRCVC_DONE”//任务执行完成并且没有错误,该
位置1
BUSY:=“TRCVC_BUSY”//该位为1,代表任务未完成,不能
激活新任务
ERROR:=“TRCVC_ERROR”//通信过程中有错误发生,该位置1
STATUS:=“TRCVC_ERROR”//有错误发生时,会显示错误信息号
RCVD_LEN:=“TRCVC_RCVLEN”//实际接收数据的字节数
(4)PLC_2将I/O输入数据IB0发送到PLC_1的输出QB0中,则在PLC_2中调用发送指令并配置块参数,发送指令与接收指令使用同一个连接,所以使用不带连接的发送指令T_SEND,如图1-所示。
图1-调用T_SEND指令并配置块接口参数
参数说明:
输入接口参数:
REQ:=“2Hz_clock”//使用2Hz的时钟脉冲,上升沿激活发送
任务
ID:=1//连接号,使用的是TRCV_C的连接参
数中ConnectionID的参数地址
LEN:=1//接收数据长度为1个字节
DATA:=“Input_byte0”//接收发送数据区的符号地址
输出接口参数:
DONE:“TSEND_DONE”//任务执行完成并且没有错误,该位置1
BUSY:“TSEN_BUSY”//该位为1,代表任务未完成,不能激活
新任务
ERROR:“TSEND_ERROR”//通信过程中有错误发生,该位置1
STATUS:“TSEND_STATUS”//有错误发生时,会显示错误信息号。
3.下载硬件组态及程序并监控通信结果
下载两个CPU中的所有硬件组态及程序,从监控表中可以看到,PLC_1的TSEND_C指令发送数据:“11”,“22”,“33”数据,PLC_2接收到数据:“11”,“22”,“33”。而PLC_2发送数据IB0为“_”,PLC_1接收数据到QB0也是“_”,如图1-所示。
图1-PLC_1及PLC_2的监控表
至此S7-之间TCP通讯完成。
四、ISOonTCP通信
使用ISOonTCP协议通信,除了连接参数的定义不同,其它组态编程与TCP协议通信完全相同。
1.ISOonTCP协议通信连接参数的配置
S7-CPU中,使用ISOonTCP协议通信时,PLC_1的连接参数如图21所示。通信伙伴PLC_2的连接参数,如图1-所示。
图1-PLC_1的ISOonTCP协议通信连接参数