主题
西门子PLC 接入
PLC 设置
需要允许远程通讯访问,如下所示:
如果不开启“允许远程通讯”,通讯报文中会收到 8104
错误:
11:13:16.269 send 03 00 00 1f 02 f0 80 32 01 00 00 00 01 00 0e 00 00 04 01 12 0a 10 02 00 01 00 00 81 00 00 00
11:13:16.275 recv 03 00 00 13 02 f0 80 32 02 00 00 00 01 00 00 00 00 81 04
11:13:16.286 read data error: IS0 : Invalid Buffer passed to Send/Receive
通道设置
通常情况下来说,对于S1200,S1500, Smart200 使用默认配置即可(机架号设置为 0,槽号设置为 1),不需要额外的设置参数信息。
对于 S300,通常的情况是:机架号为 0, 槽号为 2。
对于 S400,机架号和槽号要看PLC实际的情况来确定。
DANGER
注:Smart 200 PLC 机架号设置为 0,槽号设置为 1
参数说明:
名称 | 必填 | 说明 |
---|---|---|
IP | 是 | 设备的IP地址。 |
端口 | 是 | 设备的通讯端口,默认为 102,一般不需要修改。 |
机架号 | 否 | 默认为0。 |
槽位号 | 否 | 默认为1。 |
读超时 | 是 | 单位毫秒,如果在指定时间内未收到子站数据,则判断为超时 |
连续超时次数 | 是 | 如果连续超时次数超过该值,则认为设备离线 |
恢复采集间隔 | 是 | 单位秒,如果设备离线,则经过该间隔时间后再次尝试读取数据 |
通讯链路超时 | 是 | 如果长时间收不到数据,如果长时间收不到数据或者终端心跳,平台会主动断开与设备的连接和通信。单位秒。 |
帧间隔 | 是 | 单位毫秒,每次接收到数据到下次发出请求之间的最小时间间隔 |
点位寻址
点表中的【设备地址】为空,【点位地址】用于对应 PLC 数据项地址。
在西门子 PLC 寻址中,首先需要指定内存类型,然后再指定内存地址。PLC 数据类型通过值类型进行定义。
数据类型表
PLC 中的数据类型与测点类型和数值类型对应关系如下。
PLC数据类型 | 说明 | 测点类型 | 数值类型 |
---|---|---|---|
USInt、Byte | 0~255 | 整数型 | uint8 |
SInt、Byte | -128~127 | 整数型 | int8 |
UInt、Word | 0~65535 | 整数型 | uint16 |
Int、Word | -32768~32767 | 整数型 | int16 |
UDInt、DWord | 0~4294967295 | 整数型 | uint32 |
DInt、DWord | -2147483648~2147483647 | 整数型 | int32 |
Real | -3.402823e+38到1.175495e-38 | 浮点型 | float32 |
LReal | 1.7976931348623158e+308到-2.2250738585072014e-308 | 浮点型 | float64 |
Char | ASCII 字符,每个字符占 1 个字节 | 文本型 | char |
String | 字符串,用于在一个字符串中存储多个数据类型为 char 的字符。 | 文本型 | string |
WChar | 宽字符,每个字符占 2 个字节,UFT-16 编码形式 | 文本型 | wchar |
WString | 宽字符串,用于在一个字符串中存储多个数据类型为 wchar 的字符。 | 文本型 | wstring |
字符串 String 中的第 1 个字节表示字符总长度,第 2 个字节表示字符有效长度。系统采到到数据后会自动提取有效字符。
宽字符串 WString 中的第 1 个字表示字符总长度,第 2 个字表示字符有效长度。系统采到到数据后会自动提取有效字符。
内存类型表
内存类型 | 说明 |
---|---|
I | 输入 |
Q | 输出 |
M | 标志内存 |
DB | 数据块 |
V | DB1数据块,V1001 相当于 DB1,1001 |
T | 时计器 |
C | 计数器 |
输入、输出、外设、标志内存类型
地址格式 | 测点类型 | 数值类型 | 示例 |
---|---|---|---|
<内存类型><地址> | 浮点型 | float32 | M100 |
<内存类型><地址> | 整数型 | int8,uint8,int16,uint16 | M100 |
<内存类型><地址><.位> | 布尔型 | bit | I100.0 |
<内存类型><地址><.字符长度>H | 文本型(由高到低) | char,wchar,string,wstring | M100.10H |
<内存类型><地址><.字符长度>L | 文本型(由低到高) | char,wchar,string,wstring | M100.10L |
DB 内存类型
地址格式 | 测点类型 | 数值类型 | 示例 |
---|---|---|---|
DB<数字>,<地址> | 浮点型 | float32 | DB1,100 |
DB<数字>,<地址> | 整数型 | int8 | DB1,100 |
DB<数字>,<地址><.位> | 布尔型 | bit | DB1,100.0 |
DB<数字>,<地址><.字符长度>H | 文本型(由高到低) | char,wchar,string,wstring | DB1,2.5H |
DB<数字>,<地址><.字符长度>L | 文本型(默认,由低到高) | char,wchar,string,wstring | DB1,2.5L |
示例:DB1,2.5H 读取 DB1 中起始地址为 2 的长度为 5 个字节的字符串,按字节顺序由低到高排序
CAUTION
备注:SMART 200 因为只有一个数据块,所以 DB 序号为固定的 1。
点位地址示例
地址 | 测点类型 | 数值类型 | 说明 |
---|---|---|---|
DB1,100 | 浮点型 | float32 | 读取 DB1 中的起始地址为100的 Real 类型的点 |
DB1,100.0 | 布尔型 | bit | 读取 DB1 中的起始地址为100的第 0 位 |
DB1,100.5L | 文本型(由低到高) | char | 读取 DB1 中起始地址为 100,长度为 5 个字符,编码为 ASCII |
DB1,100.10L | 文本型(由低到高) | wstring | 读取 DB1 中起始地址为 100 的字符串,编码为 ASCII,字符总长度为 10,起始地址开头的第 2 个字节表示有效字符长度(有效字符长度 < 8) |
DB1,100.5L | 文本型(由低到高) | wchar | 读取 DB1 中起始地址为 100,长度为 5 个宽字符,编码为 UTF16,字节数为 10 |
DB1,100.10L | 文本型(由低到高) | wstring | 读取 DB1 中起始地址为 100 的宽字符串,编码为 UTF16,字符总长度为 10,起始地址开头的第 2 个字表示有效字符长度(有效字符长度 < 8) |
M1.0 | 布尔型 | bit | 读取 M 寄存器中起始地址为1的第 0 位 |