hspy系列可编程电源通讯协议
时间:2013-10-13 阅读:9500
-
提供商
北京汉晟普源科技有限公司 -
资料大小
18086 -
资料图片
-
下载次数
574次 -
资料类型
rar -
浏览次数
9500次
时间:2013-10-13 阅读:9500
提供商
北京汉晟普源科技有限公司资料大小
18086资料图片
下载次数
574次资料类型
rar浏览次数
9500次
北京汉晟普源科技有限公司
HSPY系列可编程稳压电源通讯协议
HSPY系列仪表采用RS232或者RS485传输标准与计算机通迅,详细资料如下:
注(本机只支持功能码03,10)
波特率:1200,2400,4800,9600,19200
起始位:1
数据位:8
校验位:无
停止位:1
一.MODBUS_RTU帧结构
消息发送至少要以3.5个字符时间的停顿间隔开始;整个消息帧必须作为一连续的数据传输流,如果在帧完成之前有超过3.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。
一帧信息的标准结构如下所示:
开始 | 地址域 | 功能域 | 数据域 | CRC校验 | 结束 |
T1-T2-T3-T4 | 8Bit | 8Bit | n个8Bit | 16Bit | T1-T2-T3-T4 |
地址域: 主机通过将要联络的从机的地址放入消息中的地址域来选通从设备,单个从机的地址范围是1…15(十进制)。
地址0是用作广播地址,以使所有的从机都能认识。
功能域:有效的编码范围是1…255(十进制);当消息从主机发往从机时,功能代码将告之从机需要去干什么。例如:读/写一组寄存器的数据内容等。
数据域:主机发给从机的数据域中包含了从机完成功能域的动作时所必要的附加信息;如:寄存器地址等。
CRC校验:CRC生成之后,低字节在前,高字节在后。
注:本仪表通讯时帧与帧之间的响应间隔,通讯速率大于等于9600bps时不大于5ms
序号 | 名称 | 说明 | 范围 | 小数点位数 | 读写 | 参数通讯地址 |
1 | Set-U | 电源的电压设定值 | 0-65535 | 2 | r/w | 1000H |
2 | Set-I | 电源的电流设定值 | 0-65535 | 3 | r/w | 1001H |
3 | U | 电源的电压显示值 | 0-65535 | 2 | r | 1002H |
4 | I | 电源的电流显示值 | 0-65535 | 3 | r | 1003H |
5 | Run-Stop | 电源输出/停止设定 | 0,1 | 0 | r/w | 1004H |
6 | RS-Adder | 通讯地址设定 | 0~255 | 0 | r/w | 1005H |
7 | Key_Lock | 按键锁定 | 0,1 | 0 | r/w | 1006H |
MODBUS RTU 通讯协议
通讯数据的类型及格式:
信息传输为异步方式,并以字节为单位。在主站和从站之间传递的通讯信息是10位的字格式:
字格式(串行数据) | 10位二进制 |
起始位 | 1位 |
数据位 | 8位 |
奇偶校验位 | 无 |
停止位 | 1位 |
● 通讯数据(信息帧)格式
数据格式 | 地址码 | 功能码 | 数据区 | CRC校验 |
数据长度 | 1字节 | 1字节 | N字节 | 16位CRC码(冗余循环码) |
一、 通讯信息传输过程:
当通讯命令由发送设备(主机)发送至接收设备(从机)时,符合相应地址码的从机接收通讯命令,并根据功能码及相关要求读取信息,如果CRC校验无误,则执行相应的任务,然后把执行结果(数据)返送给主机。返回的信息中包括地址码、功能码、执行后的数据以及CRC校验码。如果CRC校验出错就不返回任何信息。
1.1 地址码:
地址码是每次通讯信息帧的*字节(8位),从0到255。这个字节表明由用户设置地址的从机将接收由主机发送来的信息。每个从机都必须有*的地址码,并且只有符合地址码的从机才能响应回送信息。当从机回送信息时,回送数据均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机返回的地址码表明回送的从机地址。相应的地址码表明该信息来自于何处。
1.2 功能码:
是每次通讯信息帧传送的第二个字节。ModBus通讯规约可定义的功能码为1到127。作为主机请求发送,通过功能码告诉从机应执行什么动作。作为从机响应,从机返回的功能码与从主机发送来的功能码一样,并表明从机已响应主机并且已进行相关的操作。
表8.1 MODBUS部分功能码
功能码
| 定 义
| 操 作(二进制) |
02 | 读开关量输入DI | 读取一路或多路开关量状态输入数 (遥信) |
01 | 读状态量输出OUT | 读取一路或多路开关量输出状态数据 |
03 | 读寄存器数据 | 读取一个或多个寄存器的数据 |
05 | 写开关量输出OUT | 控制一路继电器“合/分”输出,遥控 |
06 | 写单路寄存器 | 把一组二进制数据写入单个寄存器 |
10 | 写多路寄存器 | 把多组二进制数据写入多个寄存器 |
1.3 数据区:
数据区包括需要由从机返送何种信息或执行什么动作。这些信息可以是数据(如:开关量输入/输出、模拟量输入/输出、寄存器等等)、参考地址等。例如,主机通过功能码03告诉从机返回寄存器的值(包含要读取寄存器的起始地址及读取寄存器的长度),则返回的数据包括寄存器的数据长度及数据内容。对于不同的从机,地址和数据信息都不相同(应给出通讯信息表)。
HSPY系列电源采用Modbus通讯规约,主机(PLC、RTU、PC机、DCS等)利用通讯命令(功能码03),可以任意读取其数据寄存器(其数据信息表详见附录)。
HSPY响应的命令格式是从机地址、功能码、数据区及CRC码。数据区的数据都是两个字节,并且高位在前。
4.静止时间要求
发送数据前要求数据总线静止时间即无数据发送时间大于(5ms 波特率为9600时).
二、 MODBUS功能码简介(HSPY可编程电源只支持以下功能码)
2.1 功能码“03”:读多路寄存器输入
例如:主机要读取地址为01,起始地址为1000的2个从机寄存器数据。
从机数据寄存器的地址和数据为:
寄存器地址 | 寄存器数据(16进制) | 对应参数 |
1000 | 0E10(36.00V) | Set-U |
1001 | 0BB8(3.000A) | Set_I |
|
|
|
主机发送的报文格式:
主机发送 | 字节数 | 发送的信息 | 备 注 |
从机地址 | 1 | 01 | 发送至地址为01的从机 |
功能码 | 1 | 03 | 读寄存器 |
起始地址 | 2 | 1000 | 起始地址为0000 |
读数据长度 | 2 | 0002 | 读取3个寄存器(共6个字节) |
CRC码 | 2 | C0CB | 由主机计算得到CRC码 |
从机响应返回的报文格式:
从机响应 | 字节数 | 返回的信息 | 备 注 |
从机地址 | 1 | 01 | 来自从机01 |
功能码 | 1 | 03 | 读寄存器 |
数据长度(字节数) | 1 | 04 | 共4个字节 |
寄存器1的数据 | 2 | 0E10 | 地址为0000寄存器的内容 |
寄存器2的数据 | 2 | C0CB | 地址为0001寄存器的内容 |
CRC码 | 2 | 6089 | 由从机计算得到CRC码 |
2.5 功能码“10”:写多路寄存器
主机利用这个功能码把多个数据保存到HSPY电源的数据存储器中去。Modbus通讯规约中的寄存器指的是16位(即2字节),并且高位在前。这样HSPY的存储器都是二个字节。
例如:主机要把0E10保存到地址为1000的从机寄存器中去(从机地址码为01)。
主机发送的报文格式:
主机发送 | 字节数 | 发送的信息 | 备 注 |
从机地址 | 1 | 01 | 发送至地址为01的从机 |
功能码 | 1 | 10 | 写多路寄存器 |
起始地址 | 2 | 1000 | 要写入的寄存器的起始地址 |
保存数据长度 | 2 | 0001 | 保存数据的字长度 |
保存数据字节长 | 1 | 02 | 保存数据的字节长度(4字节) |
保存数据1 | 2 | 0E10 | 待写入1000地址的数据 |
CRC码 | 2 | B23D | 由主机计算得到CRC码 |
从机响应返回的报文格式:
从机响应 | 字节数 | 发送的信息 | 备 注 |
从机地址 | 1 | 01 | 发送至地址为01的从机 |
功能码 | 1 | 10 | 写多路寄存器 |
起始地址 | 2 | 1000 | 要写入的寄存器的起始地址 |
保存数据长度 | 2 | 0001 | 保存数据的字长度 |
CRC码 | 2 | 0509 | 由从机计算得到CRC码 |
主机或从机可用校验码进行判别接收信息是否正确。由于电子噪声或一些其它干扰,信息在传输过程中有时会发生错误,错误校验码(CRC)可以检验主机或从机在通讯数据传送过程中的信息是否有误,错误的数据可以放弃(无论是发送还是接收),这样增加了系统的安全和效率。
MODBUS通讯协议的CRC(冗余循环码)包含2个字节,即16位二进制数。CRC码由发送设备(主机)计算,放置于发送信息帧的尾部。接收信息的设备(从机)再重新计算接收到信息的CRC,比较计算得到的CRC是否与接收到的相符,如果两者不相符,则表明出错。
● CRC码的计算方法是:
1、预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存器;
2、把*个8位二进制数据(既通讯信息帧的*个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器;
3、把CRC寄存器的内容右移一位(朝低位)用0填补zui高位,并检查右移后的移出位;
4、如果移出位为0:重复第3步(再次右移一位); 如果移出位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;
5、重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;
6、重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;
7、将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换;
8、zui后得到的CRC寄存器内容即为:CRC码。
北京汉晟普源科技有限公司
2010年4月28日