31.1. 概要
Memory Map通讯协议类似于 IBM 3764R通讯协议,使用于对应内存数据的变化量较少的场合,
且专为两台设备交换数据的通讯协议。
Memory Map 通讯协议的特征是两台设备必须一方为 master,另一方为slave。
在一般情况下,master 和 slave 并没有建立通讯,只有当某一方所指定的内存数据变化时,通讯才建立。
当双方数据一致后,通讯则马上中断。
所以通讯的目的是保持两台设备(master 和 slave)之间相对应的一块相同大小内存数据的一致性。
其中 master 和 slave 中对应的内存需和 MW(MB)内存具有相同的性质和大小。
HMI 中的 MW(MB)大小皆为 10,000字。
MB和MW都是指向相同的寄存器区块,例如, MB0~MBf对应到MW0的各位, MB10~MB1f对应到 MW1,
如下表所示:
设备名称 格式 范围
MB DDDDh DDDD:0~4095 h:0~f(hex)
MW DDDD DDDD:0~9999
31.2. 接脚设定
使用Memory Map通讯协议时,master和 slave必须使用相同的通讯参数。其接线方式如下:
(#表示由具体PLC或控制器决定)
界面 RS-232
设备 Master Slave
对应脚位 TX(#) RX(#)
RX(#) TX(#)
GND(#) GND(#)
界面 RS-485 (4W)
设备 Master Slave
对应脚位 TX+(#) RX+(#)
TX-(#) RX-(#)
RX+(#) TX+(#)
RX-(#) TX-(#)
GND(#) GND(#)
31.3. 通讯流程图
维纶通触摸屏Memory Map通讯协议
维纶通触摸屏Memory Map通讯协议
维纶通触摸屏Memory Map通讯协议
Note
 流程2对slave有效,对master无效。
 STX 为通讯请求信号,ACK为响应请求信号,NAK为忙碌信号。
31.4. 通讯数据格式
通讯数据格式可分为两种,MB 指令和MW指令。
对 MB操作的指令格式,请参见下表:
MB 指令
偏移量
(字节)
格式 描述
0 0x02 对MB操作的标志
1 0x## 地址(低字节)
2 0x## 位地址(高字节),如果是 MB-18,则 1*16+2=18,为0x12,0x00
3 0x00(or 0x01) 表示所指定 MB 地址的数据内容(因为是 Bit 类型,只能是 0 或1)
4, 5 0x10, 0x03 结束标志
6 0x## 总和检查码;从偏移量0到5之字节进行XOR运算
对 MW操作的指令格式,请参见下表:
MW 指令
偏移量 (字节) 格式 描述
0 0x01 对MW操作的标志
1 0x## 地址(低字节)
2 0x## 位地址(高字节) ,如果地址数据中包含一个 0x10,
则在 0x10 后再插入一个0x10,
地址表示多出一个字节,命令格式相应的向后推移一个字节,
例如地址为0x10,0x04,则变为0x10,0x10,0x04
3 0x## 传送的字节数(由于对字操作,字节数一定为偶数),如果字节数为 0x10,
则在 0x10 后再插入一个 0x10 命令格式相应的向后推移一个字节
4 to 4+n-1 0x##(L),
0x##(H)
0x##(L),
0x##(H)… 为 1,2 字节所对应地址为起始地址的数据,
其中n 为数据的字节数,如果数据中有 0x10,则在 0x10 后再插入一个 0x10,
而”传送字节数”不变,n 则为 n+1,以次类推
4+n, 4+n+1 0x10 ,0x03 结束标志
4+n+2 0x## 总和检查码;对前面所有字节 xor
31.4.1. 通讯范例
范例 1
假设 master 将MW-3 的内容设为0x0a,因为数据更动,master立刻会和slave 建立通讯,而slave接
收到数据后把它对应的MW-3的内容更新为0x0a。其对应过程为:
1. master发送 STX(0x02h)。
2. slave 接收到master 发送的STX(0x02h)后,发送返回命令ACK(0x06h)。
3. master接收到slave 的返回命令ACK(0x06h)。
4. master发送资料0x01,0x03,0x00,0x02,0x0a,0x00,0x10,0x03,0x19,如下表所示:
偏移量 (字节) 格式 描述
0 0x01 对 MW操作的标志
1 0x03 地址(低字节)
2 0x00 位地址(高字节)
3 0x02 传送的字节数(MW3为两个字节)
4, 5 0x0a, 0x00 MW-3 的内容为0x0a,0x00
6, 7 0x10, 0x03 结束标志
8 0x19 总和检查码,0x01^0x03^0x00^0x02^0x0a^0x00^0x10^0x03=0x19
5. slave 收到master发送的数据后,发送返回命令ACK(0x06h)。
6. master接收到slave 的返回命令ACK(0x06h)。
通讯完成,master 把更改的 MW 的地址和内容传送给了 slave,slave 再更改 MW 的数据,
使得 master和 slave对应节点地址内容保持一致。
范例 2
如果地址和数据中包括0x10的情况,请注意观察数据格式的变化。
我们假设 slave 把 MW-10 的内容设为 0x10,根据这个协议,slave 立刻会和 master 建立通讯,
从而使得 master 接收到数据后把它对应的 MW-10的内容置为 0x10。
过程为:
1. slave 发送STX(0x02h)。
2. 主方接收到slave发送的STX(0x02h)后,发送返回命令ACK(0x06h)。
3. slave 接收到master 的返回命令ACK(0x06h)。
4. slave 发送资料0x01,0x10,0x10,0x00,0x02,0x10,0x10,0x00,0x10,0x03,0x10
如下表所示:
偏移量(字节) 格式 描述
0 0x01 对MW操作的标志
1 0x10 地址(低字节)
2 0x10 插入一个0x10 字节
3 0x00 位地址(高字节)
4 0x02 传送的字节数(MW-10为两个字节)
5 0x10 MW-10 的低字节内容为0x10
6 0x10 插入一个0x10 字节
7 0x00 高字节内容为0x00
8 0x10 结束标志
9 0x03
10 0x10 总和检查码,0x01^0x10^0x10^0x00^0x02^0x10^0x10^0x00^0x10^0x03=0x10
5. master收到slave发送的数据后,发送返回命令ACK(0x06h)。
6. slave 接收到master 的返回命令ACK(0x06h)。
slave 把更改的 MW 的地址和内容传送给了 master,master 再更改 MW 的数据,
使得 slave 和 master对应节点地址内容保持一致。
31.5. 实作范例
以下将示范两台 HMI如何使用Memory Map通讯协议连接。
Note
 若是两台的型号不同,请分别建立不同的工程文件,或者是在完成第一台HMI的设定后,直接更改 “编
辑” » “系统参数设置” » “HMI 属性” 为第二台 HMI 的型号,重新编译工程文件再下载至第二台HMI。
31.5.1. 新增 Memory Map 的步骤
1. 开启EasyBuilder Pro,选择 “开新文件” ,设定HMI型号后,照以下步骤:
2. 点选菜单列 “编辑”,并点击 “系统参数设置”,接着选择 “设备清单” 页面并点选 “新增…” 加入新的设备。
3. “名称” 填入 “Memory Map”,并点选 “PLC”,设定 “所在位置” 为 “本机”。
4. “PLC 类型” 选择 “Memory Map”,并在 “PLC 接口” 选择 “RS-232”。
维纶通触摸屏Memory Map通讯协议
5. 点击 “设置”,设定如下:
维纶通触摸屏Memory Map通讯协议
6. 完成通讯端口设定后按下 “确定”。
Note
 MT500系列有分为MemoryMap_Master 和MemoryMap_Slave,详情请参考相关手册。
 eMT 3000 系列和MT8000系列选择Memory Map即可。
 “数据位” 必须为8 Bits。
 两台HMI的所有其它设置必须一致。
31.5.2. 元件设定
接着在窗口 10上增加2个元件,「位状态切换开关」和「多状态切换开关」:
新增位状态切换开关,如下图所示:
维纶通触摸屏Memory Map通讯协议
1. 读取和写入地址的 “PLC名称” 选择 “Memory Map”。
2. 地址选择 MB-0。
3. “开关类型” 选择 “切换开关”。(可选择适合的图片或标签以供辨识)
新增多状态切换开关,如下图所示:
维纶通触摸屏Memory Map通讯协议
1. 读取和写入地址的 “PLC名称” 选择 “Memory Map”。
2. 地址选择 MW-1。
3. “循环” 选择 “启用”。(可选择适合的图片或标签以供辨识)
31.5.3. 执行结果
将工程文件编译并下载至HMI,再将工程文件下载至第二台HMI。
完成画面可参考下图:
维纶通触摸屏Memory Map通讯协议
按一下任意一个按钮,对应另一台触控屏幕的该按钮也将跟着动作,它们的状态将始终保持一致。
一台HMI和任一台控制器之间的通讯其方式与上述类似,
其根本原理是2 台设备的相同寄存器的数据要保持一致。
|