通过西门子S7协议连接设备

慧程HiperMatrix系统支持对西门子S7系列的PLC,HiperMatrix使用 S7 协议通过 TCP/IP 连接到西门子 PLC。与 Modbus 和某些 Allen Bradley 连接类似,Siemens S7 设备不支持标签浏览。您可以在HiperMatrix手动创建设备属性,或使用 点位导入/导出在 Excel 创建所有点位。目前,HiperMATRIX具有以下西门子 PLC 的驱动程序:

  • Siemens S7-200
  • Siemens S7-S200Smart
  • Siemens S7-SNon200
  • Siemens S7-S300
  • Siemens S7-S400
  • Siemens S7-S1200
  • Siemens S7-S1500

1.连接到西门子PLC

(1)进入边缘连接服务-连接管理,点击新建连接。

(2)选择西门子PLC,选择对应的西门子设备型号。

image-20220228105028961

(3)选择对应的西门子PLC。

(4)输入连接名称和连接地址。

image-20220228105340894

通用信息 内容
名称 设备连接的名称
描述 设备连接的描述
节点组 节点组指的是集群场景下该连接可以指定给某个边缘节点,属于该节点的设备均可使用此连接,不属于该节点的设备无法正常使用此连接
启用 连接是否处于活动状态。禁用此设置会终止与设备的通信。
连接性
主机名 设备的主机名或 IP 地址。如192.168.13.12
端口 连接到设备时使用的端口。默认值为 102。
超时 请求超时时间,以毫秒为单位。默认值为 2,000。
高级
CPU插槽号 槽号是用来分配CPU模块、电源模块、接口模块、I/O信号模块、通信模块、功能模块等在机架上的具体位置的,主要是用来标记设备的唯一性的,有点各就各位的意思,无规矩不成方圆,只有槽号确定了,位置也就定了,地址才能明确。默认0

注意: 若使用S7 200 Smart 进行连接, 请将此参数设置为 1, 否则读取出错
机架号 设备所在机架的编号。对于扩展的多个机架,安装有CPU的机架称为主机架,即机架号为0,扩展的机架编号依次为1号机架、2号机架、3号机架,这个在通信时会告知与之通信的设备CPU在什么位置。默认为 0。
连接超时后重新连接 在连续几次超时后,设备连接将尝试重新连接到设备。此设置确定在重新连接之前必须发生多少次连续超时。
  1. 可以点击测试连接测试连接是否可以成功,如失败可以在连接日志中查看失败原因。

  2. 点击提交。提交完成后将显示连接列表,连接状态应该为已连接,启用状态为启用。

西门子设备不支持浏览功能,因此西门子设备对的数据地址需要手动配置或通过excel文件导入的方式进行配置。

2.配置西门子数据地址

2.1 手动指定每个地址

(1)进入设备管理,进入已创建好的设备(关联创建好的西门子PLC的连接),选择一个属性点击编辑
(2)设置数据类型,如 32位浮点数
(3)设置数据地址,如 DB1.DBD6.0
(4)点击确定,那么在属性列表中将能看到对应的参数

2.2 西门子设备地址语法

西门子协议定义格式如下:

%{Memory-Area}{Transfer-Size-Code}{Byte-Offset}.[Bit-Offset}]

  • Memory Area: S7驱动允许访问的内存区域。
  • Transfer-Size-Code:数据类型代码,根据数据类型参照下面的表格进行设置 [XBWD]。
  • Byte-Offset:在内存区域中的的字节起始位。
  • Bit-Offset:bit偏移位 。

    /**
     *     TODO S7地址的正则表达式校验
     */

    /**
     *  对于 INPUTS, OUTPUTS, FLAGS, V 正则地址
     *          I       Q       M     V
     *   例如: I70.1,  IW4,  MW10, MD22, M70.0,  VW8
     */
    private static final Pattern ADDRESS_PATTERN =
            Pattern.compile("^(?<memoryArea>.)(?<transferSizeCode>[XBWD]?)(?<byteOffset>\\d{1,7})(.(?<bitOffset>[0-7]))?");
    /**
     *   DB数据块的正则地址
     *      目前仅凭借此正则决定DB地址的正确
     *  例如: DB1.DBD22, DB1.DBX18.1,DB1.DBD2
     */
    private static final Pattern DATA_BLOCK_ADDRESS_PATTERN =
            Pattern.compile("^DB(?<blockNumber>\\d{1,5}).DB(?<transferSizeCode>[XBWD]?)(?<byteOffset>\\d{1,7})(.(?<bitOffset>[0-7]))?");


