佳力图机房专用空调KN10控制器
ModbusRTU通信协议(20140915)
1.1范围
KN10空调控制器支持ModBus RTU通信协议(ModBus是Modicon公司的注册商标),通信协议详细地描述了控制器的输入和输出命令、信息和数据,以便第三方使用和开发。
1.2物理接口
连接UI面板的通信口采用工业标准串行RS485 通讯口,UI口地址固定为119。
控制系统CAN-BUS总线网络通过1台CAN/RS485网关实现上位机与网络上任意一台空调主机设备的点对点主从通讯。主机设备的地址 = 网络组号*32 + 机器号。(注:零号地址保留)
数据格式:起始位1 位,数据位8 位,停止位1 位,无校验,数据传输缺省速率为9600b/s。
1.3通信方式
MODBUS RTU采用主从式结构,信息和数据在UI面板/上位机和空调控制器主板之间有效地传递,允许
UI面板/上位机访问KN10空调控制器的相关数据以及发送控制命令。本协议在应用系统中所处的位置如下图所示:
图 错误!文档中没有指定样式的文字。‐1 上位机监控示意图
1.4MODBURTU通信协议详述
1.4.1数据字节格式描述
信息传输为异步方式,并以字节为单位,每个字节由8 位二进制数组成: 表格 错误!文档中没有指定样式的文字。-1 通迅格式
起始位 1位
数据位 8位
奇偶校验位 无校验
停止位 1位
流控 无流控
通讯速率 9600bps
1.4.2数据帧结构描述
通讯主要流程如下图:
write的返回值图 错误!文档中没有指定样式的文字。-2 通讯流程 每个数据帧组成如下:(RTU模式)
表格 错误!文档中没有指定样式的文字。-2 帧结构
地址码 功能码 数据信息 CRC校验
8 位 8 位 N*8 位 16位
1.地址码
地址码是每次数据帧的第一字节(8 位),表明由用户设置地址的从机将接收由主机发送来的信息。每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送信息。当从机回送信息时,回送数据均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机返回的地址码表明回送的从机地址。相应的地址码表明该信息来自于何处。地址范围为0x01—0xFF,0xFF 为广播地址,设备解析命令代码后不允许有数据返回。
2.功能码
功能码是每次数据帧传送的第二个字节,ModBus通讯协议可定义的功能码
为1,2,3,4,5,6,7,11,12,15,16,17,20,21,22,23,24。KN10
空调控制器仅用到其中的一部分功能码。作为主机请求发送,通过功能码告诉从机应执行什么动作。作为从机响应,从机返回的功能码与从主机发送来的功能码一样,并表明从机已响应主机并且已进行相关的操作。
KN10空调控制器用到的MODBUS 部分功能码
表格 错误!文档中没有指定样式的文字。-3 MODBUS功能码
功能码 定 义 说明
1 01H Read Coil Status 读取输出继电器位状态
2 02H Read Input Status 读取输入继电器位状态
3 03H Read Holding Registers读取保持寄存器数值
4 04H Read Input Registers 读取只读寄存器数值
5 05H Force Single Coil 改写一个输出继电器位状态
6 06H Preset Single Register改写一个保持寄存器值
15 0FH Force Multiple Coils 改写多个输出继电器位状态
16 10H Load Multiple Register改写多个保持寄存器值
3.数据区
数据区包括需要由从机返回何种信息或执行什么动作。这些信息可以是数据、参考地址等。
4.错误校验码(16 位CRC 校验)
主机或从机可用校验码进行判别接收信息是否正确。由于电子噪声或一些其它干扰,信息在传输过程中有时会发生错误,错误校验码(CRC)可以检验主机或从机在通讯数据传送过程中的信息是否有误,错误的数据可以放弃(无论是发送还是接收),这样增加了系统的安全和效率。
MODBUS 通讯协议的CRC(冗余循环码)包含2个字节,即16位二进制数。CRC 码由发送设备(主机)计算,放置于发送信息帧的尾部(CRC 高字节在前)。接收信息的设备(从机)再重新计算接收到信息的CRC,比较计算得到的CRC 是否与接收到的相符,如果两者不相符,则表明出错。
计算步骤为:
1)预置16 位寄存器为十六进制FFFF(即全为1),称此寄存器为CRC 寄存
器;
2)把第一个8 位数据与16 位CRC 寄存器的低位相异或,把结果放于CRC
寄存器;
3)把寄存器的内容右移一位(朝低位),用0 填补最高位,检查最低位
4)(注意:这时的最低位指移位前的最低位,不是移位后的最低位);
5)如果最低位为0:重复第3 步(再次移位),如果最低位为1:CRC 寄存
器与多项式A001H(1010000000000001B)进行异或;
6)重复步骤3 和4,直到右移8 次,这样整个8 位数据全部进行了处理;
7)重复步骤2 到步骤5,进行下一个8 位数据的处理;
8)最后得到的CRC 寄存器即为CRC 码。
1.5传输格式
1.5.1命令报文格式
1)Read Coil Status
功能码“01H”能读取位元,本系统中主要用于读取开关机状态。
表格 错误!文档中没有指定样式的文字。-4
地址功能码 起始地址 数据个数 CRC
01 01 高位低位高位低位高位低位
返回
表格 错误!文档中没有指定样式的文字。-5
地址功能码 字节个数数据 CRC
01 01 N 数据(8位)1..N高位低位
通信数据举例:
命令数据: Length: 0008, Data: 01 01 00 00 00 01 FD CA
返回数据: Length:0006, Data: 01 01 01 01 90 48
2)Read Input Status
功能码“02H”能读取位元,本系统中主要用于读取空调各部件状态和运行状态。
表格 错误!文档中没有指定样式的文字。-6
地址功能码 起始地址 数据个数 CRC
01 02 高位低位高位低位高位低位
返回
表格 错误!文档中没有指定样式的文字。-7
地址功能码 字节个数数据 CRC
01 02 N 数据(8位)1..N高位低位
通信数据举例:
命令数据: Length: 0008, Data: 01 02 00 00 00 07 39 C8
返回数据: Length: 0006, Data: 01 02 01 26 20 52
3)Read Holding Registers
功能码“03H”能够访问所有输入寄存器,主要用于读取空调的设置参数和时钟。
表格 错误!文档中没有指定样式的文字。-8
地址功能码 起始地址 数据个数 CRC
01 03 高位低位高位低位高位低位
返回
表格 错误!文档中没有指定样式的文字。-9
地址功能码 字节个数数据 CRC
01 03 N 数据(8位)1..N高位低位
通信数据举例:
命令数据: Length: 0008, Data: 01 03 00 00 00 07 04 08
返回数据: Length: 0019, Data: 01 03 0E 00 09 00 08 00 1B 00 05 00 0F 00 37 00 15 17 4C
4)Read Input Registers
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论