3.1 硬件组态
(1) 添加新设备
选择设备型号,可以根据订货号唯一确认设备,可以更改设备名称,这里添加两台S7-1200 CPU 1215DC/DC/DC,命名为PLC1与PLC2:

在PLC的安全设置中取消选择保护机密的PLC组态数据,并且禁用访问控制:


(2) 网络视图、拓扑视图连接


(3) 可访问的设备
搜索可访问的设备:

点击显示,可以在在线访问中查看
(4) 编译与下载
将两台PLC分别改为:PLCmaster作为发送数据的主站,PLCsalver作为接受数据的从站。

修改一台后,点击设备,编译------下载

这里选择下载的目标设备,上面的组态访问节点是指我们组态的PLC,下面的目标类型是根据网线找到的设备。记得需要相同的IP地址才可以加载。加载成功后,实现名字的修改和设备的捆绑。

加载完成后,点击查看分配PROFINET设备的名称,已经分配成功:

同样的方法修改PLC_2,修改成功:

3.2 PLCmaster编程
为了编程方便,使用 CPU 属性中定义的时钟位,定义方法如下:在 "项目树" > "PLC_1" > "设备组态" 中,选中 CPU ,然后在下面的属性窗口中,"属性" > "系统和时钟存储器" 下,将系统位定义在MB1,时钟位定义在MB0:

- 发送数据区DB
添加新块选择"数据块" 创建 DB 块,在DB块的属性->常规->属性中,取消勾选"优化的块访问",点击"确定"键:

注意:对于双边编程通信的 CPU ,如果通信数据区使用 DB 块,既可以将 DB 块定义成符号寻址,也可以定义成绝对寻址。使用指针寻址方式,必须创建绝对寻址的 DB 块:

需要在属性中取消勾选优化的块访问:

点击编译后,出现偏移量,就是每个变量在内存中的起始地址,单位是 字节. **位,**Int类型是2个字节:

- 调用TSEND_C指令
在PLC_master的OB1的主程序中调用 TSEND_C指令, 发送数据到PLC_slaver中,这个指令的含义是TSEND+TCON,所以就不用额外写TCON了。定义连接参数如下,谁是send,谁主动建立连接:

使能定义为系统时钟0.5Hz。上面启动了指针寻址,可以通过绝对地址寻址。DATA定义从DB2的DBX0.0开始发送10个字节,这里的长度可以大于数据区的字节长度,也可以小于字节区的数据长度:

3.3 PLCslaver编程
(1) 接收数据区DB
同样取消块优化,方便指针寻址:

(2) 调用Trcv_c指令
定义接受10个字节的数据,使能定义为系统时钟0.5Hz:

3.4 调试
全部下载编译后,两个设备都点击进入在线,并且启用监视:

可以修改sendDB中的数据:

在receive数据块中查看可以发现,由于int是两个字节,这里byte就是一个字节,所以receive3才是08,send4=15,已经处于第11个字节了,所以无法被发送出去。
