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

相关推荐
2603_965148115 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
花间相见7 小时前
【计算基础|网络14】网络层:IP、ICMP 与 ping
网络·网络协议·tcp/ip
kaixin_啊啊7 小时前
【用于更准确 G×E 基因组预测的大规模作物数据集与基于深度学习的多模态融合框架】论文学习
人工智能·深度学习·学习
xier_ran7 小时前
【infra之路】AI 编译器学习笔记(六):重拾 C++——lambda 与 MLIR 中的回调
c++·笔记·学习
OnlineProxy7 小时前
为 LangChain 和 CrewAI 构建自定义工具:将代理 IP 轮换封装至智能体函数中
网络协议·tcp/ip·langchain
别动我齐刘海9 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人
m4Rk_9 小时前
【论文阅读】Agent 记忆机制(99):PrisMem——从整体分数搜索走向能力驱动的记忆自进化
论文阅读·人工智能·学习·开源·github
睿智の男孩9 小时前
MIG IP核对DDR3的输出时序分析记录
网络·网络协议·tcp/ip
PC2005-cloud11 小时前
Mysql学习笔记:InnoDB Cluster 集群从零搭建实战,基于 Docker 实现高可用读写分离架构
笔记·学习·mysql