慧程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,选择对应的西门子设备型号。
(3)选择对应的西门子PLC。
(4)输入连接名称和连接地址。
通用信息 | 内容 |
---|---|
名称 | 设备连接的名称 |
描述 | 设备连接的描述 |
节点组 | 节点组指的是集群场景下该连接可以指定给某个边缘节点,属于该节点的设备均可使用此连接,不属于该节点的设备无法正常使用此连接 |
启用 | 连接是否处于活动状态。禁用此设置会终止与设备的通信。 |
连接性 | |
主机名 | 设备的主机名或 IP 地址。如192.168.13.12 |
端口 | 连接到设备时使用的端口。默认值为 102。 |
超时 | 请求超时时间,以毫秒为单位。默认值为 2,000。 |
高级 | |
CPU插槽号 | 槽号是用来分配CPU模块、电源模块、接口模块、I/O信号模块、通信模块、功能模块等在机架上的具体位置的,主要是用来标记设备的唯一性的,有点各就各位的意思,无规矩不成方圆,只有槽号确定了,位置也就定了,地址才能明确。默认0 注意: 若使用S7 200 Smart 进行连接, 请将此参数设置为 1, 否则读取出错 |
机架号 | 设备所在机架的编号。对于扩展的多个机架,安装有CPU的机架称为主机架,即机架号为0,扩展的机架编号依次为1号机架、2号机架、3号机架,这个在通信时会告知与之通信的设备CPU在什么位置。默认为 0。 |
连接超时后重新连接 | 在连续几次超时后,设备连接将尝试重新连接到设备。此设置确定在重新连接之前必须发生多少次连续超时。 |
-
可以点击测试连接测试连接是否可以成功,如失败可以在连接日志中查看失败原因。
-
点击提交。提交完成后将显示连接列表,连接状态应该为已连接,启用状态为启用。
西门子设备不支持浏览功能,因此西门子设备对的数据地址需要手动配置或通过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 | |
IW4 | IW4 | |
MD18 | MD18 |