欢迎光临浔之漫智控技术(上海)有限公司网站!
诚信促进发展,实力铸就品牌
服务热线:

15618722057

产品展示 / products 您的位置:网站首页 > 产品展示 > > 西门子 > 西门子PLC模块SM1232
西门子PLC模块SM1232

西门子PLC模块SM1232

简要描述:西门子PLC模块SM1232
浔之漫智控技术(上海)有限公司 上海诗慕自动化设备有限公司
本公司销售西门子自动化产品,*,质量保证,价格优势
西门子PLC,西门子触摸屏,西门子数控系统,西门子软启动,西门子以太网
西门子电机,西门子变频器,西门子直流调速器,西门子电线电缆
我公司大量现货供应,价格优势,*,

产品型号:

所属分类:西门子

更新时间:2021-06-02

厂商性质:代理商

详情介绍

西门子PLC模块SM1232                  西门子PLC模块SM1232

 浔之漫智控技术(上海)有限公司 上海诗慕自动化设备有限公司
本公司销售西门子自动化产品,*,质量保证,价格优势
西门子PLC,西门子触摸屏,西门子数控系统,西门子软启动,西门子以太网
西门子电机,西门子变频器,西门子直流调速器,西门子电线电缆
我公司大量现货供应,价格优势,*,

本文以 ZKA-4488-ETH 为例介绍西门子PLC与深圳市综科智控科技开发有限公司的IO设备进行Modbus通讯的步骤设置。ZKA-4488-ETH 是 8 路数字量输入(DI),8 路数字量输出(DO),4 路模拟量输入(AI,0/4-20mA),4 路模拟量输出设备(AO,0/4-20mA),以太网通信。

以 ZKA-4488-ETH 为例,出厂默认通讯参数如下:

ZK模块 IP 为:192.168.0.105

TCP 端口为:10001

(注意:我们模块出厂时默认端口为10001,客户也可以通过ZK模块的配置文件把ZK通讯端口改成modbus-tcp的默认端口502)

工作模式为:服务器模式

二、 S7-200 Modbus TCP通信

1 S7-200 Modbus TCP 通信简介

S7-1200 CPU 本体上集成了一个 PROFINET 通信口,支持以太网和基于 TCP/IP和UDP 的通信标准。这个PROFINET 物理接口是支持10/100Mb/s的 RJ45口,支持电缆交叉自适应,因此一个标准的或是交叉的以太网线都可以用于这个接口。使用这个通信口可以实现 S7-1200 CPU 与编程设备的通信,与HMI触摸屏的通信,以及与其它 CPU 之间的通信,

S7-1200 CPU 的PROFINET 通信口主要支持以下通信协议及服务

  • Profinet IO (V2.0开始)
  • S7 通信 (V2.0开始支持客户端)
  • TCP
  • ISO on TCP
  • UDP(V2.0开始)
  • Modbus TCP
  • HMI通信
  • Web通信(V2.0开始)。

硬件版本 V4.1 支持的协议和最大的连接资源:

S7-1200的连接资源

分配给每个类别的预留连接资源数为固定值;您无法更改这些值。 但可组态 6个"可用自由连接"以按照应用要求增加任意类别的连接数。

● 示例1: 1 个 PG 具有 3 个可用连接资源。 根据当前使用的 PG 功能,该 PG 实际可能使用其可用连接资源的 1、2 或 3。 在 S7-1200 中,始终保证至少有 1 个 PG,但不允许超过 1 个 PG。

在CPU属性>常规>连接资源显示:

硬件版本 V3.0 支持的协议和最大的连接资源:

  • 3个连接用于操作面板
  • 1个连接用于编程设备(PG)与 CPU 的通信
  • 8个连接用于Open IE ( TCP, ISO on TCP, UDP) 的编程通信,使用T-block 指令来实现
  • 3个连接用于S7 通信的服务器端连接,可以实现与S7-200,S7-300以及 S7-400 的以太网S7 通信
  • 8个连接用于S7 通信的客户端连接,可以实现与S7-200,S7-300以及 S7-400 的以太网S7 通信

连接数是固定不变的,不能自定义。

