UART定义,传输的数据按照下述的顺序进行传输:
1. 开始位
用于标识数据传输的开始,这位通常为逻辑“0”值
2. 数据位
一列数据位,用于传输的数据
3. 检验位(可选)
接收段进行数据检测,这位是可选的
4. 停止位
标识数据传输的结束,通常为逻辑“1”值
为了进行通信,两个设备之间必须定义一些相关参数,这些参数包括:
波特率
数据位的长度
检验位
停止位
第四章 MODBUS协议
该章节包括一些MODBUS协议的主要参数的简要描述,以便于理解海洛斯设备如何方便的整合到MODBUS网络鲜中。仅包含一些基本的规则,如果需要进一步的了解,需阅读后续内容。MODBUS协议工作于主---从环境中,也就是说在MODBUS网络中只能有一个设备能够向其他设备发送请求,这个设备称为“master”;
MODBUS网络中其他的设备只能响应从master设备中接收到的信息自己并不初始化一个传输,这个设备称为“slaves”
Slaves对请求进行响应时在发送的数据包中包含一个地址值。
4.1 Modubus-地址
Master向slaver发送请求命令后,需要得到slaver的响应,在发送命令时需要包含slaver的地址值。因此在Modbus网络中每一个slaver设备必须有网络中独一无二的地址。
Master设备不需要地址值,是由于在modbus网络中只有一个Master设备,因此所有来自slaver设备的响应能自动发送至master设备。
在Modbus协议中每一个请求命令中预留一个字节的地址用于标识slaver设备。协议定义有效的地址值是0-247,0地址用于广播使用,广播能够被所有的slaver设备接收到。
因此0不是有效的地址,1-247能够用于作为slaver的地址。
4.2 Modubus数据类型
Modubus协议定义了四种数据类型,通过使用不同的Modubus功能能够接收不同的数据类型:
Coil:
数字值,能够读与写
Input:
数字值,只能读。
Holding Register:
模拟值,能够读与写。通常,一个“Holding Register”是16位数值,一般这个数值是正数,尽管当与H结合时一些数值被解释为无符号整数。
Input Register:
模拟值,只能读。通常“Input Register”是一个16位数值。
Modubus协议定义这些数据类型绷钩使用16位数值进行标记。也就是说网络上的每一个slaver设备能够包含有每一种类型的数据的最大值为65536
4.3 Modubus功能
功能 |
Modubus定义 |
含义 |
01 |
读取Coil状态 |
用于读取数字输出 |
02 |
读取输入状态 |
用于读取数字输出 |
03 |
读取Holding Register |
用于读取模拟输出 |
04 |
读取输入寄存器 |
用于读取模拟输出 |
05 |
强迫单独的coil |
用于设置数字输出 |
06 |
预设单个寄存器 |
用于设置模拟输出 |
16 |
预设多个寄存器 |
用于设置多个模拟输出 |
08-00 |
返回查询的数值 |
诊断功能:接收到的请求不做改变返回 |
08-01 |
重起通信选项 |
诊断功能:重新启动通讯在“强迫监听模式之后” |
08-04 |
强迫监听模式 |
诊断功能:海洛斯Link不对请求做任何回答直到“重起通信选项”被接收到。 |
4.4 举例
4.4.1 读取Holding寄存器或者Input寄存器
请求
Slave标识符 功能代码 第一个寄存器地址 寄存器数量 检验和
响应
Slave标识符 功能代码 字节数 第一个寄存器值 最后一个寄存器数值 检验和
如果一个数值由两个字节组成高字节总是首先被发送
Slave标识符
这个字节定义那一个slave响应请求。在请求和响应中数值相同。
功能代码
这个字节表明slave应该响应那个功能。当读取Holding寄存器时数值为3,如果读取Input寄存器时设置为4。请求和响应中数值相同。
第一个寄存器地址:
定义读取第一个寄存器。在请求中寄存器的数量从0开始,尽管寄存器的开始从1开始计数。因此如果读取1#Holding寄存器,你必须向寄存器地址发送0;
寄存器数量
定义slave应该返回的寄存器数值;
字节数量:
定义除检验和之外数据的内容是多少字节;
寄存器数量:
定义slave应该返回的寄存器数值得个数;
寄存器值:
这个寄存器包含着被请求的寄存器的数值;
4.4.2读取Coils或者Input状态
请求
SlaveID 功能代码 第一个寄存器地址 寄存器数量 检验和、
应答
SlaveID 功能代码 字节数 寄存器值 寄存器值 检验和
功能代码
当读取Coils时,功能代码设置为1,当读取Input状态时功能代码设置为2。
4.4.3写入Holding寄存器或者Coil
请求:
SlaveID 功能代码 寄存器地址 寄存器数值 检验和
应答:
SlaveID 功能代码 寄存器地址 寄存器数值 检验和
当向Holding寄存器写入数值时,功能代码为6,当向Coild写入功能代码为5。
寄存器数值
定义应该向寄存器写入的数值。当在Coil是如果设置为OFF时数值为0000,如果设置为ON时数值为FF00
4.4.4错误响应
错误响应:
SlaveID 功能代码 错误号 检验和
第五章 海洛斯特别声明
1、 兼容性
2、 状态报告
每一种海洛斯类型定义输入寄存器1#-------6#为“状态报告块”并定义1#Holding寄存器作为“状态报告应答”。
状态报告块由下述方式构成:
输入寄存器 |
用法 |
描述 |
1 |
事件ID |
ID代表事件 |
2 |
控制ID |
控制ID,事件发生的地方 |
3 |
分钟 |
事件发生的分钟 |
4 |
小时 |
事件发生的小时 |
5 |
日期 |
事件发生的日期 |
6 |
事件类型 |
0— 〉消息,1—〉警告
2—〉警示,3,4—〉重新设置 |
如果海洛斯数据类型不能提供ControllerID或者事件发生的日期,Link将会将这些寄存器设置为0
当打开Link后,Link开始为可能已经连接上的Hiromatics扫描Hironet。当找到一个Hiromatic,Link拷贝Hiromatics状态报告到自己的内存中。当在Hironet中找到一个新的Hiromatic,Link设置”状态报告块”的“Event-ID”设置为100,表示“单元连接成功”。
5.4状态报告
状态报告块由构成如下:
输入寄存器 用处 描述
1# 事件ID 代表事件
2# 控制器ID 控制器ID,表示事件发生的位置
3# 分钟 事件发生时间中的分钟
4# 小时 事件发生时间中的小时
5# 日期 事件发生时间中的日期
6# 事件类型 0—〉信息,1—〉报警
2—〉警告,3和4—〉重新设置
如果Hiromatic类型没有提供控制器ID或者事件的时间和日期,HiroLink将寄存器设置为0。
打开HiroLink,开始扫描Hiromatic可能连接的Hiro网络。一旦扫描到一个Hiromatic,HiroLink将Hiromatic的状态报告进入自己的内存。当一个新的Hiromatic在Link上找到时,Link设置“状态报告块”的“事件ID”为预先定义的值100,代表单元连接。
5.4.1计算时间的日期
“date”:年*512+月*32+日
年=date/512
日期=date-年/512
月=date/32
日期=日期-月*32
日=Date
步骤二
海洛斯网络设定值通常在“SYSTEM-SETUP”页面找到。
ID号:
ID号用于指定Modbus-Slave-ID,用于从海洛斯设备中获取数据。在Link协议中ID号必须唯一。因此每一个海洛斯设备接受不同的标识符就很重要。
建议ID号设置完成后,注意收集步骤一中的软件信息,它便于对海洛斯空调的位置进行标记。
波特率:
低于2.81版本的Link必须将波特率设置为20833,2.81版本以上的软件可以混合使用不同的波特率。
|