从0开始学习S7-1200+ET200SP(3)——两台S7-1200通过TCP连接

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:

  1. 发送数据区DB

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

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

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

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

  1. 调用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个字节了,所以无法被发送出去。

相关推荐
一条泥憨鱼8 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
视觉小萌新10 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list
cyf3110 小时前
第 05 篇:IP 协议—— 网络层的“快递单号与物流追踪“
网络协议·tcp/ip·路由表·traceroute·ip协议·ping·ip分片
默|笙12 小时前
【Linux网络】传输层协议TCP(1)---TCP报文介绍
linux·网络·tcp/ip
yyyang8813 小时前
蓝牙系统整体架构详解
学习·信息与通信
Linux-lucky13 小时前
46-Linux学习之旅之LVS负载均衡与keepalived高可用
linux·运维·学习·ubuntu·负载均衡·lvs
盛世宏博北京14 小时前
以太网温湿度传感器协议选型实战:TCP、UDP、SNMP通信特性对比
网络协议·tcp/ip·udp
Escalating_xu14 小时前
【Linux 网络编程】NAT、代理服务与内网穿透:从一个公网 IP,到一条真正可达的连接
linux·网络·tcp/ip
金色光环15 小时前
【DSP学习】C2000_ADC中断_笔记
笔记·学习