注意:建立被动的TCP 、ISO on TCP 和UDP的连接时,建议使用端口范围: 2000~5000。一些端口号和TSAP 号是受到限制不能被使用的。 下列端口号和TSAP号不能使用:

  • ISO TSAP (passive): 01.00, 01.01, 02.00, 02.01, 03.00, 03.01
  • TCP/UDP port (passive): 20, 21, 25, 80, 102, 135, 161, 34962 … 34964,53, 80, 162, 443, 520, 9001

2 Modbus TCP 指令库

S7-1200集成PN接口MODBUS TCP通信概述

Modbus TCP是标准的网络通信协议,通过CPU上PN接口进行TCP/IP通信,不需要额外的通信硬件模块,Modbus TCP使用开放式用户通信连接作为Modbus通信路径,所支持的混合客户机和服务器连接数最大为CPU所允许的最大开放式用户通信连接数8个。

软件 STEP7 V11 SP1版本开始,S7-1200CPU 从Firmware V1.0.2开始,不再需要安装Modbus TCP的库文件,可以直接调用Modbus TCP的库指令“MB_CLIENT”和“MB_SERVER”使用实现Modbus TCP通信功能,如图1所示。

图1. Modbus TCP的库指令

3 Modbus TCP 功能编程

S7-1200 做Modbus Tcp Client(客户端)

MB_CLIENT 进行客户机和服务器TCP连接、发送命令消息、接收响应以及控制服务器的断开。

1.调用MB_CLIENT通信指令,进入 “Program blocks” > “OB1” 主程序中,调用MODBUS TCP客户机指令,如图2所示。

图2. MB_CLIENT通信指令

功能块参数意义如下表1.:

管脚

说明

REQ

使能: False-无Modbus通讯请求,True-请求与服务器通讯,Done完成位来后才可以执行下次请求,建议采用上升沿触发请求;

DISCONNECT

控制与服务器建立和终止连接:0-建立与IP地址和端口号的通讯连接,默认为0;1-断开通讯连接,在终止连接的过程中,不执行任何其他功能;

CONNECT_ID

连接的ID号:每个连接只有一个ID号;

IP_OCTET_1~4

ZKA-4488-ETH的IP地址

IP_PORT

ZKA-4488-ETH上使用TCP/IP协议与客户端建立通讯的IP端口号

MB_MODE

选择请求模式(读取、写入或诊断),具体对照参照表1.;

MB_DATA_ADDR

访问数据的起始地址;

MB_DATA_LEN

数据长度:数据访问的位数或字数;

MB_DATA_PRT

指向Modbus数据寄存器的指针:用于缓存从Modbus服务器接收的数据或将发送到Modbus服务器数据的缓冲区,可以是DB块或M区,如果是DB块则需要定义为“标准与S7- 300/400兼容”的类型,见下图3;

DONE

完成位:作业完成,无错误,该位置1;

BUSY

作业状态位:0-当前没有正在处理的“MB_CLIENT”作业;1-“MB_CLIENT”作业正在处理;

ERROR

错误位:0-无错误;1-出现错误,错误原因查看STATUS;

STATUS

错误代码;

表1. 功能块参数意义

2.MB_DATA_PTR数据块的新建

通过“Program blocks”>“Add new block”,选择“Data block”创建 DB 块,选择“标准与S7- 300/400兼容” ,点击“OK”键,定义数据区为100个字的数组,如图3所示。

图3. 创建MB_DATA_PTR数据块

3. MB_MODE、MB_DATA_ADDR和功能码的关系

MB_CLIENT指令中,MB_MODE、MB_DATA_ADDR和MB_DATA_LEN三个参数组合定义了当前Modbus消息中所用的功能代码,如表2.。

Modbus 功能

MB_MODE

MB_DATA_ADDR

操作和数据类型

数据长度

FC01

0

00001~09999

读取输出位 每个请求1~2000个位

1~2000

FC02

0

10001~19999

读取输入位 每个请求1~2000个位

1~2000

FC03

0

40001~49999 或 400001~465535

读取保持寄存器 每个请求1~125个字

1~125

FC04

0

30001~39999

读取输入字 每个请求1~125个字

1~125

FC05

1

00001~09999

写一个输出位 每个请求1个位

1

FC06

1

40001~49999 或 400001~465535

写一个保持寄存器 每个请求1个字

1

FC15

1

00001~09999

写多个输出位 每个请求2~1968个位

2~1968

FC16

1

40001~49999 或 400001~465535

写多个保持寄存器 每个请求2~123个字

2~123

FC15

2

00001~09999

