Haier0529滚筒洗衣机通讯协议.docx
《Haier0529滚筒洗衣机通讯协议.docx》由会员分享,可在线阅读,更多相关《Haier0529滚筒洗衣机通讯协议.docx(19页珍藏版)》请在冰豆网上搜索。
Haier0529滚筒洗衣机通讯协议
滚筒洗衣机用异步通讯协议()
编制
审核
会签
批准
青岛海尔科技有限公司
2007年05月30日
软件版本:
WORD2003
适用范围:
此通讯协议适用于滚筒洗衣机通用电源板平台与主控板之间的通讯。
通讯方式:
通讯采用UART的半双工方式,TxD和RxD用一根共有的通讯线,以主从方式进行数据传送。
由于洗涤流程,用户控制等功能集中在主控板上,而负载的驱动、开关等功能集中在电源板上,所以定义主控板为主机(Master),电源板为从机(Slave)。
主机负责向从机发送控制指令及查询从机状态的指令,从机则根据收到的指令完成负载的开关、电机转停的设定等功能,并向主机反馈控制状态。
数据传送从用帧的方式,每一帧为10位,如图1所示,其中包括1位起始位(以低电平表示)、8
位有效数据位(高电平表示“1”,低电平表示“0”)和1位停止位(以高电平表示)。
UART波特率采
用1200bps,即每个数据位的传送时间”FL”约为。
接收方以接收到第一个低电平(起始位)标志通讯的开始,以准备接收后面的8位有效数据。
FL
图1
数据校验:
考虑到通用电源板需与多种主控板进行匹配,为进一步降低通讯中的误码率,此异步半双工串口通讯的数据校验采用8位CRC校验,其生成多项式为x8+x7+x4+x3+x+1(0x19B),校验初始值
为0x00。
发送方完成一次完整的数据发送后,接受方所得到的有效数据最多为8字节。
由生成多项式0x19B所得的8位CRC校验码如下表所示:
CrcTable[256]=
□{
0x00,0x9b,0xad,0x36,0xc1,0x5a,0x6c,0xf7,
0x19,0x82,0xb4,0x2f,0xd8,0x43,0x75,0xee,
0x32,0xa9,0x9f,0x04,0xf3,0x68,0x5e,0xc5,
0x2b,0xb0,0x86,0x1d,0xea,0x71,0x47,0xdc,
0x64,0xff,0xc9,0x52,0xa5,0x3e,0x08,0x93,
0x7d,0xe6,0xd0,0x4b,0xbc,0x27,0x11,0x8a,
0x56,0xcd,0xfb,0x60,0x97,0x0c,0x3a,0xa1,
0x4f,0xd4,0xe2,0x79,0x8e,0x15,0x23,0xb8,
0xc8,0x53,0x65,0xfe,0x09,0x92,0xa4,0x3f,
0xd1,0x4a,0x7c,0xe7,0x10,0x8b,0xbd,0x26,
0xfa,0x61,0x57,0xcc,0x3b,0xa0,0x96,0x0d,
0xe3,0x78,0x4e,0xd5,0x22,0xb9,0x8f,0x14,
0xac,0x37,0x01,0x9a,0x6d,0xf6,0xc0,0x5b,
0xb5,0x2e,0x18,0x83,0x74,0xef,0xd9,0x42,
0x9e,0x05,0x33,0xa8,0x5f,0xc4,0xf2,0x69,
0x87,0x1c,0x2a,0xb1,0x46,0xdd,0xeb,0x70,
0x0b,0x90,0xa6,0x3d,0xca,0x51,0x67,0xfc,
0x12,0x89,0xbf,0x24,0xd3,0x48,0x7e,0xe5,
0x39,0xa2,0x94,0x0f,0xf8,0x63,0x55,0xce,
0x20,0xbb,0x8d,0x16,0xe1,0x7a,0x4c,0xd7,
0x6f,0xf4,0xc2,0x59,0xae,0x35,0x03,0x98,
0x76,0xed,0xdb,0x40,0xb7,0x2c,0x1a,0x81,
0x5d,0xc6,0xf0,0x6b,0x9c,0x07,0x31,0xaa,
0x44,0xdf,0xe9,0x72,0x85,0x1e,0x28,0xb3,
0xc3,0x58,0x6e,0xf5,0x02,0x99,0xaf,0x34,
0xda,0x41,0x77,0xec,0x1b,0x80,0xb6,0x2d,
0xf1,0x6a,0x5c,0xc7,0x30,0xab,0x9d,0x06,
0xe8,0x73,0x45,0xde,0x29,0xb2,0x84,0x1f,
0xa7,0x3c,0x0a,0x91,0x66,0xfd,0xcb,0x50,
0xbe,0x25,0x13,0x88,0x7f,0xe4,0xd2,0x49,
0x95,0x0e,0x38,0xa3,0x54,0xcf,0xf9,0x62,
0x8c,0x17,0x21,0xba,0x4d,0xd6,0xe0,0x7b,
};
协议格式:
以下对通讯协议的描述均为对通讯中有效数据的描述,即通讯数据的每一帧中起始位和停止位不
适用于此协议格式。
主机发送数据格式为:
报头
报文长度
操作码
数据
校验码
从机发送数据格式为:
1,当接收到来自主机的控制指令:
应答码
2,当接收到来自主机的查询指令:
报文长度数据校验码
其中,
“报头”:
0x5A
“应答码”:
0xF0(通讯成功);0x0F(通讯不成功);“报文长度”:
“操作码”的有效字节数+“数据”的有效字节数,若无“操作码”,则仅为
“数据”的有效字节数。
“校验码”:
8位CRC校验码,剔除“报头”从“报文长度”开始计算,直到“数据”结束。
“操作码”:
分为控制指令和查询指令,详见后面表格。
错误处理:
1,主控板与电源板不得无故停止通讯,以确保无任何一方发生软件或硬件的故障。
2,若电源板连续254次检测到通讯中的数据有误,如主控板传送数据位数不匹配、UART6奇偶校验错误,UART6数据帧错误、通讯软件本身错乱等,电源板将关闭所有负载,并停转电机。
直到电源板收到正确的数据为止。
3,若电源板连续10秒钟收不到来自主控板的任何数据,电源板将将关闭所有负载,并停转电机,直到电源板收到数据为止;若电源板连续20秒钟收不到来自主控板的任何数据,电源板将复位,直到电源板收到数据为止。
在软件调试阶段,此条可通过主控板发送控制指令“禁止电源板通讯超时检查”实现功能的屏蔽。
4,主控板发送完数据后,若电源板反馈回通讯数据错误标志(应答码0x0F),则主控板应将通讯口重置为发送状态,以实现下一次数据的发送,同时对通讯数据错误进行计数。
相反,主控板应在每一次完整、正确的通讯完成以后,将此计数清零。
当通讯数据错误计数达到10次时,主控板通讯程序应宣告并计数一次通讯失败。
5,主控板发送完数据后,若2秒钟内收不到电源板的任何回复,则主控板应将通讯口重置为发送状态,以实现下一次数据的发送,同时对通讯等待超时错误进行计数。
相反,主控板应在收到来自电源板的任何数据时将此计数清零。
当通讯等待超时错误计数达到2次时,主控板通讯程序应宣告并计数一次通讯失败。
6,当主控板通讯程序累计2次宣告失败,即可认为主控板与电源板之间的通讯功能丧失,主控板应进入错误报警状态(对于关机时控制器仍得电的机型,用户不开机则主控板不应报警)。
主控板在每次得电启动时都对通讯失败计数进行清零。
指令数据:
主机发送控制指令
主机发送查询指令
设定阀、泵等负载开关
0x81
查询电源板状态
0x01
设定电机转停
0x82
查询测量重量
0x02
设定变种
0x83
查询测量重量数据(测试模式)
0x03
设定开始称重
0x84
设定机器型号
0x85
设定开始称重(测试模式)
0x86
设定电机转停
0
报头
0x5A
1
数据长度
5
2
操作码
0x82
3
设定滚筒速度(高字节)
[0xFFFF..0x7FFF]rpm
正数表示顺时针
负数表示逆时针
4
设定滚筒速度(低字节)
5
设定加速度(高字节)
[0..255]rpm/
6
设定加速度(低字节)
[0..255]1/256rpm/
7
校验码
[0..255]
从机回复:
8
应答码
[0xF0|0x0F]
设定阀、泵等负载开关
0
报头
0x5A
1
数据长度
3
2
操作码
0x81
3
受控负载组1
[0..255]
4
受控负载组2
[0..255]
5
校验码
[0..255]
从机回复:
6
应答码
[0xF0|0x0F]
位
受控负载组1
注释
0
门锁
0:
关
1:
开
(对于门锁,”0”表示
开锁,”1”表示锁定)
1
洗涤加热
2
烘干加热
3
排水泵(排水电机)
4
烘干风扇
5
预洗阀
6
主洗阀
7
热水阀
位
受控负载组2
注释
0
冷凝阀
0:
关
1:
开
1
电解板
2
备用阀(泵)
3
预留
4
预留
5
预留
6
预留
7
预留
设定变种
0
报头
0x5A
1
数据长度
3
2
操作码
0x83
3
变种信息
[0..255]
4
电机传动比
(10*(皮带轮/电机轴径))
[0..255]
5
校验码
[0..255]
从机回复:
6
应答码
[0xF0|0x0F]
位
变种信息
注释
0
电机中间抽头
1:
有0:
无
1
变频功能
1:
有0:
无
2
水位传感
1:
频率式0:
开关式
3
门锁
1:
电磁式0:
PTC式
4
为主控板供电电压
1:
24V0:
12V
5
洗衣机或洗干一体机
1:
洗衣机0:
洗干一体机
6
排水设备
1:
排水泵0:
排水电机
7
预留
查询电源板状态
报头
0x5A
1
数据长度
1
2
操作码
0x01
3
校验码
[0..255]
从机回复:
4
数据长度
8
5
变种信息
[0..255]
6
状态信息
[0..255]
7
滚筒转速(高字节)
[0xFFFF..0x7FFF]rpm
正数表示顺时针
负数表示逆时针
8
滚筒转速(低字节)
9
电机状态(高字节)
[0..255]
10
电机状态(低字节)
[0..255]
11
不平衡值(加速时)
[0..255]
12
不平衡值(匀速时)
[0..255]
13
校验码
[0..255]
位
变种信息
注释
0
电机中间抽头
1:
有0:
无
1
变频功能
1:
有0:
无
2
水位传感
1:
频率式0:
开关式
3
门锁
1:
电磁式0:
PTC式
4
为主控板供电电压
1:
24V0:
12V
5
洗衣机或洗干一体机
1:
洗衣机0:
洗干一体机
6
排水设备
1:
排水泵0:
排水电机
7
变种校验
1:
电源板与主控板变种信息不匹配
0:
电源板与主控板变种信息匹配
主控板收到电源板的变种信息反馈后,将其与主控板发送的变种信息进行硬件匹配校验,若发现校验不匹配,则由主控板发出报警信息。
由于“电机中间抽头”、“水位传感”、“门锁”、“排水设备”等信息在电源板上无硬件变种进行校验,所以不能实现上述硬件匹配校验功能。
位
状态信息
注释
0
洗涤水位
1:
洗涤水位0:
空桶水位
1
溢水水位
1:
溢水0:
不溢水
2
关门状态
1:
门已关上0:
门未关上
3
锁门状态
1:
门已锁上0:
门未锁上
4
主洗阀可空硅短路
1:
短路0:
未短路
5
预洗阀可空硅短路
1:
短路0:
未短路
6
热水阀可空硅短路
1:
短路0:
未短路
7
电源板重启动标志
1:
是0:
非
主控板检测到电源板重启动后,除非对电源板进行过变种设定,否则10秒钟之内主控板不能对电机进行操作。
位
电机状态
注释
0
设定方向为右
1:
是0:
非
1
设定方向为左
2
实际方向为右
3
实际方向为左
4
电机加速时间未结束
5
无测速反馈
6
变频模块散热器过温或串激电机温控
器断路
7
变频电机短路
8
变频电机堵转
9
变频模块无电源
10
变频模块重启
11
变频模块电源过压
12
变频模块温度传感器异常
13
变频模块参数校验错误
14
IGBT/电机驱动可控硅短路
15
电源板与变频板无通讯或串激电机出
错标志位
1>新增测量衣物重量命令解析
设定开始测量衣物重量
0
报头
0x5A
1
数据长度
1
2
操作码
0x84
3
校验码
[0..255]
从机回复:
4
应答码
[0xF0|0x0F]
查询电源板测量重量
报头
0x5A
1
数据长度
1
2
操作码
0x02
3
校验码
[0..255]
从机回复:
4
数据长度
1
5
衣物重量
[0..255]
6
校验码
[0..255]
衣物重量单位:
Kg*32(1Kg=32,=48,3kg=96…7kg=224)
显示板发送开始测量重量后,就一直查询电源板的测量重量,测量完成后反馈实际重量*32,测量未完成反馈0xFF。
最长测量时间60秒。
如果电源板测量重量大于7Kg,电源板将反馈7Kg。
显示板发送开始测量重量命令后,电源板只要收到命令就开始自动测量。
因此显示板发送一次命令得到确认后,就不能再重复发送了。
如果显示板一直没收到,可以尝试重新开始测量。
(因为GE板子有可能由于某种原因没有完成测量)。
电源板在收到开始测量命令后,按照GE要求要执以下命令
停止→50rpm反转5秒→停止5秒→50rpm正转5秒→分布到100rpm15秒→最大加速度到400rpm15秒→
→降至250rpm运行10秒
然后才电源板才开始发送“开始称重命令”给GE电机。
开始执行以下流程
发送开始称重命令→检测测量状态→得到测量的重量
2>分布要求细节
显示控制板必须发送速度=90,加速度=102。
电源板收到该值并转换数据格式发送给GE电机,大约延迟40秒后直接发送GET_OOB_SCORE给GE电机,并等待回复结果。
注意该处不平衡值是一个无量纲,显示板需要根据具体情况调整不平衡值。
另外电源板将程序做了一定的处理也就是如果反馈的不平衡值>254,就取254,因为显示板与电源板的通信不平衡格式为8位数。
(加速度与平均速度不平衡值取值结果一样)
3>型号设定定义
GE电机轮直径:
表G-1
型号
电机容量(Kg)
洗涤容量(Kg)
皮带轮直径(mm)
描述
A
6
6
280
铁桶带烘干-----默认程序
B
6
6
280
塑料桶不带烘干
C
6
8
315
塑料桶烘干
D
6
8
315
塑料桶非烘干
E
8
>=8
280
1600rpm烘干
F
8
>=8
280
1600rpm非烘干
*其中目前GE电机给的桶转速为按皮带轮比率1/计算出来的。
设定电源板型号
0
报头
0x5A
1
数据长度
1
2
操作码
0x85
3
具体型号
0x0A~0x0F
4
校验码
[0..255]
从机回复:
5
应答码
[0xF0|0x0F]
电源板没有收到具体型号时,按默认A型号执行程序。
电源板在收到显示控制板发来的具体型号后,根据表G-1数据进行调整具体的转速和校准GE电机参数。
事业部或GE需要给出具体的校准参数表。
对GE校准参数表需要称干布前和开始不平衡甩干前都要执行校准指令。
4>新增测试模式-测量衣物重量数据命令解析
设定开始测量衣物重量(生产检测专用指令)
0
报头
0x5A
1
数据长度
1
2
操作码
0x86
3
校验码
[0..255]
从机回复:
4
应答码
[0xF0|0x0F]
注意:
该反馈数据是一种无量纲,以便于显示板显示GE反馈的数据。
查询电源板测量重量数据(生产检测专用指令)
报头
0x5A
1
数据长度
1
2
操作码
0x03
3
校验码
[0..255]
从机回复:
4
数据长度
2
5
衣物重量数据(高字节)
[0..255]
6
衣物重量数据(低字节)
[0..255]
7
校验码
[0..255]
显示板发送开始测量重量后,就一直查询电源板的测量数据,测量完成后电源板将GE电机反馈的实际数据原封不动的反馈给显示控制板。
显示板发送开始测量重量命令后,电源板只要收到命令就开始自动测量。
因此显示板发送一次命令得到确认后,就不能再重复发送了。
电源板收到显示板发送的命令0x86后,先给GE电机发送称重的次数,然后给GE电机发送开始称重命令,接着开始检测测量状态,如果检测到完成就开始读取测量数据,并将数据反馈给显示板。
下面是GE给的原文数据
关于ICM电机称重的线上检测,建议如下:
1、用节的“setloadmeasurementSampleCount”:
0xEE指令设置称重采样次数,1次或2次,1次需要15秒左右。
然后发指令“StartLoadMeasurement:
0xE1”,接着发指令"GetloadmeasurementStatus:
0xE2",当状态变为“1”时,发指令"GetLoadScore",该指令在附件中节,可以将读出的数的容差设为6562(+/-5%),6562是称重曲线对应空筒的LoadScore值,5%对应的公差是。
因为在称重算法里,如果读出的LoadScore值小于6562,那对应的负载重量都设为0,这就是我建议你们用LoadScore,而不用实际重量作为检测量的原因,因为用实际重量的话,如果出来的值是0,你不知道读出的LoadScore比6562小多少,如果小很多的话是不正常的。
你们可以叫你们的软件工程师按这样修改,如果有什么不明白的,让他们联系我。
仲建华[附件""被gtdk/haiernet删除]