基于 Memobus 协议的安川 PC 与西门子 PC 的通信实现 尚金瑞 ( 上海宝信软件股份有限公司 201203) 摘要 : 本文介绍了安川 PC 与西门子 PC 的连接方式和通讯方式, 以及在控制系统中两种 PC 的通信集成方案, 提供了一种基于 Memobus 协议的 CP/IP 信息集成解决方案 构建了基于 Memobus 协议的通讯架构 对其他品牌 PC 与安川 PC 间实现基于 Memobus 协议的 CP/IP 通信有着一定的指导意义 关键词 : PC;Memobus;CP/IP Abstract: he article introduces the connection and communication mode between AnChuan PC and Siemens PC and the communication integration solution of two kinds of PC in control system. It also provides the information integration solution based on Menobus Protocol of CP/IP and design the communication architecture based on that. his article can also be the guide and reference to the implement of communication method based on Menobus protocol between other brand PC and AnChuan PC. 引言在工业控制领域中, PC 作为一种稳定可靠的控制器得到了广泛的应用 目前在国内的大中型工业企业中, 采用多种品牌的 PC 也是一个比较普遍存在的现状 而企业信息化的基础工作就是采集相关数据, 其中不同系统间数据的相互采集和传送就显得尤为重要 发展之初, 沿袭各自的思路发展起来的安川 PC 和西门子 PC 之间, 彼此联网通讯存在一定的困难 随着科技的发展及市场竞争的需要, CP / IP 以太网因具有使用范围广 易组网 成本低 数据传输高效可靠等特点, 使其应用于工业控制网络具有独特的优越性 而 Memobus 作为实时工业控制网络通信协议在控制设备中有着一定的应用和发展 各厂家基于开放的通信协议 作者简介 : 尚金瑞 ( 出生 :1974 年 ), 性别 : 男, 籍贯 : 黑龙江, 职称 : 工程师, 学位 : 硕士, 主要从事的 工作 : 工业自动化控制系统设计及应用软件开发与调试
逐步研发了各自的通讯模块, 为 PC 之间的实时通讯创造了有利的条件 本文将 围绕着 Memobus/CP 协议, 介绍安川 PC 与西门子 PC 间的通信系统的构成与开 发 1 系统构成西门子 S7 系列 PC 的通讯模块为用户提供了强大的通信功能, 通过支持不同协议的通讯模块西门子系列 PC 可以与不同的设备进行通信并组成网络 而大多数用户选用的是对用户完全并放并支持 CP/IP 协议的以太网通讯模块 CP443-1( 或 CP343-1) 同样安川 PC 同样具有支持 CP 协议的通讯模块 CP218, 这样为两种品牌的 PC 之间实现基于 CP 协议的通信建立了物理基础 2 协议说明 CP/IP 是目前网络中使用的最基本的一组通信协议, 它包括上百个各种功能的协议,CP 协议和 IP 协议是保证数据完整传输的两个基本的重要协议 Extended MEMOBUS 是安川 PC 所使用的一个开放的通信协议 安川 PC 与西门子 PC 二者的通信在传输层采用了 CP/IP 协议, 在应用层采用 Extended MEMOBUS 协议 由于 CP/IP 协议基本集成于硬件, 不需要编程进行解析, 这里我们仅对 Extended MEMOBUS 协议作以简要的介绍 Extended MEMOBUS 帧结构如下表所示 : Header 218 Header Application Data 1) Header 部分 : 主要为 CP/IP 和 UDP/IP 服务, 通信过程中由通信模块来自动设定和删除 2) 218Header 部分 : 在安川 PC 和西门子 PC 之间通信时,218Header 部分用来传送双方的控制指令和应答 由于 CP218 模块中集成了该部分协议的解析, 所以实际应用时西门子 PC 中需要编程进行相应设定和解析 218Header 的结构表如下 : 以下每一个格都占用一个字节的长度 Command ype Identification NO.
Destination channel NO. Source channel NO. Not used. Not used. Data ength () Data ength (H) Not used. Not used. Not used. Not used. Command ype 11H: MEMOBUS 命令 19H: MEMOBUS 响应 12H: General-purpose 报文 Identification Number 发送的报文的序列号 : 从 00H 到 FFH 依次反复 Destination channel NO. 和 Source channel NO. 根据所用安川 PC 的 CPU 号, 如果不是安川 PC 系列, 则 channel NO. 统一设置为 00H Data ength 218Header 和 Application data 的总长字节数 3) Application 部分 : 需要通信的实际数据存储在这个部分 在传输这部分数据时, 可以采用二进制 (Binary) 模式和字符 (ASCⅡ) 模式 通常 Binary Code 模式具有较高通信效率 Extended MEMOBUS 命令码 : Extended MEMOBUS 一共提供了 17 种命令 主要用到的如下 : Number of Points Function Codes Functions Extended MEMOBUS protocol (Binary Mode) Extended MEMOBUS protocol (ASCⅡ Mode)
01H 读线圈状态 2000 点 2000 点 05H 更改单线圈状态 1 点 1 点 06H 写单寄存器 1 字 1 字 09H 读保持寄存器 508 字 508 字 0BH 写保持寄存器 507 字 507 字 各个指令的应用如下 : Read Coil Status( 读线圈状态 ) 请求 ength:07h SFC:01H Reference NO. Number of Coils(n) 注释命令的长度, 占用两个字节 对应上表的功能码前 4 位是目的 CPU 号, 后四位是源 CPU 号设定要操作的 PC 中线圈的地址, 占用两个字节读取的线圈的数量, 占用两个字节 应答 ength:07h SFC:01H Coils:1 to 8 Coil(No.of coils):1 to 8 注释响应的长度, 占用两个字节 与发送的命令码对应与发送的命令码相反被改变的线圈的地址返回的线圈的状态值 Modify Status of a Single Coil( 更改单线圈状态 ) 请求 ength:07h 注释 命令的长度, 占用两个字节
SFC:05H Reference NO. Number of Coils(n) 对应上表的功能码前 4 位是目的 CPU 号, 后四位是源 CPU 号设定要操作的 PC 中线圈的地址, 占用两个字节读取的线圈的数量, 占用两个字节 应答 ength:07h SFC:05H Reference NO. ON/OFF=FFH/00H 注释响应的长度, 占用两个字节 与发送的命令码对应与发送的命令码相反被改变的线圈的地址返回的线圈的状态值 Write to a Single Holding Register( 写单寄存器 ) 请求 ength:07h SFC:06H Reference NO. ON/OFF=FFH/00H 注释命令的长度, 占用两个字节 对应上表的功能码前 4 位是目的 CPU 号, 后四位是源 CPU 号设定要操作的 PC 中寄存器的地址, 占用两个字节写入的寄存器的值 应答 ength:07h SFC:06H 注释响应的长度, 占用两个字节 与发送的命令码对应与发送的命令码相反
Reference NO. ON/OFF=FFH/00H 被改变的线圈的地址 返回的线圈的状态值 Read Holding Register Contents( 读保持寄存器 ) 请求 ength:07h SFC:06H 注释命令的长度, 占用两个字节 对应上表的功能码前 4 位是目的 CPU 号, 后四位是源 CPU 号 设定要读的 PC 中保持寄存器的起始地址, 占用 Reference NO. 两个字节 Number of registers(n) 读寄存器的数量 应答 ength:09h SFC:09H 注释响应的长度, 占用两个字节 与发送的命令码对应与发送的命令码相反 Not Used Numbers of registers(n). Data 1 Data n 读取的保持寄存器的数量 读取的保持寄存器的值 读取的保持寄存器的值 Write to Holding Register Contents( 写保持寄存器 ) 请求 注释
ength:08h+number of 命令的长度, 占用两个字节 registers 2 SFC:0BH 对应上表的功能码 前 4 位是目的 CPU 号, 后四位是源 CPU 号 设定要写的 PC 中保持寄存器的起始地址, Reference NO. 占用两个字节 Number of registers(n) 写寄存器的数量 Data 1 Data n 写入到寄存器的值 写入到寄存器的值 应答 ength:08h SFC:0BH 注释响应的长度, 占用两个字节 与发送的命令码对应与发送的命令码相反 Not Used Numbers of registers(n). 写入的保持寄存器的数量 3 PC 通信程序设计 1) 安川 PC 程序设计安川 PC 提供了两条用于 PC 控制器之间或 PC 与计算机通讯的指令 MSG-SND 和 MSG_RCV 其中 MSG-SND 主要用于 PC 向 PC 或者 DCS 等控制器发送数据 ;MSG-RCV 用于 PC 控制器之间或者 PC 和计算机之间的通讯 对于本例来说, 我们定义安川 PC 为 Master, 西门子 PC 做 Slave 因此安川 PC 只需要 MSG-RCV 的指令就
可以实现安川 PC 与西门子的通讯 MSG-RCV 指令梯形图, 如下所示 : MSG-RCV EXECUEU BUSY ABOR COMPEEE DEV-YP ERROR PRO-YP CIR-NO CH-NO PARAM 需要配置的主要参数如下 : DEV-YP:6, 表示通讯设备是 218IF 系列 PRO-YP:1, 表示通讯协议采用 Extended MEMOBUS CIR-NO :2, 表示通讯回路号, 可设为 1-8, 需要与在 CP-717 模块组成 中的设置相一致 CH-NO:1, 表示发送接收缓冲区号 可设为 1-10 PARAM00 的高字节 : 查看通讯过程的错误 PARAM01: 表示通讯模块的状态 PARAM02: 表示远程连接号, 同样需要与在 CP-717 模块组成 中的设置相一致 PARAM12: 表示可以 Write 的最低地址 PARAM13: 表示可以 Write 的最高地址
通讯实例程序如下 : 上图为通过 CP-717 配置的 218XB 模块 它的 IP 地址设置为 :192.168.21.99, 西门子 PC 的 IP 地址要和它在一个网段 PC 梯形图程序如下 :
2) 西门子 PC 程序设计西门子 PC 通信程序遵循 Memobus 协议, 以功能码 01H( 读线圈状态 ) 为例, 来讨论在西门子 PC 系统一侧与安川 PC 系统直连的通信实现 网络配置如下图 : PC S 编程代码如下 : B#16#11 "SendBuffer".Commandype
B#16#0 "SendBuffer".IdentificationNO B#16#0 "SendBuffer".DestinationCHNO B#16#11 "SendBuffer".SourceCHNO B#16#13 "SendBuffer".Aength1 B#16#0 "SendBuffer".Aength1 B#16#7 "SendBuffer".ength1 B#16#0 "SendBuffer".ength2 B#16#20 "SendBuffer".MFC B#16#1 "SendBuffer".FunctionCodes B#16#12 "SendBuffer".CPUNO
B#16#0 "SendBuffer".RefNO B#16#1 "SendBuffer".Status[1] A "Comm_En" = 0.0 BD 103 CA "AG_SEND" AC :=0.0 ID :=2 ADDR :=W#16#3FFD SEND :=P#DB200.DBX0.0 BYE 21 EN :=19 DONE :="FC_DONE" ERROR :="FC_Err" SAUS:="FC_SA" 4 结语基于 CP/IP 的嵌入式协议应用越来越广泛 本文中对 Mneobus 协议做了较为详尽的描述外, 还给出了详细的代码, 对其他品牌 PC 间采用 Memobus 协议进行通讯有着广泛的指导意义 参考文献 [1] 廖常初. PC 编程及应用 [M ]. 北京 : 机械工业出版社,2005. [2] 谢希仁. 计算机网络 [M ]. 北京 : 电子工业出版社,2003. [3] 阳宪惠. 工业数据通信与控制网络 [M]. 北京 : 清华大学出版社,2003.