LS ELECTRIC XGI / XBC / XBM
LS ELECTRIC(原LS产电)的XGI / XBC / XBM PLC系列通过标准协议 FEnet (Fast Ethernet) 进行通信。
这是XGT系列中最常用的通信方式,在启动实际通信之前,首先通过ICMP (ping) 确认可达性。
注册表单输入值
| 输入栏 | 填写内容 | 示例 |
|---|---|---|
| IP地址 | PLC的FEnet模块IP | 192.168.0.80 |
| 端口 | FEnet端口 | 2004(XGT默认) |
| 连接超时(connect-timeout) | 连接尝试的最大时间(ms) | 3000 |
| 读取超时(read-timeout) | 读取响应的最大时间(ms) | 3000 |
| 使用校验和(use-checksum) | BCC校验和选项 | 通常 false |
| 使用十六进制位索引(use-hex-bit-index) | 是否将位编号解释为十六进制 | 通常 false。仅在P区域使用 F 等十六进制索引时设为 true |
PLC侧的设置,只需在XG5000中预先注册FEnet模块的IP/端口即可。
Ping检查
LS PLC在尝试通信之前,网关会先通过 ping 确认是否可达。如果公司内网阻止了ICMP(ping),即使PLC正常也会显示为“Ping failed”,请检查防火墙策略。
标签的PLC地址表示
LS PLC推荐使用短格式 (D00309),网关会自动转换为标准格式 (%DW00309)。
内存区域
| 字母 | 区域 |
|---|---|
D | Data Register — 最常用 |
M | Memory(内存位) |
K | Keep Relay |
F | Flag |
T | Timer |
C | Counter |
R | (因系列而异) |
P | I/O |
表示示例
| 表示(短格式) | 含义 |
|---|---|
D00309 | Data Register 309(16位) |
D00600 | Data Register 600(若要用32位,请在[格式辅助]中指定 DW) |
M02704 | Memory bit 2704 |
P0001F | I/O位(使用十六进制索引时) |
LS的同一地址可以被解析为16位/32位/64位/浮点数等多种类型,因此[格式辅助]是关键。
数据格式匹配
| PLC的值 | 数据类型 | 格式辅助 | PLC地址示例 |
|---|---|---|---|
| 位(M, K, T, P) | Boolean | (留空) | M02704 |
| 字中的特定位 | Boolean | BIN[3](第3位) | D00309 |
| 16位整数 | Integer | (留空) | D00309 |
| 16位无符号 | Integer | UI | D00300 |
| 32位整数 | Integer | DW | D00600(使用D00600~D00601) |
| 32位无符号 | Integer | UDW | D00690 |
| 64位整数 | Long | (留空) | D00700 |
| 32位浮点数(最常用的浮点型) | Float | REAL | D00450 |
| 64位浮点数 | Double | LREAL | D00500 |
| 字符串N个字(= 2N个字符) | String | STR[N] | D00500 |
如果是32位但格式辅助留空?
会被错误地读取为16位,导致值完全不同的数字出现。如果是32位整数,请务必指定 DW;如果是32位浮点数,请务必指定 REAL。
常见问题与解决方法
| 症状/消息 | 可能原因 | 解决方法 |
|---|---|---|
| “Ping failed” | ICMP被阻止的环境 | 在防火墙中允许ICMP。如果不行,请联系系统管理员 |
| “Connect failed” | FEnet模块未运行,端口不同 | 在XG5000中确认FEnet模块的IP/端口(2004) |
| 32位值异常 | 格式辅助留空 | 指定 DW(整数) / REAL(浮点数) |
| 位无法读取 | 注册为 D00100(D是字区域) | 使用 M02704 等位区域。或者用 format=BIN[3] 从字中提取位 |
| 字符串字符乱码 | LS以低字节优先发送的特性 | 网关会自动处理。使用外部工具直接解码时请注意 |
常用示例
普通产线PLC注册
| 标签名称 | PLC地址 | 数据类型 | 格式辅助 |
|---|---|---|---|
| 运行状态位 | M02704 | Boolean | (留空) |
| 计数器(16位) | D00309 | Integer | (留空) |
| 累计产量(32位) | D00600 | Integer | DW |
| 压力(浮点数) | D00100 | Float | REAL |
| 压力(kPa,转换) | D00100 | Float | REAL(计算公式 ${VALUE}*0.1) |
| 批次名称(10个字) | D00500 | String | STR[10] |
从字中提取位
如果同一个字中打包了多个位信号,可以使用 BIN[비트번호] 逐行注册。
| 标签名称 | PLC地址 | 数据类型 | 格式辅助 |
|---|---|---|---|
| Bit 0 | D00309 | Boolean | BIN[0] |
| Bit 3 | D00309 | Boolean | BIN[3] |
| Bit 15 | D00309 | Boolean | BIN[F](十六进制F = 15) |
通过 use-hex-bit-index=true 设置PLC注册选项后,即可使用十六进制索引(如 F 等)。
更多详细示例 / 自动化注册
请参考 高级 — REST API 中的LS示例。