S7-1200CPU通过ETHERNET与S7-300PN口之间TCP通信的方式
S7-1200与S7-300PN口之间的以太网通信可以通过TCP协议来实现,使用的通信指令是在双方CPU调用T-block(TSEND_C,TRCV_C,TCON,TDISCON,TSEND,TRCV)指令来实现。通信方式为双边通信,因此TSEND和TRCV必须成对出现。
硬件和软件需求及所完成的通信任务
所需条件:
①S7-1200/S7-300(集成PN口)
②STEP7V11
所完成的通信任务:
①S7-1200CPU将通讯数据区DB4块中的10个字节的数据发送到S7-300CPU的接收数据区DB2块中。
②S7-300CPU将通讯数据区DB1块中的10个字节的数据发送到S7-1200CPU的接收数据区DB5块中。
S7-1200侧通信的编程,连接参数及通信参数的配置
1.使用STEP7V11软件新建一个项目并完成硬件配置
在STEP7v11的“Portal视图”中选择“创建新项目”创建一个新项目。
2.添加硬件并命名PLC
然后进入“项目视图”,在“项目树”下双击“添加新设备”,在对话框中选择所使用的S7-1200CPU添加到机架上,命名为S7-1200,如图1.所示。

图1.添加新设备
为了编程方便,使用CPU属性中定义的时钟位,定义方法如下:
在“项目树”“S7-1200”“设备组态”中,选中CPU,然后在下面的属性窗口中,“属性”“系统和时钟存储器”下,将系统位定义在MB1,时钟位定义在MB0,如图2.所示。
时钟位我们主要使用,它是以2Hz的速率在0和1之间切换的一个位,可以使用它去自动激活发送任务。

图2.系统位与时钟位
3.为PROFINET通信口分配以太网地址

图3.分配IP地址
4.创建CPU的逻辑网络连接
在项目树“项目树”“设备和网络”“网络视图”视图下,创建两个设备的连接。用鼠标点中S7-1200上的PROFINET通信口的绿色小方框,然后拖拽出一条线,到另外一个317-2pn上的PROFINET通信口上,松开鼠标,连接就建立起来了,如图4.所示。

图4.建立两个CPU的逻辑连接
5.在S7-1200中调用并配置“TCON”、“TSEND”、“TRCV”通信指令
①在S7-1200CPU中调用发送通信指令,进入“项目树”“S7-1200”“程序块”“OB1”主程序中,从右侧窗口“指令”“通讯”“开放式用户通信”下调用“TCON”指令,创建连接,如图5.所示。

图5.调用TCON通信指令
②定义S7-1200的“TCON”连接参数
S7-1200的“TCON”指令的连接参数需要在指令下方的属性窗口“属性”“组态”“连接参数中”中设置,如图6.所示。

图6.定义TCON连接参数
连接参数说明:
主动建立连接:选择本地S7-1200作为主动连接;地址详细信息:定义通信伙伴方的端口号为:2000。③创建并定义S7-1200的发送数据区DB4块

图7.创建发送数据区DB块

图8.定义发送数据区为字节类型的数组101字节
④将“TSEND”在OB1内调用发送10个字节数据到317-2pn中
进入“项目树”“S7-1200”“程序块”“OB1”主程序中,从右侧窗口“指令”“通讯”“开放式用户通信”下调用“TSEND”指令,配置接口参数,如图9.所示。

图9.调用TSEND指令并配置接口参数
参数说明:
输入接口参数:
REQ
:=
//使用2Hz的时钟脉冲,上升沿激活发送任务;
ID:=1//创建连接ID;LEN
:=10
//发送数据长度;
DATA
:=
//接收数据区的地址;
输出接口参数:
NDR
:=
//该位为1,接收任务成功完成;
BUSY
:=
//该位为1,代表任务未完成,不能激活新任务;
ERROR
:=
//通信过程中有错误发生,该位置1;
STATUS
:=MW24
//有错误发生时,会显示错误信息号;
RCVD_LEN
:=MW26
//实际接收数据的字节数。
配置完连接并编译存盘。