写一个或多个输出位 每个请求1~1968个位

1~1968

FC16

2

40001~49999 或 400001~465535

写一个或多个保持寄存器 每个请求1~123个字

1~123

FC11

11

读取服务器通信状态字和事件计数器:状态字反映处理状态(0-未处理;0XFFFF-处理中);每次成功发送一条消息后,事件计数器都将递增。执行功能时,MB_CLIENT指令的MB_DATA_ADDR和MB_DATA_LEN参数都将被忽略。

0

FC08

80

通过数据诊断代码0X0000检查服务器状态 每次请求1个字

1

FC08

81

通过数据诊断代码0X000A重新设置服务器事件计数器 每次请求1个字

1

3~10、12~79、82~255

保留

表2. MB_MODE、MB_DATA_ADDR和功能码的关系

如上例中S7-1200作客户机,用FC04功能码读取ZKA-4488-ETH的模拟输入AI1通道的读数的两个字,起始从Modbus地址30001开始,接收的数据存放在缓冲区DB3.DBX0.0开始区域,设置如上:MB_MODE=0,MB_DATA_ADDR=30001,MB_DATA_LEN=2,对应关系为:30001->DB3.DBW0 ,30002->DB3.DBW2。

注意:Slave ID 是ZKA-4488-ETH的站地址,和客户机中“MB_CLIENT” 中的“CONNECT_ID” 不是一个概念,实际上与客户机中“MB_CLIENT”的背景数据块中的STAT变量“MB_UNIT_ID”需要一致,在1200中该地址默认为16#00FF,实际使用时可以改成1,即:与ZKA-4488-ETH配置文件中的站号保持一致,当S7-1200挂接了多个ZKA-4488-ETH时,该值可以按序编号,也可以都使用值1,因为modbus-tcp依然可以根据指向的IP地址发送数据。

图7. 客户机中“MB_CLIENT”的背景数据块中的STAT变量“MB_UNIT_ID”

5.通讯测试

S7-1200作客户机,用FC04功能码读取ZKA-4488-ETH的两个字,设置客户机和ZKA-4488-ETH的功能、起始地址、端口等参数相对应,具体设置如上,设置M5.0和M0.0为1,触发请求,如图8所示。

图8. S7-1200作客户机,用FC04功能码读取服务器的两个字

通讯结果如图9所示,从服务器读到数据00,11到客户机的DB3.DBW0和DB3.DBW2区域。

图9. 通讯结果

6.MB_CLIENT 参数 STATUS 错误代码查询参考下面两个列表3.和表4.。

