西门子S7-1200扩展模块 6ES7223-1BH32-0XB0 8DI/8DQ DC 24V
更新:2025-01-24 07:05 编号:33448171 发布IP:183.193.24.66 浏览:7次- 发布企业
- 上海工智达电气技术有限公司商铺
- 认证
- 资质核验:已通过营业执照认证入驻顺企:第1年主体名称:上海工智达电气技术有限公司组织机构代码:91310117MADP2FAE31
- 报价
- 人民币¥880.00元每台
- 西门子
- S7-1200PLC
- S71200
- 6ES7223-1BH32-0XB0
- 中国
- 净重0.200KG
- 关键词
- 西门子,S7-1200,扩展模块,数字量/开关量模块
- 所在地
- 上海市松江区科技园区平原街880弄65号201
- 联系电话
- 15221760199
- 手机
- 15221760199
- 联系人
- 田子龙 请说明来自顺企网,优惠更多
- 请卖家联系我
- 15221760199
详细介绍
S7-1200 Modbus TCP 通信客户端指令块 MB_CLIENT
STEP 7 V13 SP1 软件版本中的 Modbus TCP 指令目前新的版本已升至 V4.0,如图 1所示。该版本的使用需要具备以下两个条件:
1. 软件版本:STEP 7 V13 SP1 及其以上
2. 固件版本: S7-1200 CPU 的固件版本 V4.1 及其以上
图 1. Modbus TCP V4.0 版本指令块
V4.0 作为 Modbus TCP 新版指令的个基础版本,后续版本新增内容参见:
V5.0 版本新功能文档参见链接。
V6.0 版本新功能文档参见链接。
V4.0 版本 Modbus TCP 服务器文档参见链接。
旧版指令主要应用于固件版本 V4.0 及其以前的 CPU:
客户端指令块文档参见链接。
服务器指令块文档参见链接。
S7-1200 Modbus TCP 实验环境
下面以两台 S7-1200 之间进行 Modbus TCP通信为例,详细阐述客户端与服务器侧如何编程及通信的过程,本文档只介绍客户端部分组态编程,服务器部分参见链接。
表 1 列出了具体的实验环境,表 2 列出了双方 CPU 通信所需主要参数。
操作系统 | WIN7 SP1 版 64 位 |
编程软件 | STEP 7 Professional V13 SP1 Update 5 |
系统硬件 |
|
表 1. Modbus TCP 通信的实验环境
CPU 类型 | IP 地址 | 端口号 | 硬件标识符 | |
客户端 | CPU 1212C | 192.168.0.6 | 0 | 64 |
服务器 | CPU 1215C | 192.168.0.4 | 502 | 64 |
表 2. Modbus TCP 通信双方的基本配置
硬件标识符是在“设备组态”中,双击 PROFINET 接口,在“属性”中的“硬件标识符”中查看,如图 2 所示。
图 2. S7-1200 设备的 PROFINET 接口硬件标识符
S7-1200 Modbus TCP 客户端编程
S7-1200 客户端侧需要调用 MB_CLIENT 指令块,该指令块主要完成客户机和服务器的 TCP连接、发送命令消息、接收响应以及控制服务器断开的工作任务。
1. 调用 MB_CLIENT
将 MB_CLIENT 指令块在“ 程序块 > OB1 ”中的程序段里调用,调用时会自动生成背景 DB ,点击确定即可,如图 3所示。
图 3. Modbus TCP 客户端侧指令块
该功能块各个引脚定义如表 3 所示:
参数 | 说明 |
REQ | 与服务器之间的通信请求,上升沿有效。 |
DISCONNECT | 通过该参数,可以控制与 Modbus TCP 服务器建立和终止连接。 0:建立连接;1:断开连接。 |
MB_MODE | 选择 Modbus 请求模式(读取、写入或诊断)。具体参见表 4。 |
MB_DATA_ADDR | 由“MB_CLIENT”指令所访问数据的起始地址。具体参见表 4。 |
MB_DATA_LEN | 数据长度: 数据访问的位或字的个数。具体参见表 4。 |
MB_DATA_PTR | 指向 Modbus 数据寄存器的指针。 |
CONNECT | 指向连接描述结构的指针。使用 TCON_IP_v4 数据类型。 |
DONE | 后一个作业成功完成,立即将输出参数 DONE 置位为“1”。 |
BUSY | 作业状态位:0:无正在处理的“MB_CLIENT”作业;1:“MB_CLIENT”作业正在处理。 |
ERROR | 错误位:0:无错误;1:出现错误,错误原因查看STATUS。 |
STATUS | 指令的详细状态信息。 |
表 3. MB_CLIENT 各引脚定义说明
MB_MODE、MB_DATA_ADDR、MB_DATA_LEN、 Modbus TCP 功能码等之间的关系,参见表 4。
MB_MODE | MB_DATA_ADDR | MB_DATA_LEN | Modbus TCP 功能码 | 操作和数据 |
---|---|---|---|---|
0 | 1 - 9999 | 1 - 2000 | 01 |
|
0 | 10001 - 19999 | 1 - 2000 | 02 |
|
0 |
| 1 - 125 | 03 |
|
0 | 30001 - 39999 | 1 - 125 | 04 |
|
1 | 10001 - 19999 | 1 | 05 |
|
1 |
| 1 | 06 |
|
1 | 10001 - 19999 | 2 - 1968 | 15 |
|
1 |
| 2 - 123 | 16 |
|
2 | 10001 - 19999 | 1 - 1968 | 15 |
|
2 |
| 1 - 123 | 16 |
|
11 | - | 11 |
| |
80 | - | 1 | 08 |
|
81 | - | 1 | 08 |
|
101 | 0 - 65535 | 1 - 2000 | 01 |
|
102 | 0 - 65535 | 1 - 2000 | 02 |
|
103 | 0 - 65535 | 1 - 125 | 03 |
|
104 | 0 - 65535 | 1 - 125 | 04 |
|
105 | 0 - 65535 | 1 | 05 |
|
106 | 0 - 65535 | 1 | 06 |
|
115 | 0 - 65535 | 1 - 1968 | 15 |
|
116 | 0 - 65535 | 1 - 123 | 16 |
|
表 4. 参数说明
当库版本使用 V6.0,可以使用 MB_MODE = 123,使用 23 号功能码,具体使用参见链接。
2. CONNECT 引脚的指针类型,先创建一个新的全局数据块 DB2,如图 4 所示:
图 4. 创建全局数据块
第二步,双击打开 DB2,定义变量名称为“aa",数据类型为“TCON_IP_v4”(可以将 TCON_IP_v4拷贝到该对话框中),点击“回车”按键。该数据类型结构创建完毕。如图 5 所示:
图 5. 创建 MB_CLIENT 中的 TCP 连接结构的数据类型
各个参数定义说明如表 5 所示:
参数 | 说明 |
InterfaceId | 网口硬件标识符,对于本体网口为 64,即16#40。 |
ID | 连接 ID,取值范围 1~4095 |
Connection Type | 连接类型。TCP 连接默认为:16#0B |
ActiveEstablished | 建立连接。主动为 1(客户端),被动为 0(服务器)。 |
ADDR | 服务器侧的 IP 地址 |
RemotePort | 远程端口号 |
LocalPort | 本地端口号 |
表 5. TCON_IP_v4 数据结构的引脚定义
本文远程服务器的 IP 地址为 192.168.0.4,远程端口号设为 502。客户端侧该数据结构的各项值如图 6 所示:
图 6. MB_CLIENT 侧 CONNECT 引脚数据定义
注意:
CONNECT 引脚的填写需要用符号寻址的方式。
TCON_IP_v4 是系统数据类型,不是在 PLC 数据类型中创建的。
LocalPort 一般使用默认值 0,意思是本地使用随机端口。
3. 创建 MB_DATA_PTR 数据缓冲区
创建一个全局数据块 DB3,创建方法可以参考图 4,连同上一步创建的 DB2 位于 CPU 程序块中,如图 7 所示:
图 7. 生成的两个 DB 块名称
第二步,建立一个 Word 数组的数据类型,以便通信中存放数据,如图 8 所示。
图 8. MB_DATA_PTR 数据缓冲区结构
注意:
MB_DATA_PTR 指定的数据缓冲区可以为 DB 块或 M 存储区地址中。DB块可以为优化的数据块,也可以为标准的数据块结构。
若为优化的数据块结构,必须是基本数据类型数组,例如 Int、Real、Bool数组,编程时需要以符号寻址的方式填写该引脚;
若为标准的数据块结构(可以右键单击 DB 块,“属性”中将“优化的块访问”前面的勾去掉,如图 9所示),可以以指针的方式填写该引脚。
MB_DATA_PTR 指定的数据缓冲区必须足够大,至少达到 MB_DATA_LEN个位(访问输入位、输出位时)或字(访问保持寄存器、输入字时)。
本文以标准的数据块(默认)为例进行编程。
图 9. 修改 DB 块属性为标准的块结构
4. 客户端侧完成指令块编程
调用 MB_CLIENT 指令块,使用功能码 03 从服务器中读取 2 个保持寄存器的值,参考表 4,MB_MODE =0,MB_DATA_ADDR = 40001,MB_DATA_LEN = 2,如图 10 所示:
图 10. MB_CLIENT 指令块编程
注意:
对于一般的支持 Modbus TCP 设备,可能无法在其设备手册中查找到诸如 40001、30001 这种数据地址,而是以功能码 +十六进制数形式的变量地址,这样有两种处理办法:
方法 1:将功能码 + 100 作为 MB_MODE,十六进制地址数转化为十进制数作为 MB_DATA_ADDR。例如 0x03功能码,地址 0x00FF,这样就是 MB_MODE = 103, MB_DATA_ADDR = 255。
方法 2:通过判断功能码决定是读是写,决定 MB_MODE 为 0 读还是 1 写(2 写比较特殊,只用于不支持 5、6号功能码的设备),将十六进制地址数转化为十进制数,对于不同的功能码,十进制数增加不同的偏移量,对于功能码 1、5、15偏移量为 1,对于功能码 2 偏移量为 10001,对于功能码 3、6、16 偏移量为 40001(对于超过 9999的地址,偏移量为 400001),对于功能码 4 偏移量为 30001。同样以 0x03 功能码,地址 0x00FF为例,因为是读,MB_MODE = 0, 0x00FF 转换为十进制为 255,加上偏移量 40001 就是 40256,这样MB_DATA_ADDR = 40256。
5. 将整个项目下载到 S7-1200
待服务器侧准备就绪,触发指令块的 REQ 引脚一个上升沿,将读取到的数据放入 MB_DATA_PTR 引脚指定的 DB块变量中。具体的实验结果可以查看服务器文档中通信测试,链接。
注意:
对于本例来说,伙伴是另一个 S7-1200,实际上也可以换做任意支持 Modbus TCP服务器的设备,只需要在参数引脚设置合适值,并且在 CONNECT 设置正确的通信参数即可。
如果 S7-1200 作为 Modbus TCP 客户端需要连接多个 Modbus TCP 服务器,那么需要使用多个MB_CLIENT,每个 MB_CLIENT 需要使用不同的背景数据块,并且每个 MB_CLIENT 需要使用不同的 CONNECT参数,尤其是里面 ID,一定不能重复。每个连接占用一个开放式用户连接,每个连接都是独立的,可以调用触发不同的MB_CLIENT。
如果一个 Modbus TCP 连接里面有多个通信作业,例如有读有写,或者需要读不同的区域等,那么如果每个作业调用一次MB_CLIENT ,每次调用必须使用相同的背景数据块,CONNECT 也使用相同的参数,这些块可以调用不能触发REQ,方法具体可以参考文档。
如果 S7-1200 作为 Modbus TCP 客户端需要通过 Modbus TCP 转 Modbus RTU 网关,连接多个Modbus RTU 从站,那么这只相当于使用了一个 Modbus TCP 连接,即与网关的连接,如果每个从站调用一次MB_CLIENT,那么每次调用必须使用相同的背景数据块,CONNECT 也使用相同的参数,这些块可以调用不能触发REQ,每个不同的从站的背景数据块中使用不同的 "MB_Unit_ID" 值,这个值使用 Modbus RTU从站站号,具体可以参考下面的常见问题,编程方法可以参考文档。
常见问题
MB_CLIENT 指令的背景数据块中的 "MB_Unit_ID"有什么功能?
S7-1200 CPU 作为 Modbus TCP 客户端与 Modbus TCP 服务器通信,当尝试访问比 Modbus TCP服务器更低端的串行子网中的设备,会有报错 "无法建立连接"。
这种情况下, Modbus TCP 服务器作为 Modbus RTU 协议中的网关,"MB_Unit_ID" 参数相当于 ModbusRTU 协议中的从站地址。
Modbus TCP 客户端直接向 Modbus TCP 服务器发送请求,Modbus TCP 服务器通过识别"MB_UNIT_ID" 参数,将请求转发到从站设备。
在 S7-1200 项目中,选择系统块,双击打开 MB_CLIENT 指令的背景数据块“MB_CLIENT_DB”, 在静态变量Static 下可以找到 MB_Unit_ID (默认起始值 16#FF,即十进制 255)。如图 11 所示。
图 11. MB_Unit_ID
例如,当 S7-1200 做客户端与电脑上的 Modbus TCP 调试软件 Modsim32通信时,会遇到如上“无法建立连接”的问题。
这时,修改调试软件 Modsim32 中 Device Id 为 255,使之等于 MB_Unit_ID 的值,即可建立联系。如图12 所示。
图 12. Device Id
在下面文档中介绍如何通过修改 "MB_Unit_ID" 参数,实现 MODBUS TCP 客户端访问网关后的多个MODBUS RTU 从站。
注意:如果 Modbus TCP 服务器无法更改 Device Id 的值,则修改 S7-1200 项目中 MB_Unit_ID 数值, 使双方的参数一致,才可以进行数据交换。
更多关于 MB_Unit_ID 功能的说明,请参考以下链接:
Modbus 块 "MB_CLIENT" 的背景数据块中的 "MB_UNIT_ID" 有什么功能?
https://support.industry.siemens.com/cs/cn/zh/view/102420337
成立日期 | 2024年06月21日 | ||
主营产品 | 西门子PLC HMI 工业软件 电线电缆 变频器 伺服数控系统 | ||
经营范围 | 经营范围包括一般项目:技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;通用设备修理;专用设备修理;电气设备修理;家用电器安装服务;普通机械设备安装服务;机械电气设备销售;电子专用设备销售;数控机床销售;机械设备销售;电线、电缆经营;电子元器件与机电组件设备销售;电工仪器仪表销售;电力电子元器件销售。 | ||
公司简介 | 上海工智达电气技术有限公司成立于2024年,公司下设技术部、销售部、维修部、物流部、等专职部门。公司为自动化控制以及电气传动领域产品销售、技术服务、技术培训以及项目咨询为一体的企业。致力成为行业内优秀的自动化技术服务商。公司定位------做客户贴心的自动化专家,提供全系列,全方位,全周期的自动化产品和技术服务!——定位于自动化领域,突显于专业化水准技术支持------公司拥有完整的技术队伍(各类 ... |
- 西门子PLC S7-1200通信模块CM1241通信模块外观参数设定通过STEP7BasicV18,通信模块C... 2024-12-26
- 西门子PLC S7-1200 通信S7-1200家族提供各种各样的通信选项以满足您所有的网络要求。•I-Devi... 2024-12-26
- 西门子PLC S7-1200S7-1200CPU支持安全TCP通信功能。该安全通信使用非对称加密机制,使用... 2024-12-26
- S7-1200 外形及安装 安装简单方便所有的SIMATICS7-1200硬件都具有内置安装夹,能够方便地... 2024-12-26
- 安装 TIA 博途 V17有哪些要求?下面的信息和链接是关于STEP7Professional/Basic和WinCC... 2024-12-08
- S7-1200扩展模块 6ES7222-1HH32-0XB0 16DQ 继电器880.00元/台
西门子:S7-1200PLC - 西门子S7-1200PLC模块 6ES7222-1HF32-0XB0550.00元/台
西门子:S7-1200PLC8DQ 继电器 - 西门子S7-1200 PLC扩展 数字量模块 6ES7222-1BH32-0XB0 16DQ DC24V880.00元/台
西门子:S7-1200PLC - 西门子S7-1200 PLC扩展 数字量模块 6ES7222-1BF32-0XB0 8DQ DC24V880.00元/件
西门子:S7-1200PLC - 西门子S7-1200 PLC扩展 数字量模块 6ES7221-1BH32-0XB0 16DI880.00元/台
西门子:S7-1200PLC - 西门子S7-1200 6ES7223-1BL32-0XB0 16DI/16DQ DC 24V1,550.00元/台
西门子:S7-1200PLC - 西门子S7-1200 6ES7223-1PH32-0XB0 8DI/8DQ 继电器880.00元/台
西门子:S7-1200PLC - 西门子S7-1200 6ES7223-1PL32-0XB0 16DI/16DQ 继电器1,450.00元/台
西门子:S7-1200PLC - 西门子1200 PLC编程控制器 6ES7212-1AE40-0XB0 DC/DC/DC1,300.00元/台
西门子:S7-1200PLC - 西门子1200 PLC编程控制器 6ES7212-1BE40-0XB0 AC/DC/继电器1,350.00元/台
西门子:S7-1200PLC