2.3 内存区域访问补充说明

Code Name Description
I INPUTS 外部输入,各种按钮,开关,传感器等把信号给至PLC的都称之为输入。
Q OUTPUTS 是输出端,PLC 输出信号控制别的元件都是接在Q上,如指示灯,继电器等等。
M FLAGS_MARKERS 是PLC 内部的辅助继电器,只存在与PLC 内部,主要作用把各个程序段在内部连接起来。
DB DATA_BLOCKS 数据存储区,可以用来存储各种非开关量的数字量,像温度等等。包含用户定义数据结构的内存区域通常由整数数据块号访问。请注意,数据块地址的地址格式稍微复杂一些。
V Holding register V存储区,变量存储器,具有保持功能。

比如一个int16类型的Field,DB1.DBW1.0就是一个合法的origin定义。S7各种数据类型的说明:

2.4 数字功能代码补充说明

Code Short-Code Name Description Size in bits Supported PLC Types
Bit-Strings (Will all interpreted as sequence of boolean values in PLC4X)
BOOL X Bit Single boolean value 1 All
BYTE B Byte Array of 8 boolean values 1 All
WORD W Word Array of 16 boolean values 2 All
DWORD D Double-Word Array of 32 boolean values 4 All
LWORD X Long-Word Array of 64 boolean values 8 S7_1500
Integer values
SINT B Small int 8 bit integer (signed) 1 S7_1200, S7_1500
USINT B Small unsigned int 8 bit integer (unsigned) 1 S7_1200, S7_1500
INT W Integer 16 bit integer (signed) 2 All
UINT W Unsigned integer 16 bit integer (unsigned) 2 S7_1200, S7_1500
DINT D Double integer 32 bit integer (signed) 4 All
UDINT D Unsigned Double Integer 32 bit integer (unsigned) 4 S7_1200, S7_1500
LINT X Long integer 64 bit integer (signed) 8 S7_1500
ULINT X Unsigned long integer 64 bit integer (unsigned) 8 S7_1500
Floaring pooint values
REAL D Real 32 bit IEEE 754 full precision floating point value (signed) 4 All
LREAL X Long Real 64 bit IEEE 754 double precision floating point value (signed) 8 S7_1200, S7_1500
Character values
CHAR B Character 8 bit character 1 All
WCHAR X Double byte character 16 bit character value 2 S7_1200, S7_1500
STRING X String String 2 + n bytes 1 All
WSTRING X Double byte String String of 16 bit characters 2 + n bytes 1 S7_1200, S7_1500
Temporal values
S5TIME X S5 Time S5 Time (like in duration) 2 S7_300, S7_400, S7_1500
TIME X Time Time (like in duration) (Minutes, Seconds, Milliseconds) 4 All
LTIME X Long Time Long Time (like in duration) (Minutes, Seconds, Milliseconds, Microseconds, Nanoseconds) 8 S7_1500
DATE X Date Date 2 All
TIME_OF_DAY X Time of day Time (like in 4:40PM) 4 All
DATE_AND_TIME X Date and Time Date and time (like in 03.05.2020 4:40 PM) 8 S7_300, S7_400, S7_1500

2.5 数据类型转换规则

S7 Type IOT前端选择
BOOL 布尔值
BYTE 8位整数
WORD 32位整数
DWORD 64位整数
REAL 32位浮点数/64位浮点数
TIME 64位整数
DATE_AND_TIME 日期
DATE 日期
STRING 字符串

2.6 举例合法地址对应的配置

s7源地址 地址值 属性配置
I70.1 I70.1 image-20220228112056177
IW4 IW4 image-20220228112129324
MD18 MD18 image-20220228112256040
2024-09-27
0