STATUS(W#16#)

Modbus服务器返回的代码(B#16#)

错误说明

8381

01

不支持功能代码

8382

03

数据长度错误

8383

02

数据地址错误或访问的数据超出MB_DATA_PTR的地址区

8384

03

数据值错误

8385

03

不支持诊断错误代码(功能代码08)

表3. 协议错误代码

STATUS(W#16#)

错误说明

7001

MB_CLIENT 正在等待Modbus服务器响应TCP端口处的连接或断开连接请求,仅在第一次执行连接或断开操作时才报告此代码

7002

MB_CLIENT 正在等待Modbus服务器响应TCP端口处的连接或断开连接请求,等待连接或断开操作完成时,将针对任何后续执行报告此代码

7003

断开操作已成功完成(仅在一个PLC扫描周期内有效)

80C8

服务器在的时间内无响应,请检查与Modbus服务器设备的连接,尝试过任何组态的重试操作后,才报告此错误

8188

参数MB_MODE的值无效

8189

参数MB_DATA_ADDR的值无效

818A

参数MB_DATA_LEN的长度无效

818B

参数MB_DATA_PTR中的指针无效

818C

参数MB_DATA_PTR指向优化的区域,必须为“标准与S7- 300/400兼容”的DB或M区

8200

端口正在处理另一个Modbus请求

8380

接收到的Modbus桢有缺陷或接收到的字节太少

8387

的连接ID与用于先前请求的ID不同,只能有一个单个连接ID与每个MB_CLIENT背景数据块配合使用

8388

Modbus服务器返回一些和请求内容不同的数据,这只适合Modbus功能15或16

表4. 参数错误代码

除了上面列出的MB_CLIENT错误外,也可以从底层传输通信指令(TCON、TDISCON、TSEND和TRCV)返回错误,参考相应指令的错误代码。

5 Modbus TCP 常问问题

MB_CLIENT 指令的背景数据块中的 "MB_Unit_ID" 有什么功能?

注意:Slave ID 是ZKA-4488-ETH的站地址,和客户机中“MB_CLIENT” 中的“CONNECT_ID” 不是一个概念,实际上与客户机中“MB_CLIENT”的背景数据块中的STAT变量“MB_UNIT_ID”需要一致,在1200中该地址默认为16#00FF,实际使用时可以改成1,即:与ZKA-4488-ETH配置文件中的站号保持一致,当S7-1200挂接了多个ZKA-4488-ETH时,该值可以按序编号,也可以都使用值1,因为modbus-tcp依然可以根据指向的IP地址发送数据

图 11. MB_Unit_ID

S7-1200 MODBUS TCP通信多请求处理怎么做?

单独的客户机连接需要遵循的规则:

1.每个“MB_CLIENT”连接需要使用一个不同的背景数据块;

2.每个“MB_CLIENT”连接必须一个服务器IP地址;

3.每个“MB_CLIENT”连接必须一个的连接ID;

4.是否需要IP端口号取决于服务器组态;

连接ID和背景数据块组合成对,对每个连接来说,组合对都是的。

对于多请求处理,有两种方法:

方法一:如果TCP连接充裕,可以建立多个不同的连接发送请求,即每个请求使用一个独立的连接,调用独立的“MB_CLIENT”功能块,具体操作参考“Modbus TCP”部分。通过不同的连接发送多个请求,“MB_CLIENT”功能块多次调用,但是需要使用不同的背景数据块,不同的ID号和不同的端口号。

方法二:通过公共的连接发送多个请求。

通过公共的连接发送多个请求,“MB_CLIENT”功能块多次调用,但是需要使用相同的背景数据块,连接ID号,IP地址和端口号。在任意时间,只能有一个MB_CLIENT请求处于激活状态,在一个请求完成执行后,下一个请求再开始执行,轮循处理。

在此,我们以方法二为例,介绍S7-1200如何通过分次请求获取ZKA-4488-ETH内部寄存器的数据:

1.S7-1200的IP地址192.168.1.218,将系统存储器字节设置为MB1,如图1所示,图2所示。

图1 IP地址设置

图2 系统存储器字节设置

1.新建数据块,访问指向ZKA-4488-ETH的IP地址和端口号

如图6所示,新建DB,添加变量类型为TCON_IP_V4,设置InterfaceId,ID,ActiveEstablished,RemoteAddress,RemotePort等参数,具体含义参见链接。

图6 设置连接变量

如图7所示,在DB中建立结构数组,用于轮询控制位以及数据,其中元素0用于第一次读取,元素1用于第二次读取。Init用于初始标志位。

图7 轮询数据

2.编写轮循功能

1)如图8所示,用“FirstScan”在第一次扫描中将初始标志位置位。

图8 初始化标志位

2)如图9所示,程序段2中,第二步的完成位或者错误位去置位第一步的使能位复位第二步的使能位,同时复位第二步的完成位、错误位、触发的沿变量。

程序段3中,一般情况下是EN通过第一步的使能位使能,REQ通过使能位的上升沿触发,设置模式、读取数据地址、长度、存储地址、连接数据、完成、错误位等。此外需要考虑第一次触询,可以使用手动触发,在这里使用初始化标志位实现指令的第一次使能,去进行CPU和调试软件的TCP连接,使用Connected标志位触发第一次的REQ触发。

图9 请求1触发

如图10所示,程序段4中,第一步的完成位或者错误位去置位第二步的使能位复位第一步的使能位,同时复位第一步的完成位、错误位、触发的沿变量,最后复位初始化标志位,确保第一个MB_CLIENT不会一直接通。

程序段5中,EN通过第二步的使能位使能,REQ通过使能位的上升沿触发,设置模式、读取数据地址、长度、存储地址、连接数据、完成、错误位等。

图10 请求2触发

五.通讯测试

通讯结果如图11 所示。

图11 测试结果



留言询价

留言框

  • 产品:

  • 您的单位:

  • 您的姓名:

  • 联系电话:

  • 常用邮箱:

  • 省份:

  • 详细地址:

  • 补充说明:

  • 验证码:

    请输入计算结果(填写阿拉伯数字),如:三加四=7