Mitsubishi MC

通过 MC 协议(3E 帧)连接三菱 MELSEC PLC:软元件代号、十进制与十六进制编号,以及读取长度。

以 Markdown 查看

Mitsubishi MC 驱动通过 MC 协议和三菱 MELSEC PLC 对话,用的是 TCP 上的二进制 3E 帧,也就是 Q、L 和 iQ 系列说的那种帧。你用熟悉的 MELSEC 软元件记法来寻址数值:一个软元件代号加一个编号,例如 D100M50。在 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 库还接受 TTTMCTCMA 这几个代号。“来源”卡片里那行只读的来源地址(总线)会随着你编辑显示拼好的地址。

数据类型

数据类型选择器提供驱动能编排的那四种类型:

数据类型 自动读取长度 说明
Boolean 1 字节 在位软元件上就是点名的那一个继电器;在字软元件上则是任何非零的字
Int32 4 字节 两个连续的 16 位字,例如 D100+D101
Float 4 字节 两个连续的字,装着一个 IEEE 单精度数
String 16 字节 读缓冲区里直到第一个 NUL 为止的文本

字数据以 MELSEC 原生的小端序到来,并被自动解码;没有字节序选项。一个 32 位的值跨两个连续的字软元件。文本长于 16 个字符时,请把读取长度抬到能覆盖存着的那段文本。读取长度是一个字节数,而协议传输的是整个 16 位字,所以奇数长度会被向上取整到装着它最后一个字节的那个字。

位软元件,也就是驱动一次读一个继电器的那些,是 XYMLFVBSTSTCSSSCCSCCSBDXDY。放在它们上面的布尔点位,只替你打进去的那个地址应答,不替别的。其余代号都是字软元件,定时器或计数器的当前值(TNSNCN)以及链接寄存器(WSW)也在其中;那里整个字说了算:D100 里装着 0x0100 就读作真。

写入

访问方式为读写或只写的点位可以被写,写到读所用的那同一个设备地址上。位软元件上的布尔写入会置位或复位点名的那一个继电器,一点也不碰它的邻居。其余一切都按整个 16 位字来写:Int32 和 Float 各两个字,字软元件上的布尔一个字,而文本则是这个点位整个读取长度,前面是文本的 UTF-8 字节,后面是零,并向上取整到最后一个字。因此,用一段短文本盖住一段长文本时,整个值都被替换掉,旧的一点儿都不剩。装不进声明长度的文本会被拒绝,长度写进诊断日志,绝不会被截短了塞进去。新点位一开始是只读。

设备发现

这个驱动里的 MC 协议没有广播式的设备发现,所以 Connector 不显示“发现设备”按钮。设备和它的地址请手工添加。

需要知道的事

  • 这个驱动上每一个点位的轮询都固定为一秒;平常那些轮询间隔字段不显示。
  • PLC 上必须把 3E 帧启用为二进制(不是 ASCII)的 MC/SLMP 连接;一个配置成 ASCII 的端口不会应答这个驱动。
  • 一台够不着的 PLC 在启动时不花什么代价:设备在后台一直重试,在连接接上之前它的点位读作质量不可用。