凯诺科技设备间网络通信应用协议
Knetv0
版次:v0.4编制:闫巍
变更情况:紫红文字
2015-03-30
鉴于此前各版的通信协议存在种种不足和使用上的局限,并且管理混乱造成应用维护的麻烦,特定义Knet协议。
一、适用范围
本协议为应用层的通信约定。可作为各种常用通信协议(TCP/IP、MODBUS等)的数据段内容传输。适用于本公司的各种基于局域网或广域网通信的硬件或软件产品。物理接口包括且不局限于RS485、RS232、以太网接口。
二、格式
2.1
帧格式
项目Head(帧头)Ver(版次)Len(长度)
Code
Contenttype
(正文)Data[len-2]
End(帧尾)
位置Byte[0]Byte[1]Byte[2]~byte[3]Byte[4]Byte[5]Byte[6]~byte[len+2]byte[len+3]
字符‘K’
版次。初始值为0x00
正文段(content)的长度(字节数)。Len=data[]长度+2功能码。详见后文类型。详见后文
字符串。内容、长度取决于type项和具体内容
字符’N’。若content段经过加密处理,则为’N’的反码
1、仅对内容段加密
2、详见2.3内容段说明小端模式
说明
备注
Knet格式:
历史版本特征对照:版次KnetV1.1~1.3V1.0
Byte[0]‘K’0x680x00
Byte[1]0x00功能码0x00
Byte[2]正文长度数据段长度0x00
0x00/0x01功能码
Byte[3]……
类型数据段
数据段
数据
‘N’(加密取反)0x16无
通过首字节的差异即可识别。
2.2帧的解析
对于接收到的消息帧,解析时建议作如下处理:
1/7
宜昌市凯诺科技开发有限公司Knet通信协议
1、版本识别
检查帧头【byte0】的内容。根据上表可以区分当前版本和以往版本,以便采用相应的方法对消息帧进行解析;2、完好性检查
帧的完好性检查包括两个方面:(1)帧长(2)帧头帧尾具体做法:
(1)计算帧长:根据接收消息中的长度项【byte2】的内容N,计算帧长L=
N+4;
(2)核对帧长:比较接收消息的长度X与计算帧长L。有三种结果:
AX 如果是,说明消息正确完好。 3、内容段解析 内容段是从消息中的byte3开始的。根据功能码和类型声明,对消息中携带的数据进行相应的处理。 如果帧尾是加密标识,则应先对内容段进行解密处理(还原)后,在进行解析。【byte3】功能码:决定了消息要做的操作【byte4】类型:声明携带的数据的类别特征【byte5……】数据:见类型的说明 2.3内容段说明 2.3.1内容段格式 总的来说,内容段的构成只两种形式:(1)无数据的:功能码+类别 (2)携带数据的:功能码+类别+数据 具体来说,功能上有主动发送数据、请求数据、回应(被动发送)数据这么几类。详见下文。2.3.2功能码 功能码为0x01~0x7F范围。0x80以上为操作失败时回应的故障功能码。 序号 功能码0x010x02 功能 内容段格式 备注 发送(写入)发起方:功能码(0x01)+类型+数据发送发起方:功能码(0x02)+类型+数据(需要回应)回应方: (正常)功能码(0x02)+类型(异常)异常功能码+类型+故障码读取发起方:功能码(0x03)+类型(需要回应)回应方: (正常)功能码(0x03)+类型+数据(异常)异常功能码+类型+故障码 0x03 2/7 宜昌市凯诺科技开发有限公司Knet通信协议 异常功能码=功能码+0x80故障码: 0x01:不支持的功能0x02:非法地址访问0x03:非法数值操作 0x04:执行错误(不支持的数据类型)0x05:请求的数据不存在(为空) 2.4 类型0x00类型码 以下如无特别说明,数据部分均为字符型。各参数间以逗号分隔。说明时间数据格式“yyyy-MM-ddHH:mm:ss”备注消息实例:(文本)K2015-2-316:11:15N(16进制)4B0013000100323031352D322D332031363A31313A313E(24byte)参数分为模拟量和开关量两种类型,其中:1、模拟量*1结构:名称+数值+单位常用名:额重、载荷、主钩载荷、副钩载荷、角度、幅度、最大幅、最小幅)2、开关量*1结构:名称+状态(可选)开关量又分为输入信号、输出信号两种(1)常用名:(输出型)”超载”、”主钩超载”、”副钩超载”、”超大福”、”超小幅”、”空载”、”偏载”、”单绳超载”(输入型)吊钩、抓斗、吊具、低速、高速(2)状态词:输入信号:无状态词输出信号:“预警”、“报警”、“动作”、“复位”消息实例:(文本)K?主钩超载复位,副钩超载复位,单绳超载复位,超大幅复位,超小幅复位,大仰角复位,小仰角复位,高速,吊具,额定9.6t,幅度36.3m,1绳12.0t,3绳0.0t,载荷12.0t,载荷率125%,行程105%,回转角134.2°,N(16进制)4B00B1000101D6F7B9B3B3ACD4D8B8B4CEBB2CB8B1B9B3B3ACD4D8B8B4CEBB2CB5A5C9FEB3ACD4D8B8B4CEBB2CB3ACB4F3B7F9B8B4CEBB2CB3ACD0A1B7F9B8B4CEBB2CB4F3D1F6BDC7B8B4CEBB2CD0A1D1F6BDC7B8B4CEBB2CB8DFCBD92CB5F5BEDF2CB6EEB6A8392E36742CB7F9B6C833362E336D2C2031C9FE31322E30742C2033C9FE302E30742CD4D8BAC931322E30742CD4D8BAC9C2CA313235252CD0D0B3CC313035252CBBD8D7AABDC73133342E32A1E32C4E(182byte)3/7 参数1,参数2,……参数N由于各起重机的差异,参数名称、种类、排列顺序难以统一,建议接收方按名称检索处理相应数据。仅传输发生变化的信号0x01实时数据宜昌市凯诺科技开发有限公司Knet通信协议 0x02状态信息状态码*3,司机工号(姓名),当前时间消息实例:(开工)(文本)K3,10010,2015-2-316:24:7N(16进制)4B001B000102332C31303031302C323031352D322D332031363A32343A31384E(32byte)0x03派工数据任务号(17byte),作业模式(1byte)*4,货物名称(12byte)*2,船舶名称(14byte)*2,泊位名称(12byte)*2,舱口号(2byte)*2空的派工信息:缺失项目采用空字段,保留该项的分隔符“,”消息实例:B2015-3-06-15(文本)K(,2,转基因大豆,东海战舰1#,32泊位东4段,4N(16进制)4B003500010342323031352D332D30362D31352C322CD7AABBF9D2F2B4F3B6B92CB6ABBAA3D5BDBDA231232C3332B2B4CEBBB6AB34B6CE2C344E(45byte)卸货位置:为当次作业卸货地点。0x04作业数据状态*6,任务号,作业模式*4,司机工号(姓名)*2,卸货位置*5,作业次数,累计重量,净重,皮重,毛重,抄表数,完成时间,消息实例:(文本)KL3,1509工单,2,黄老邪,1,102,72459.6,325.6,15.2,340.8,4321.56,2015-2-317:29:56N(16进制)4B004D000104332C31353039B9A4B5A52C322CBBC6C0CFD0B02C312C3130322C37323435392E362C3332352E362C31352E322C3334302E382C343332312E35362C323031352D322D332031373A32393A353E(81byte)*1如果数据完全按动态发送,仅发送变更的数据项。考虑到终端停电开机、网络中断后恢复时,终端应该发送全部数据项,使服务器端能得到终端的全部最新状态数据。*2因为都是字符串形式,名称和编号同时只存在一种。选择哪一种,由应用需要决定。*3状态码含义:‘1’(上机)‘2’(下机)‘3’(开工)‘4’(完工)*4作业模式代码:’1’(卸船)‘2’(装船)‘3’(自由作业)‘4’(卸车)‘5’(装车)*5卸货位置代码:’1’(货场)‘2’(料斗)*6借用状态信息中的状态码。正常作业数据采用”3”(开工),辅助作业(如吊运挖机、工装时)采用“1”(上机)三、常见任务流程 5.1实时数据的传输 1、终端仪表主动上传实时数据和开关量状态 情况1、网络连接建立时,上传全部数据和状态。使用不需要回应的发送指令(功 能码0x01),依次发送下列消息帧: 终端发送:0x010x01实时参数组 情况2、仪表运行中,当某一个或多个模拟量或者开关量状态发生改变时,仅仅上传发生变化的模拟量或(和)开关量信息。 发送方法同上,只是参数项目有所减少。 4/7 宜昌市凯诺科技开发有限公司Knet通信协议 这样做的好处是,最大程度上避免了不必要的重复数据传输,减小对无线通信资源的占用和服务器的开销。 2、服务器请求终端仪表的实时数据或开关量状态 当浏览器上收到激活实时数据显示画面的点击时,服务器向被访问的终端仪表发送模拟量、开关量数据请求命令,终端返回服务器需要类型的全部参数。确保显示画面上显示出终端的最新状态信息 3、强制锁机 当存在远程停机的应用需要时,,服务器可以向指定终端发送开关量类型的消息帧,直接指定终端存在的任一开关量的状态。而终端仪表的程序可以按照需要将来自网络的设定信息设置视为最高优先级来处理和状态锁定。 比如设备出租行业、比如面对试用设备到期收费的问题。 可根据需要使用带或不带回应要求的发送指令。5.2作业统计功能 4、同步仪表时间 方法一、终端开机后,服务器主动发送服务器时间;终端仪表按服务器时间设置本机时间,保持与服务器的时间同步 方法二、终端主动请求服务器时间,服务器回应请求,发送时间 5、刷卡上机 (1)终端(设备)仪表向服务器发送司机信息; (2)服务器根据接收消息的IP确定登陆设备,并记录作业司机;(3)派工信息输入: 有网络时——方法1、服务器主动发布派工信息 如果服务器上有该设备的派工信息,则向终端发送派工信息;终端接收派工信息。 若没有(或未到预定开工时间)则不发送派工信息.方法2、终端申请派工信息***建议采用这种方式 如果派工信息为空,则发送空白派工信息。无网络或无派工信息时——司机手工向仪表录入工作信息 6、刷卡下机 (1)终端(设备)仪表向服务器发送司机信息; (2)服务器进行下机业务处理。 7、完成一次作业(装卸) (1)终端向服务器发送作业信息 (2)服务器将作业累计数据存入数据库,然后进行业务统计 8、发完工(舱)信息 当前舱口作业完毕(卸空或装满),由司机手工操作仪表,触发该操作。此项 5/7 宜昌市凯诺科技开发有限公司Knet通信协议 操作非必须。 (1)终端向服务器发送完工(仓)信息; (2)服务器接收后,标记该台设备为空闲待工状态; (3)当服务器上有或收到新的派工信息时,向终端发送新的派工信息。 ***建议由仪表请求 9、发开工(舱)信息 刷卡登陆后,或起重机移动到新的舱口后(未停电),由司机手工操作仪表,触发该操作。此项操作非必须。(1)终端更新作业开始时刻; (2)终端向服务器发送开工(仓)信息;(3)服务器登记司机开始工作的时间。 10、补全历史数据 由于运行中可能出现网络中断、网络设备故障的情况。这样作业数据将无法传给服务器。为了在网络连接恢复正常后,补全服务器上的数据。就需要将仪表上保存的历史作业信息上传给服务器。有两种方法: 方法一、仪表通电后,服务器检查到网络连接后,发出请求历史作业数据的消息,仪表上传请求的作业数据。当仪表中不存在请求的数据时,则回应错误信息 方法二、仪表中存在历史作业信息时,主动向服务器发送历史作业信息不管采用哪种方法,仪表应该逐条发送,已成功发送的记录应该丢弃!避免下次通电后再次发送重复的作业记录。 6/7 宜昌市凯诺科技开发有限公司Knet通信协议 History: V0.42015-3-30 派工消息中,舱口信息长度增加到2字节。v0.3 2015-3-26 派工消息中的任务号项,长度由13byte改为17byte. v0.22015-2-28 1、作业消息增加状态项(一字节),以区分正常作业还是辅助作业。2、状态采用状态消息中的状态码。正常作业采用开工码“3”,辅助作业采用上机码“1”;3、取消原来定义的暂停状态码“4”,完工状态码由“5”改为“4” v0.12015-01-19 1、帧格式中的长度项由1字节改为2字节;2、取消作业消息中的单位符号。 7/7 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务