Mitsubishi MC
通过 MC 协议(3E 帧)连接三菱 MELSEC PLC:软元件代号、十进制与十六进制编号,以及读取长度。
Mitsubishi MC 驱动通过 MC 协议和三菱 MELSEC PLC 对话,用的是 TCP 上的二进制 3E 帧,也就是 Q、L 和 iQ 系列说的那种帧。你用熟悉的 MELSEC 软元件记法来寻址数值:一个软元件代号加一个编号,例如 D100 或 M50。在 Connector 里的 Mitsubishi MC 驱动下面添加一台设备;面板只显示这个协议用得到的那些字段。
连接
| 字段 | 含义 | 默认值 |
|---|---|---|
| 主机 | PLC 以太网接口的 IP 地址或主机名。 | 空 |
| 端口 | MC 协议连接的 TCP 端口。填 0 就用 5007。 | 0 |
设备标题栏显示拼好的端点,例如 mcp://192.168.0.20:5007。这个驱动没有轮询间隔字段:它的点位每秒读一次。PLC 那一侧必须在选定的端口上配置一条以二进制通信的 MC 协议(SLMP)TCP 连接。
寻址
三菱的点位靠点位“来源”卡片里的两个字段寻址:
| 字段 | 含义 | 接受的取值 | 默认值 |
|---|---|---|---|
| 设备地址 | MELSEC 软元件代号加编号,例如 D100。必填。 |
自由文本 | 空 |
| 读取长度(字节,留空 = 自动) | 每次读取传输多少字节。留空就按数据类型定读取的大小。 | 1 及以上,或留空 | 留空 |
地址不区分大小写,而且匹配最长的那个代号胜出,所以 SD100 是特殊寄存器 100,不是步进继电器 S。对三菱按十六进制编号的那些软元件(X、Y、B、W、SB、SW、DX、DY),编号是十六进制的,其余一律是十进制的(X1F 是输入 0x1F)。接受的软元件代号有:
| 代号 | 软元件 | 编号 |
|---|---|---|
M |
内部继电器 | 十进制 |
SM |
特殊继电器 | 十进制 |
L |
锁存继电器 | 十进制 |
F |
报警器 | 十进制 |
V |
边沿继电器 | 十进制 |
S |
步进继电器 | 十进制 |
X |
输入 | 十六进制 |
Y |
输出 | 十六进制 |
B |
链接继电器 | 十六进制 |
SB |
特殊链接继电器 | 十六进制 |
DX |
直接输入 | 十六进制 |
DY |
直接输出 | 十六进制 |
D |
数据寄存器 | 十进制 |
SD |
特殊寄存器 | 十进制 |
R |
文件寄存器 | 十进制 |
ZR |
扩展文件寄存器 | 十进制 |
W |
链接寄存器 | 十六进制 |
SW |
特殊链接寄存器 | 十六进制 |
Z |
变址寄存器 | 十进制 |
TC / TS / TN |
定时器线圈 / 触点 / 当前值 | 十进制 |
SC / SS / SN |
累计定时器线圈 / 触点 / 当前值 | 十进制 |
CC / CS / CN |
计数器线圈 / 触点 / 当前值 | 十进制 |
底层的 MC 库还接受 TT、TM、CT、CM 和 A 这几个代号。“来源”卡片里那行只读的来源地址(总线)会随着你编辑显示拼好的地址。
数据类型
数据类型选择器提供驱动能编排的那四种类型:
| 数据类型 | 自动读取长度 | 说明 |
|---|---|---|
| Boolean | 1 字节 | 在位软元件上就是点名的那一个继电器;在字软元件上则是任何非零的字 |
| Int32 | 4 字节 | 两个连续的 16 位字,例如 D100+D101 |
| Float | 4 字节 | 两个连续的字,装着一个 IEEE 单精度数 |
| String | 16 字节 | 读缓冲区里直到第一个 NUL 为止的文本 |
字数据以 MELSEC 原生的小端序到来,并被自动解码;没有字节序选项。一个 32 位的值跨两个连续的字软元件。文本长于 16 个字符时,请把读取长度抬到能覆盖存着的那段文本。读取长度是一个字节数,而协议传输的是整个 16 位字,所以奇数长度会被向上取整到装着它最后一个字节的那个字。
位软元件,也就是驱动一次读一个继电器的那些,是 X、Y、M、L、F、V、B、S、TS、TC、SS、SC、CS、CC、SB、DX、DY。放在它们上面的布尔点位,只替你打进去的那个地址应答,不替别的。其余代号都是字软元件,定时器或计数器的当前值(TN、SN、CN)以及链接寄存器(W、SW)也在其中;那里整个字说了算:D100 里装着 0x0100 就读作真。
写入
访问方式为读写或只写的点位可以被写,写到读所用的那同一个设备地址上。位软元件上的布尔写入会置位或复位点名的那一个继电器,一点也不碰它的邻居。其余一切都按整个 16 位字来写:Int32 和 Float 各两个字,字软元件上的布尔一个字,而文本则是这个点位整个读取长度,前面是文本的 UTF-8 字节,后面是零,并向上取整到最后一个字。因此,用一段短文本盖住一段长文本时,整个值都被替换掉,旧的一点儿都不剩。装不进声明长度的文本会被拒绝,长度写进诊断日志,绝不会被截短了塞进去。新点位一开始是只读。
设备发现
这个驱动里的 MC 协议没有广播式的设备发现,所以 Connector 不显示“发现设备”按钮。设备和它的地址请手工添加。
需要知道的事
- 这个驱动上每一个点位的轮询都固定为一秒;平常那些轮询间隔字段不显示。
- PLC 上必须把 3E 帧启用为二进制(不是 ASCII)的 MC/SLMP 连接;一个配置成 ASCII 的端口不会应答这个驱动。
- 一台够不着的 PLC 在启动时不花什么代价:设备在后台一直重试,在连接接上之前它的点位读作质量不可用。