资源描述
ISCS与子接口协议
版本:V 1.1
南京南瑞集团公司
- 8 -
ISCS与子系统接口协议
修订记录
版本
日期
起草
审阅
交叉审阅
备注
V1.0
2010-07-27
陆艮峰
初稿
1 通信接口
基于以太网的MODBUS TCP/IP协议
ISCS系统的FEP(前端处理器)配置为主机,子系统的通讯设备配置为从机。ISCS系统每500ms向子系统 发送一次轮询报文。
2 MODBUS TCP/IP 协议
2.1 协议概述
MODBUS TCP/IP协议在应用层采用MODBUS信息定义,在传输层和网络层采用TCP/IP,用于以太网通讯。MODBUS TCP/IP协议和OSI各层之间的对应关系由下图表示:
(图片来源于MODBUS.org:参考OSI模型的应用层模型)
19世纪70年代MODBUS协议初次发布,至今已经在工业自动化领域广泛应用。MODBUS协议获取简便(访问),且便于实现。
MODBUS协议本身没有变化,但对报文的发送方式和速率作了改变,以满足工业应用的实时性需求。MODBUS/TCP由此产生。
MODBUS TCP/IP就是简单地将MDOBUS帧嵌入到TCP帧中。TCP/IP的请求/应答机制能和MODBUS本身的主/从机制很好的配合工作。
2.2 报文格式组成(标准MODBUS TCP/IP)
报文格式组成:
报头
功能码
数据
报头描述:
字段
客户端
服务端
事务标识
由客户端初始化
服务端从接收到的请求中拷贝
协议标识
由客户端初始化
服务端从接收到的请求中拷贝
长度
由客户端初始化
服务端初始化 (应答)
单元标识
由客户端初始化
服务端从接收到的请求中拷贝
事务标识:
用于事务配对。MODBUS服务端在应答时拷贝来自客户端请求的事务标识。
请求和应答通过事务标识相对应。因此,在同一时间,TCP连接的事务标识必须是唯一的。有几种方式应用事务标识。比如简单计数“TCP顺序号”,每次请求时加1。
协议标识:
用于系统内的多元标识。MODBUS协议用‘0’标识。
长度:
长度字段以字节计数,包括单元标识和数据字段。
单元标识:
该字段用于系统内路由。其典型应用为请求和服务器应答报文返回值在该字段值必须相同。
在某些情况下,单元标识携带远程设备的MODBUS从机地址。但在TCP/IP层,MODBUS服务端用其IP地址寻址,因此MODBUS单元标识就没有实际意义。此时该字段值为0xFF。
顺序号的应用:
Ø 对于每个信息,MODBUS MASTER (ISCS FEP) 会给MODBUS SLAVE (子系统)初始化/制造顺序号;
Ø MODBUS SLAVE (子系统)的响应信息应使用从MODBUS MASTER (ISCS FEP)发出的相同的顺序号;
Ø ISCS FEP应确认从子系统收到的顺序号与之前发送给子系统的顺序号相同;
ISCS FEP增加顺序号数值的原则:
Ø 顺序号应用两个字节来储存;
Ø 顺序号的范围应是(0-65535)或(0x0000 to 0xFFFF);
Ø 顺序号的初始数值应是0;
Ø 对于每个发出的信息,包括用于正常轮询、故障轮询、重试信息或控制,ISCS FEP应把顺序号数值增加1;
Ø 如果ISCS FEP发现子系统的响应信息的顺序号有错误,应不理会该信息,并宣布通讯状态欠佳。
2.3 报文详述
本文中定义的寄存器地址将根据子系统供应商最终提供的IO点类表作相应的修改。
2.3.1 功能码0x04(读输入寄存器)
例如:ISCS向子系统发送查询帧,获取子系统设备状态:
Description 描述
Size(Byte)长度(字节)
Definition含义
Header报头
Transaction Identifier 事务标识
2
TCP SEQUENCE NUMBER TCP 顺序号
Protocol Identifier协议标识
2
0x0000(Modbus Tcp为0)
Length长度
2
0x0006
Unit Identifier单元标识
1
0xFF (Modbus Tcp总为0xFF)
Modbus Data
Modbus数据
Function Code功能码
1
0x04
Starting Address起始地址
2
0x XXXX (根据实际情况定义)
Number of Registers寄存器数量
2
N(最大为125个寄存器)
子系统向ISCS返回响应
Description描述
Size(Byte)长度(字节)
Definition含义
Header
报头
Transaction Identifier 事务标识
2
TCP 顺序号(从客户端请求中拷贝)
Protocol Identifier协议标识
2
0x0000(从客户端请求中拷贝)
Length长度
2
2*N+3
Unit Identifier 单元标识
1
0xFF
Modbus Data
Modbus数据
Function Code 功能码
1
0x04
Byte Count 字节个数
1
2*N(N最大为125个寄存器)
子系统发送到ISCS的数据如果超过125个寄存器,ISCS可以轮询多次。
Data (as requested)请求的数据
2*N
0xXX………XX(根据实际点表定义)
注:本表中N、X出现的部分将根据实际点表定义。
2.3.2 功能码0x10(预置多寄存器)
例如:ISCS向子系统发送信息:
Description 描述
Size(Byte)
长度(字节)
Definition含义
Header报头
Transaction Identifier 事务标识
2
TCP SEQUENCE NUMBER TCP 顺序号
Protocol Identifier 协议标识
2
0x0000
Length 长度
2
2*N+7(最大为125个寄存器)
Unit Identifier 单元标识
1
0xFF
Modbus Data
Modbus数据
Function Code 功能码
1
0x10
Write Starting Address 写起始地址
2
0x XXXX(根据实际点表定义)
NUMBER OF REGISTERS 寄存器个数
2
N(最大为125个寄存器)
Byte Count 字节个数
1
2*N(N最大为125个寄存器)
子系统发送到ISCS的数据如果超过125个寄存器,ISCS可以轮询多次。
Data 数据
2*N
0xXX………XX(根据实际点表定义)
子系统向ISCS返回响应:
Description 描述
Size(Byte)
Definition 含义
Header报头
Transaction Identifier 事务标识
2
TCP 顺序号(从客户端请求中拷贝)
Protocol Identifier 协议标识
2
0x0000(从客户端请求中拷贝)
Length 长度
2
0x0006
Unit Identifier 单元标识
1
0xFF(从客户端请求中拷贝)
Modbus Data
Modbus数据
Function Code 功能码
1
0x10
Write Starting Address 写起始地址
2
0x XXXX(和客户端请求地址一致)
NUMBER OF REGISTERS 寄存器个数
2
N(和客户端请求寄存器数一致)
注:本表中N、X出现的部分将根据实际点表定义。
2.3.3异常处理
异常处理的目的是:当通讯故障时,向客户端提供与故障相关的信息。
Ø 响应功能码=请求功能码+ 0x80;
Ø 错误功能码用于提示错误原因。
目前使用的异常码是:01,02,03和04。
异常码
名称
含义
01
ILLEGAL FUNCTIAON
服务端不支持请求报文所要求的功能。
原因可能是:此功能仅仅适用于新型设备,当前使用的设备不具备此功能。
此功能码也表明:服务端(从站)处于故障状态,无法处理客户端请求。比如,服务端尚未被初始化,就被要求返回数据。
02
ILLEGAL ADDRESS
服务端不支持请求报文中数据地址。
在某些特定条件下,数据个数和数据长上度有可能不对应,从而产生此错误。
如果一个控制器总共有100个寄存器。客户端请求数据包中,如果寄存器的起始地址是96,数据长度为4,这是允许的。但是,如果寄存器的起始地址是96,数据长度是5,异常发生。因为,96+5 = 101,已经超过了控制器最大寄存器的数量。
03
ILLEGAL DATA VALUE
服务端发现 :客户端发送的数据中,包含有无效数据。
此异常表明:服务端接收到的数据包含错误。
此异常并不一定意味着:服务端接收的数据包中的,某个数据越限。因为,Modbus协议对特定寄存器的含义不作处理。
04
SLAVE DEVICE FAILURE
当服务端执行相应的功能时:发生了无法恢复的错误。
2.3.4功能码0x04(读输入寄存器)异常响应
例如:ISCS向子系统发送查询帧,获取子系统设备状态:
Description 描述
Size(Byte)长度(字节)
Definition含义
Header报头
Transaction Identifier 事务标识
2
TCP SEQUENCE NUMBER TCP 顺序号
Protocol Identifier协议标识
2
0x0000(Modbus Tcp为0)
Length长度
2
0x0006
Unit Identifier单元标识
1
0xFF (Modbus Tcp总为0xFF)
Modbus Data
Modbus数据
Function Code功能码
1
0x04
Starting Address起始地址
2
0x XXXX (假设起始地址+寄存器数量超出了服务端的最大地址)
Number of Registers寄存器数量
2
N(最大为125个寄存器)
子系统向ISCS返回异常响应
Description描述
Size(Byte)长度(字节)
Definition含义
Header
报头
Transaction Identifier 事务标识
2
TCP 顺序号(从客户端请求中拷贝)
Protocol Identifier协议标识
2
0x0000(从客户端请求中拷贝)
Length长度
2
0x03
Unit Identifier 单元标识
1
0xFF
Modbus Data
Modbus数据
Function Code 功能码
1
0x84(响应功能码)
Illegal Function Code
错误功能码
1
0x02 (非法地址,详见异常码表)
注:本表中N、X出现的部分将根据实际点表定义。
2.3.5 功能码0x10(预置多寄存器) 异常响应
例如:ISCS向子系统发送信息:
Description 描述
Size(Byte)
长度(字节)
Definition含义
Header报头
Transaction Identifier 事务标识
2
TCP SEQUENCE NUMBER TCP 顺序号
Protocol Identifier 协议标识
2
0x0000
Length 长度
2
2*N+7(N最大为125个寄存器)
Unit Identifier 单元标识
1
0xFF
Modbus Data
Modbus数据
Function Code 功能码
1
0x10
Write Starting Address 写起始地址
2
0x XXXX(假设起始地址+寄存器数量超出了服务端的最大地址)
NUMBER OF REGISTERS 寄存器个数
2
N(最大为125个寄存器)
Byte Count 字节个数
1
2*N(N最大为125个寄存器)
Data 数据
2*N
0xXX………XX(根据实际点表定义)
子系统向ISCS返回异常响应
Description描述
Size(Byte)长度(字节)
Definition含义
Header
报头
Transaction Identifier 事务标识
2
TCP 顺序号(从客户端请求中拷贝)
Protocol Identifier协议标识
2
0x0000(从客户端请求中拷贝)
Length长度
2
0x03(实际长度)
Unit Identifier 单元标识
1
0xFF(从客户端请求中拷贝)
Modbus Data
Modbus数据
Function Code 功能码
1
0x90(响应功能码)
Illegal Function Code
错误功能码
1
0x02 (非法地址,详见异常码表)
注:本表中N、X出现的部分将根据实际点表定义。
展开阅读全文