资源描述
ISCS与子接口协议
版本: V 1.1
南京南瑞集团企业
修订统计
版本
日期
起草
审阅
交叉审阅
备注
V1.0
-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协议获取简便(访问.com), 且便于实现。
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出现部分将依据实际点表定义。
展开阅读全文