1200 MODBUS TCP通信(客户端)

一、创建项目并添加PLC

在这里插入图片描述

二、PLC参数设置

双击网口修改ip地址和添加新子网。
在这里插入图片描述
右键PLC->属性->勾选下面两个选项
在这里插入图片描述

三、创建新的数据块,并填写使用到的变量

在这里插入图片描述
下图中为服务器IP地址和端口
在这里插入图片描述
取消数据库优化,右键->属性
在这里插入图片描述

四、软件编写并修改相关参数

在这里插入图片描述
一定要记得将id设置为1,不然无法通信
在这里插入图片描述

五、效果查看

1、打开Modbus Slave软件,按如下设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、参数说明

MB_MODE、MB_DATA_ADDR 和 MB_DATA_LEN 参数说明:
参数 MB_MODE、MB_DATA_ADDR 和 MB_DATA_LEN 的组合定义了 MB_MODE 值为 0、1 和 2 时,当前 Modbus 消息中所用的 Modbus 功能代码:
MB_MODE 中包含有关读写操作的信息。
MB_MODE=0:读取,MB_MODE=1 和 2:写入(注:MB_MODE=2 时,Modbus 功能 15 和 05 或 Modbus 功能 16 和 06 无区别。)
MB_DATA_ADDR 中包含有关待读取/写入的目标信息,以及“MB_CLIENT”指令用于计算远程地址的地址信息。
MB_DATA_LEN 包含要读/写的值的数量。
示例:
MB_MODE=1、MB_DATA_ADDR=1、MB_DATA_LEN=1 构成的组合设定的功能代码是 05。将从远程地址 0 开始写 1 个输出位。
MB_MODE=1、MB_DATA_ADDR=1、MB_DATA_LEN=2 构成的组合设定的功能代码是 15。将从远程地址 0 开始写 2 个输出位。
以下情况适用于 MB_MODE 值 101 到 106 和 115 到 116:
MB_MODE 定义 Modbus 功能代码。
MB_DATA_ADDR 包含远程地址。
MB_DATA_LEN 包含要读/写的值的数量。
示例:
MB_MODE=104, MB_DATA_ADDR=17,834, MB_DATA_LEN=125
MB_MODE=104 定义功能代码 04(读输入字)。
MB_DATA_ADDR=17834 定义远程地址 17834。
MB_DATA_LEN=125 定义待读取 125 个值。
下表列出了“MB_CLIENT”指令中输入参数 MB_MODE、MB_DATA_ADDR 和 MB_DATA_LEN 与相关 Modbus 功能的关系。
在这里插入图片描述
在这里插入图片描述

### S7-1200 PLC作为MODBUS TCP客户端的配置与编程 #### 配置硬件连接 为了使S7-1200能够通过MODBUS TCP协议与其他设备通信,需要确保PLC已正确安装并设置了网络接口。通常情况下,默认的以太网端口即可满足需求。 #### 安装TIA Portal软件 使用西门子官方提供的 Totally Integrated Automation (TIA) Portal 软件来完成项目的创建、组态以及程序编写工作。该平台集成了STEP 7 Professional V15以上版本所必需的功能模块[^1]。 #### 创建新项目并向其中添加CPU 启动 TIA Portal 后,在新建工程向导里选择合适的系列(如SIMATIC S7-1200),接着指定具体的型号规格;之后按照提示逐步操作直至完成整个过程。 #### 添加通讯处理器(CP) 虽然S7-1200本身具备一定的联网能力,但在某些特殊应用场景下可能还需要额外配备专用的CP卡才能实现更复杂的数据交换功能。不过对于简单的MODBUS TCP应用来说一般不需要单独购买此配件。 #### 组态MODBUS TCP参数 进入“Network View”,右键点击目标控制器下的“Connections”节点,选取“Add New Connection...”。此时会弹出对话框让用户挑选所需类型的链接方式——这里应选中“Modbus TCP Client”。 随后设置远程服务器IP地址及其监听的服务端口号(默认为502),同时定义好本地站号(Local Station ID)用于区分不同实例间的差异性处理逻辑。 #### 编写读取/写入指令 利用FB48(ModBusTcpReadHoldingRegisters) 和 FB49(ModBusTcpWriteMultipleCoils/HoldingRegisters)这两个标准函数块可以方便快捷地实施数据交互动作。具体做法是在OB1或其他周期执行的任务单元内部调用上述组件,并为其传递必要的输入输出变量列表。 ```plc // Example of reading holding registers from a Modbus server using FB48 in Structured Text(ST) VAR mbClient : REFERENCE TO MB_CLIENT; // Reference to the configured Modbus client connection fbRead : FB48; result : BOOL; END_VAR fbRead( bExecute := TRUE, nStartAddr:= 1, (* Starting address on the remote device *) nQuantity := 10, (* Number of registers to read *) pResult => result (* Output parameter indicating success or failure *) ); IF NOT fbRead.bBusy THEN (* Check if operation has completed *) IF result THEN (* If successful, process data here*) // Process received values stored within fbRead buffer END_IF; END_IF; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰搞电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值