一、NMEA0183标准
NMEA(National Marine Electronics Association)为美国国家海事电子协会,成立于20世纪50年代,是一家专门从事海洋电子设备工业方面教育及研究的民间机构,总部在美国北卡罗来纳州。NMEA系列标准是其制定的关于海洋电子设备之间通信接口和协议的标准。1980年制定了最早的有关海洋电子设备通信接口和协议的标准,即NMEA-0180标准。不过,这一标准与1982年升级后的NMEA-0182标准,都仅仅是针对LORAN-C(远距离无线导航系统)系统和自动驾驶仪及其相关设备的通信制定,二者在具体内容上没有太大的差别,只是在设备通信格式上有简单格式和复杂格式之分。
1983年,NMEA协会定义了用于海事产品互通互联的NMEA-0183标准。这一标准在兼容NMEA-0180和NMEA-0182标准的基础上,增加了GPS、测深仪、罗经方位系统等多种设备的接口和通信协议的定义。同时,标准还允许一些特定设备制造商对其设备(如Garmin GPS-38、Trimble Ensign XL)通信自行定义协议。
二、IEC61162标准与NMEA0183
由于NMEA-0183标准的通用性和灵活性,在世界上被广泛使用。后来,IEC(International ElectrotechnicalCommission,国际电工委员会)将NMEA0183协议修改后采纳为国际标准,既IEC 61162-1协议。这个协议当时主要是为了在低速率(4800bit/s)传输下,对海事电子器件的电气电子及传输内容指定标准。IEC同时指定了IEC 61162-2协议,以定义高速率(38400bit/s)的传输标准。现在,IEC相关委员会正在定义基于NMEA2000协议的新的标准。新标准将基于正式国际标准的现场总线CAN(Control Area Network)标准,可支持最大102个设备同时工作,并能双工通信。
三、语句规范
IEC 61162标准不仅定义了海事电子器件的物理标准,对传输内容也做出了相应的定义。IEC 61162设备传输的是可打印的ASCII(American Standard Code for InformationInterchange,美国信息交换标准代码)字符。在低速率(IEC 61162-1协议)下,传输有效字符串长度每次不低于20不高于79个字符,同时,最高每秒传输不能高于一次。在高速率(IEC 61162-2协议)下,传输有效字符串长度每次不低于11不高于79个字符;同时,最小传输间隔20ms/次。
在IEC 61162-1/2中,数据以一部串行发送。第一位是起始位,紧接着是数据位,低位在前,随后是校验和位,停止位。通过IEC 61162-1/2传输的数据内容都应该是可显示的ASCII八位字符(从HEX 20到HEX 7E),最高位为0(D7=0)。
IEC 61162协议规定,在符合IEC 61162协议的物理设备上传输的,只能是可打印的ASCII字符。这些字符不仅有着长度的限制,同时传送文本数据必须符合协议中所定义的语句格式。在上文已经给出了语句长度的限制,再加上语句的开始标志‘$’或‘!’以及语句的结束标志“<CR><LF>”。每个语句最长长度限制为82个ASCII字符。在IEC 61162协议中,语句类型主要分为三类:
正文语句句型:正文语句是设备传送的数据内容,由设备根据自身的预定设置或其它设备的请求而发出。其句型如表1所示:
表1 正文语句格式
ASCII |
HEX |
说 明 |
“$”或“!” |
24或21 |
语句开始符号 |
aaccc |
地址域,前两个字符是发送者的识别标志,表明使用的设备;后三个字符是语句类型 |
|
“,” |
2C |
数据域分隔符,如果后跟“,”,表明该域无数据 |
c---c |
数据块,包括所有要传输的数据,用“,”分割各数据域 |
|
“*” |
2A |
校验域标志符,后跟校验域数据 |
<校验域>hh |
起始字符和校验字符之间所有数据的异或值 |
|
<CR><LF> |
0D 0A |
语句结束符号 |
询问语句句型:询问语句主要用于当需要指定设备的某指定正式语句内容,属于控制指令。籍此得到想要获取的数据信息。其句型结构如表2所示:
表2 询问语句格式
ASCII |
HEX |
说 明 |
“$” |
24 |
语句开始符号 |
aa |
讲话者请求的服务类型 |
|
dd |
请求者的设备标准,表明请求数据的来源 |
|
Q |
51 |
表明该语句是询问语句 |
“,” |
2C |
数据域分隔符,如果后跟“,”,表明该域无数据 |
c---c |
数据块,包括所有要传输的数据,用“,”分割各数据域 |
|
“*” |
2A |
校验域标志符,后跟校验域数据 |
<校验域>hh |
起始字符和校验字符之间所有数据的异或值 |
|
<CR><LF> |
0D 0A |
语句结束符号 |
专有语句句型:专有语句内容没有统一的格式标准,主要是给设备制造商提供对设备输出信息的扩展,形成该语句的原因有三点:让来自同一设备制造商的不同设备间进行特殊的互联互通;用于测试的;数据内容无用且非已定义的标准类型。其句型结构如表3所示:
表3 专有语句格式
ASCII |
HEX |
说 明 |
“$” |
24 |
语句开始符号 |
“P” |
50 |
表明该语句是属性语句 |
<aaa> |
制造商注记符,表明后续数据格式及意义 |
|
“,” |
2C |
数据域分隔符,如果后跟“,”,表明该域无数据 |
c---c |
数据块,包括所有要传输的数据,用“,”分割各数据域 |
|
“*” |
2A |
校验域标志符,后跟校验域数据 |
<校验域>hh |
起始字符和校验字符之间所有数据的异或值 |
|
<CR><LF> |
0D 0A |
语句结束符号 |

