通讯报文学习手册

合集下载

S7-200USS通信报文传输格式和管理

S7-200USS通信报文传输格式和管理
的控制和过程数据。 • PKW 在许多驱动装置中是作为后台任务处理,因此 PZD 的实时性要
比 PKW 好。
13
概述
➢ 定义 ➢ USS 通信报文传输格式 ➢ USS_INIT 指令 ➢ USS_CTRL 指令 ➢ USS 读/写参数指令 ➢ MM 440 变频器的参数设置
14 14
USS_INIT 指令
的数据都包括在每条报文的净数据区域内。
10
USS 通信报文传输格式
• 净数据区由 PKW 区和 PZD 区组成:
• 以上每小格代表一个字(两个字节),含义如下:
– PKW: 此区域用于读写参数值、参数定义或参数描述文本,并可修改和报 告参数的改变 。其中:
– PKE: 参数 ID。包括代表主站指令和从站响应的信息,以及参数号等 – IND: 参数索引,主要用于与 PKE 配合定位参数 – PWEm:参数值数据
03 的位单元格中填入二进制“1”。其他不需要激活的地址 对应的位
设置为”0“。取整数,计算出的 Active 值为 00000008 h,即
16#00000008,也等于十进制数 8。
17
概述
➢ 定义 ➢ USS 通信报文传输格式 ➢ USS_INIT 指令 ➢ USS_CTRL 指令 ➢ USS 读/写参数指令 ➢ MM 440 变频器的参数设置
115200 bit/s。 • d. Active:此参数决定网络上的哪些USS从站在通信中有效。 • e. Done: 初始化完成标志。 • f. Error: 初始化错误代码。
16
USS_INIT 指令
• USS_INIT 子程序的 Active 参数用来表示网络上哪些 USS 从站要被 主站访问,即在主站的轮询表中激活。网络上作为 USS 从站的驱动 装置每个都有不同的 USS 协议地址,主站要访问的驱动装置,其地 址必须在主站的轮询表中激活。 USS_INIT 指令只用一个 32 位长的 双字来映射 USS 从站有效地址表,Active 的无符号整数值就是它在 指令输入端的取值。

CAN总线报文记录与无线数传设备系列产品用户手册说明书

CAN总线报文记录与无线数传设备系列产品用户手册说明书

CANDTU-100URCAN 总线报文记录与无线数传设备系列产品修订历史目录1. 产品简介 (1)1.1产品概述 (1)1.2产品特性 (2)1.3典型应用 (2)2. 产品规格 (3)2.1电气参数 (3)2.2工作温度 (3)2.3防护等级 (3)2.4机械尺寸 (4)3. 产品硬件接口说明 (5)3.1接口布局 (5)3.2DB9接口、法兰端子接口 (5)3.2.1电源接口 (5)3.2.2CAN-Bus接口 (6)3.3USB接口 (8)3.4SD卡接口 (8)4. 配置工具安装与介绍 (9)4.1软件安装 (9)4.2功能说明 (11)4.2.1设备选择 (12)4.2.2CAN配置 (12)4.2.3DO配置 (13)4.2.4过滤 (14)4.2.5触发器(记录模式) (16)4.2.6数据转换器 (18)4.2.7菜单操作 (20)4.2.8设置、获取设备时钟 (21)4.2.9下载、获取设备配置 (22)4.2.10暂停、恢复记录 (22)4.2.11清空设备存储 (22)4.2.12设备信息 (23)5. USBCAN功能使用方法 (24)5.1CANTest测试软件的安装 (24)5.2USBCAN功能的快速使用演示 (25)6. 快速使用说明 (28)6.1操作指南 (28)6.1.1配置 (28)6.1.2记录 (28)6.1.3升级 (28)6.1.4换卡 (28)产品问题报告表 (29)产品返修程序 (30)免责声明 (31)1. 产品简介1.1 产品概述CAN总线故障排查中,最大的难点就是偶发性故障。

这让工程师甚至CAN专家都无法准确判断问题的源头。

比如,风力发电机变桨系统在72小时中发生1次CAN数据传输中断;新能源车辆在行驶1万公里过程中出现1次仪表盘“黑了”,但后来怎么都无法复现;高铁列车在行驶2000公里中出现1次由于CAN通讯异常而导致的紧急减速等。

这些偶发性的CAN通讯异常就像定时炸弹,让工程师胆战心惊。

Modbus报文详解学习资料

Modbus报文详解学习资料

M o d b u s报文详解Modbus协议概述Modbus作为在工业设备通讯上使用最多,应用最广的国际标准协议,在应SymLink发送:01 03 00 01 00 02 95 CB01代表设备地址103代表读取保持寄存器的值00 01代表采集点对应的寄存器号00 02代表读取2个连续寄存器的值95 CB为01 03 00 01 00 02计算所得的CRC值SymLink接收:01 03 04 00 00 00 00 FA 3301代表设备地址103代表读取保持寄存器的值04代表设备返回的数据个数,字节为单位00 00 00 00为数据返回的连续2个寄存器的值FA 33为01 03 04 00 00 00 00计算所得的CRC值SymLink在判断01、03、04这些反馈信息都合法,并且CRC校验无误的情况下,就可以对00 00 00 00 所在的数据值进行规定数据格式的解析。

目前支持Modbus协议的设备越来越多,包括PLC、智能仪表、通讯模块等等,如果厂家设备支持的通讯协议为标准格式的Modbus协议,那么在选择厂家的时候就直接选择国际标准的Modbus。

准备工作3Symlink工业智能机1任意型号4设备说明书和点表1说明书指导设置设备地址、波特率等通讯参数。

点表用来配置采集点信息。

设备连接✍RS485通讯,设备的A端子对应连接SymLink的A端子、设备的B端子对应连接SymLink的B端子,需要注意的是一根线上接多个IED的情况,一个是设备地址要唯一、波特率和其他串口参数要一致,另外接线的时候需要从一台IED的AB端子跳接到下一台IED的AB端子,防止并联分散传输信号。

✍RS232通讯,设备的发送针对应连接SymLink的RX、设备的接收针对应连接SymLink的TX、设备的接地针对应SymLink的GND。

✍以太网通讯,设备的网口对应连接到同一网段的SymLink LAN口,如果含多台以太网设备通讯,需要加交换机。

UID820 CAN2.0B总线通讯 数字I O及PWM输入输出控制器使用手册说明书

UID820 CAN2.0B总线通讯 数字I O及PWM输入输出控制器使用手册说明书

使用手册UID820CAN2.0B总线通讯数字I/O及PWM输入输出控制器UID820[知识产权保护声明]使用UIROBOT产品前请注意以下三点:•UIROBOT的产品均达到UIROBOT使用手册中所述的技术功能要求。

•UIROBOT愿与那些注重知识产权保护的客户合作。

•任何试图破坏UIROBOT器件代码保护功能的行为均可视为违反了知识产权保护法案和条列。

如果这种行为导致在未经UIROBOT授权的情况下,获取软件或其他受知识产权保护的成果,UIROBOT有权依据该法案提起诉讼制止这种行为。

[免责声明]本使用手册中所述的器件使用信息及其他内容仅为您提供便利,它们可能在未来版本中被更新。

确保应用符合技术规范,是您自身应负的责任。

UIROBOT对这些信息不作任何形式的声明或担保,包括但不限于使用情况、质量、性能、适销性或特定用途的适用性的声明或担保。

UIROBOT对因这些信息及使用这些信息而引起的后果不承担任何责任。

如果将UIROBOT器件用于生命维持和/或生命安全应用,一切风险由买方自负。

买方同意在由此引发任何一切伤害、索赔、诉讼或费用时,会维护和保障UIROBOT免于承担法律责任和赔偿。

未经UIROBOT同意,不得以任何方式转让任何许可证。

[商标和外观设计声明]UIROBOT 的名称和徽标组合为UIROBOT Ltd.在中国和其他国家或地区的注册商标。

UIROBOT的UIM24XXX系列步进电机(控制)控制器和UIM25XX系列转换控制器外观设计均已申请专利保护。

[联系方式]上海优爱宝智能机器人科技股份有限公司地址:上海浦东新区亮秀路112号Y2座202-203室电话:021 – 61182435 (销售/市场); 61182432(总机)传真:021 – 61182431邮箱:****************网址:[ UID820产品订购说明]在订购UID820产品时请按以名下格式提供产品号,以便我们准确及时地为您提供产品:UID820产品牌号820UID类别UID输入输出控制类系列8路I/O2路可配置PWM输出0 路模拟量输入第 2 页M820160322CN UI Robot Technology Co. Ltd.数字I/O及PWM输入输出控制器UID820多功能IO端口特性-单机8路多功能TTL数字量输入/ 输出,可指令配置,实时调整-单机2路独立PWM输出,可指令配置,实时调整,基频0.01 ~ 5000Hz,占空比分辨率0.5%-最大800路TTL数字量输入/输出(100个UID820组网)-最大200路独立PWM输出(100个UID820组网)-可与UIM242步进电机控制器混合组网-配合相应的继电器模块,可对开关阀,比例阀和直流电机的执行器件进行控制-配合相应的电平转换模块,可接受多种行程开关,限位开关和传感器输入嵌入式微处理机-内置高性能嵌入式微处理器系统-指令结构简单直观-免费提供基于MS Windows 的VC源代码和指令封装动态链接库CAN2.0通讯特性-主动CAN 2.0, 全网络仅用一对双绞线(两根导线)-1百万通讯比特率,10公里通讯距离-可连接节点高达100个-采用差分总线,具有很强的抗噪特性电气特性-宽电压输入6~40VDC简介UID820是CAN总线型数字端口输入输出控制器,采用优爱宝的SimpleCAN通讯协议。

Modbus通讯报文说明

Modbus通讯报文说明

Modbus通讯报文说明数据接收:使用串口调试助手,按照主站配置,配置串口设置接收报文:选取一段报文:1D 10 00 00 00 0E 1C 3E 38 51 EC 00 00 00 00 00 00 00 00 00 00 00 00 41 B8 B8 52 3D 8F 5C 29 00 00 00 00 1F 5A报文解析:1D 10 00 00 00 0E 1C从站地址功能码起始地址结束地址数据长度1D十六进制转十进制,用系统自带计算器进行转换,1D(H)=16^1×1+16^0×13=29(B)0000 十六进制转十进制,用系统自带计算器进行转换,转换结果0 000E 十六进制转十进制,用系统自带计算器进行转换,转换结果14接下来都是数据内容:3E3851EC 00000000 00000000 00000000 41B8B852 3D8F5C29 000000003E3851EC使用浮点数转十六进制转换器转换在float输入值,转换结果是0.1800000000 使用浮点数转十六进制转换器转换在float输入值,转换结果是0 00000000 使用浮点数转十六进制转换器转换在float输入值,转换结果是0 00000000 使用浮点数转十六进制转换器转换在float输入值,转换结果是0 41B8B852 使用浮点数转十六进制转换器转换在float输入值,转换结果是23.09 3D8F5C29 使用浮点数转十六进制转换器转换在float输入值,转换结果是0。

07 00000000 使用浮点数转十六进制转换器转换在float输入值,转换结果是0接下来是CRC:1F 5A校验码1F 5A 使用CRC_Calc+v0。

1进行CRC计算得出CRC为5A1F。

变频器通讯报文使用基础知识介绍

变频器通讯报文使用基础知识介绍

变频器通讯报⽂使⽤基础知识介绍1 PZD接⼝PZD接⼝⽤于收发变频器与PLC的通讯数据。

以S120变频器为例,每个DO(驱动对象)⼀般有两个通讯数据接⼝:IF1和IF2。

IF1接⼝使⽤参数r2050和p2051(如使⽤双字,则使⽤参数r2060和p2061)来收发数据;IF2接⼝使⽤参数r8850和p8851(如使⽤双字,则使⽤参数r8860和p8861)来收发数据,如下图所⽰:<图1-1 PZD接⼝>以使⽤IF1接⼝为例,变频器收到的数据存放在参数r2050中:r2050[0]存放PZD1,r2050[1]存放PZD2,依次类推;变频器发送给PLC的数据存放在参数p2051中:p2051[0]存放PZD1,p2051[1]存放PZD2,依次类推。

对于有多个通讯接⼝的设备,例如既有Profibus DP接⼝,⼜有Profinet接⼝,可以修改参数p8839来将指定的PZD接⼝分配给不同的硬件通讯接⼝。

2 PZD数据2.1 控制字与给定值控制字与给定值是由PLC发送给变频器的通讯数据。

其中,控制字⽤于控制设备的启停,使⽤时将控制字拆分成16个位,分别BICO互连到变频器启停控制相关的参数;给定值⽤于给定速度、转矩等,以⼀个字或双字整体来使⽤。

以S120⽮量轴,使⽤标准报⽂1为例,PLC发送给变频器的报⽂包括1个控制字STW1和1个速度给定值NSLL_A。

控制字STW1存放在参数r2050[0]中,速度给定值存放在参数r2050[1]中如下图所⽰:<图2-1 标准报⽂1中的控制字与给定值>参数r2050[0]被拆分为16个位,分别对应参数r2090.0~r2090.15,并分别互连到p840, p844,p848等参数,⽤于实现变频器的启停、使能、故障复位、电动电位计加减速等功能。

参数r2050[1]互连到p1070,⽤于调节速度给定值。

如下图所⽰:<图2-2 控制字与给定值的参数互连>如果变频器配置了标准报⽂1,并且没有故障,则先给控制字STW1发送16进制数047E,变频器会处于等待p840启动信号的状态(r0002=31);随后再发送16进制数047F,给OFF1信号⼀个上升沿并保持,即可运⾏变频器(r0002=0)。

报文传输客户端使用手册

报文传输客户端使用手册

跨境电子商务进口统一版信息化系统客户端软件使用手册第1 页共21页目录1 文档概述 (43)1.1 编写目的 (43)1.2 读者对象 (43)1.3 系统概述 (43)1.4 术语定义 (43)2运行环境 (53)3软件安装说明 (53)3.1 Windows下安装 (53)3.1.1 基础安装 (53)3.1.1.1 解压客户端压缩包 (53)3.1.1.2 启动客户端 (63)3.1.2 注册服务 (73)3.2 Linux下安装 (73)3.2.1 基础安装 (73)3.2.1.1 解压客户端压缩包 (73)3.2.1.2 启动客户端 (83)3.2.2 注册服务 (93)4检查安装情况 (93)5系统登录指南 (103)6系统操作指南 (103)6.1 配置管理 (103)6.1.1基本信息管理 (103)6.1.1.1跨境企业对接配置 (113)6.1.1.2连接协议配置 (123)6.1.1.3传输安全配置 (133)6.1.2对接配置管理 (153)6.1.3数据导入服务 (153)6.2 运维管理 (173)6.2.1数据落地管理 (173)6.2.2报文异常管理 (183)6.2.3报文阻塞管理 (193)7 应急处理 (203)7.1 应急处理流程 (203)7.2 预防措施 (203)7.3 异常处理 (203)文档概述1.1编写目的主要为跨境企业提供跨境电子商务进口统一版信息化系统客户端软件正确的安装说明以及系统操作说明。

1.2读者对象跨境企业用户、电商平台、电商企业、物流企业、支付企业、仓储企业、报关企业。

1.3系统概述跨境电子商务进口统一版信息化系统客户端软件满足跨境企业安装报文规范(跨境电子商务进口统一版信息化系统企业对接报文规范(试行))生成终端节点报文,实现订单、运单、支付单、清单等单证通过EXCEL格式文件半自动导入,转换成规范报文后自动添加IC卡 /USBKey数字签名,并提供数据发送和回执查询功能。

通信协议及报文格式

通信协议及报文格式

通信协议及报文格式嗨,朋友!今天咱们来唠唠通信协议和报文格式这档子事儿。

这可不是什么枯燥的天书,而是像一场神奇的语言游戏,把信息从一个地方准确无误地送到另一个地方。

想象一下,你在一个超级大的城市里,这个城市就是整个通信世界。

这里面的每个人、每个设备都像是住在这个城市里的居民。

通信协议呢,就像是这个城市的交通规则。

如果没有交通规则,那汽车、自行车、行人都乱成一锅粥了,不是撞车就是走不动道儿。

同样,如果没有通信协议,数据就会在网络这个大迷宫里迷失方向,要么找不到目的地,要么就和别的数据撞得“头破血流”。

那啥是报文格式呢?我给你打个比方。

假如你要给远方的朋友寄个包裹,你得把东西好好地打包吧。

这个包裹的大小、形状、里面东西怎么摆放,就有点像报文格式。

你要是把东西乱塞一气,邮局的工作人员(在通信里就好比是网络设备)可能都不知道这是个啥玩意儿,也不知道该怎么处理。

我有个朋友叫小李,他是个程序员。

有一次,他就跟我吐槽他们公司在做一个通信项目的时候遇到的麻烦事儿。

他们要让两个不同的系统能够互相通信,就像是让两个说着不同方言的人交流一样困难。

“你知道吗?”小李皱着眉头跟我说,“这两个系统就像两个倔脾气的家伙,一个用自己的方式发送数据,另一个根本就不明白。

”我就问他:“那你们怎么解决啊?”小李回答:“得先确定一个通信协议啊。

就好比给他们俩定一个共同的语言规则。

然后还得规范报文格式,就像规定写信的时候,称呼写哪儿,正文写哪儿,落款写哪儿。

”在这个通信的城市里,有各种各样的通信协议。

就拿我们常见的互联网来说,TCP/IP协议就像是这个城市里的主干道交通规则。

它把数据分成一个个小的数据包,就像把一个大货物分成一个个小包裹。

这些小包裹都按照TCP/IP这个规则来标记自己要去的地方、自己是从哪儿来的。

而报文格式呢,在TCP/IP里也有明确的规定。

比如说IP报文,它就有固定的头部格式。

这个头部就像是包裹的标签,上面写着源地址(就像是寄件人的地址)、目的地址(收件人的地址),还有一些其他的信息,像这个包裹的类型啊之类的。

MMS入门篇(一)------IEC61850简单理解

MMS入门篇(一)------IEC61850简单理解

1.测试工具:采用IecClient进行逐项覆盖IEC61850库中的功能,尤其是我们使用到的功能,如点击获取数据的值,或者设置数据的值使用mms_ethereal截包分析2.针对性测试:针对IEC61850库的某些特殊功能,可以为其编写单独下位机程序和专门的xml文件。

这种测试需要wince的应用开发环境,以及对库功能和使用比较熟悉3.IEC61850-MMS整体结构:(1) 和其他通信协议一样,IEC61850也可分为服务器和客户端两部分,服务器提供对应的服务,客户端则请求服务(2) 服务器和客户端的划分都只是逻辑上的,并不规定他们的物理位置,同一台设备,可能既具务服务器的功能,又具务客户端的功能(3) 服务器和客户端的通信也高度抽象,不规定服务具体怎样被调用的,只规定了服务接口,接口的实现由系统决定(可以为USB、Ethernet、当服务器和客户端位于同一台机器上也可直接进行内存拷贝)当前大部分以Ehternet为主4.IEC61850-MMS协议分层:(1) MMS位于ISO七层模型的应用层,其高度抽象,为了便于理解,我们可以将其分为两层:ASCI层(Abstract Service Communication Interface)、MMS层(Manufacturing Message Specification)(2) ASCI(Abstract Service Communication Interface)层定义了系统的逻辑功能,如:一个设备中有多少个逻辑设备、多少个逻辑节点,每个逻辑节点的属性以及其支持的服务。

(3) ASCI(Abstract Service Communication Interface)层不关心客户和服务器怎么通信,只关心服务器有哪些功能可以调用,哪些数据属性可以获取,哪些节点可以控制(4) MMS层(Manufacturing Message Specification)定义了从ASCI到具体网络通信的映射(5) MMS层(Manufacturing Message Specification)不规定通信网络类型,也不规定通信帧的具体格式,只规定通信帧的功能,通信模式(6) 如: MMS规定了一个通信帧需包含哪些内容,这些内容代表什么意义,而不规定这些内容以什么数据形式在网络上体现,因此可以采用不同的数据格式在各种网络上实现,但是服务和客户端要使用同样的数据格式和网络类型5.IEC61850通信模型(1) IEC61850通信报文由以下6类报文组成:类型1(快速报文)、类型1A(跳闸报文)、类型2(中等速度报文)、类型3(低速报文)、类型4(原始数据报文)、类型5(文件传输功能)、类型6(时间同步报文)(2) 不同类型的报文由于其属性(如:数据量、重要性、实时性)不同而使用不同的传输模式(3) 1和1A类报文由于其实时性要求高所以被映射为专门的以太网类型(4) 2、3、5类型报文则使用一般的TCP/IP协议(5) 类型6报文由于其数据量大、实时性要求不高,可以和2、3、5报文区分开来(6) 此外IEC61850中还采用了其他非标准协议,如用于时间同步的SNTP协议(7) IEC61850采用的协议分类如下: 采样值(组播) --- SMV(IEC61850-9-2)、通用变电站事件--- GOOSE、时间同步--- SNTP、核心ACSI服务--- MMS Protocol Sutie、通用变站状态事件--- GSSE6.总结(1) 总的来说、IEC61850的通信可以分为如下两种模式(2) 普通报文,使用TCP/IP这类有连接的协议实现,其特点是:能信稳定、数据量大,多为端到端通信。

(完整版)SWIFT报文格式手册

(完整版)SWIFT报文格式手册

2006年度SWIFT报文格式更新手册(2006/11/18起生效)S W I F T M T 7 0 0 / 7 0 1I S S U E O F A D / C开立跟单信用证MT700/701 范围1. 由开证行发送给通知行的报文(注意:收、发报行间必须具有BKE密押关系);2. 用来列明开证行发报行所开立的信用证条款。

MT700/701 准则◆ 除非另外列明,所开立的跟单信用证遵循巴黎国际商会制定的《跟单信用证统一惯例》。

当该信用证遵循此惯例时,通知行(收报行)必须将之通知受益人或是另一家通知行。

◆ 除非另外列明,如果适用,跟单信用证项下的偿付遵循巴黎国际商会制定的《跟单信用证项下银行间偿付的统一规则》。

◆ 当跟单信用证的长度超过一个MT700的容量时,可以用一个或几个(最多三个)MT701报文格式来补充传送信息。

◆ 除非另外列明,根据该报文通知受益人或是另一家通知行的跟单信用证是已生效的信用证。

◆ 对自由议付跟单信用证,如果收报行不再以MT710报文格式转通知,那么该银行必须在信用证上加注:✧ 每次议付时必须提交通知受益人的信用证正本✧ 议付行必须在所通知的信用证正本上标注每一次的议付情况◆ 为了避免可能产生的误解,尽可能使用银行的SWIFT BIC代码来表示银行名称,而不要用“ourselves”、“yourselves”、“us”、“you”这些词。

◆ 通知行应该明确清楚地将跟单信用证的全部内容(包括任何细节)通知受益人。

MT700/701 域使用规则1. 报文中可以出现域39A或39B,但不能同时出现;2. 域42C和42a在被使用时必须同时出现;3. 在使用时,域42C和42a同时出现;或是42M 单独出现;或是42P单独出现,除此之外没有其它组合形式;4. 报文中可以出现域44C或44D,但不能同时出现;5. 用MT700开立的跟单信用证长度不超过10000个字符(包括报头和报尾)。

SOP通讯报文规则

SOP通讯报文规则
13
S3c2
宋体,倍高字,15CPI,8LPI
14
S3C2
宋体,倍高字,10CPI,8LPI
4.3.1
在错误情况下,此处为错误描述对象,其格式如下例:
错误信息对象名
错误信息
0X6
“ERR000”
0X02
错误号
长度
错误代码
长度
错误信息
0x06+ERR000 +0x02 +-1 +0x07+errid(ETL0001)+错误信息的长度+errmsg
4.3.2
交易状态正常情况下,数据格式如下:
业务数据
1.2
部分是跟同一数据包中所包含的所有交易相关的信息,包括交易的终端,交易柜员,机构等信息,组织方式同系统信息头的格式。
1.3
部分包括交易代码,交易模式,前台流水号,授权柜员等信息,组织方式同系统信息头的格式。
1.4
由长度+数据组成,长度用一个字节的二进制数表示,数据全部转换成字符串传送,字符串的最大长度由系统的BYTE_MAX_LEN宏定义指定(在本系统里,我们定义BYTE_MAX_LEN为250(0xFA)),大于该长度的部分系统保留作为控制命令用。如果数据单元的长度超过BYTE_MAX_LEN,则分段发送,0xFF作为超长数据的标志。例如要传768字节数据,由于系统定义BYTE_MAX_LEN为250,则该数据段为0xFF+250字符+0xFF+250字符+0xFF+250字符+0x12+18字符;如要传250字节数据时,则该数据段为0xFA+250字符。
授权柜员SHOQGYchar(8)//String

北斗短报文软件开发快速入门手册说明书

北斗短报文软件开发快速入门手册说明书

北斗短报文软件开发快速入门手册V1.0修订历史记录序号修改内容描述版本日期1创建文档V0.12016/9/52增加zda协议,使用说明章节V0.22017/9/83格式修正,正式发布V1.02017/11/10目录一、前言 (3)二、RD模块软件开发举例 (3)1.操作流程 (3)2.指令使用说明 (4)三、传输格式要求 (7)1.数据格式定义 (7)1bit开始位; (7)8bit数据位; (7)1bit停止位; (7)2.接口数据传输语句格式 (7)四、语句具体说明 (8)1.BSI (9)2.BSS (9)3.DWA (10)4.DWR (11)5.FKI (12)6.ICA (13)7.ICI (13)8.TXA (14)9.TXR (15)10.RMO (16)11.ZDA (16)一、前言本文档为北斗卫星导航系统用户终端通用数据接口的简略版,方便用户快速入门软件开发。

想了解更多内容,请阅读完整版文档或登录中国卫星导航定位应用管理中心查看相关网页。

二、RD模块软件开发举例1.操作流程a)RD模块上电后0.5秒内,会自动完成初始化。

注意此时不要给RD模块发送指令/数据。

b)RD模块初始化成功后,可用单片机给RD模块发送指令。

初始化完成后4秒内,RD模块会自动锁定卫星,锁星过程只需要几秒。

读卡指令,可以获取卡号和使用频度信息;读取信号指令,可以获取信号强度;若信号强度高,可以发送短报文、获取位置、获取时间等操作。

若信号强度低,则无法进行使用,可以换个空旷朝南环境,直到信号强度恢复。

注意发送短报文受频度限制,只能一分钟发送一次。

2.指令使用说明根据上节描述的操作,下面给出指令例子和使用说明,具体指令格式和语句说明,请见后面第三部分和第四部分内容。

a)指令格式说明$IDsss,d1,d2,……,dn*hh<CR><LF>‘$’为定界符,收到该字符,说明一条新消息开始,接收消息是可以根据该字符判断一条新消息;“ID”为发送器的标识符助记码,发送给RD模块,该字段为“CC”,RD模块吐出消息,该字段为“BD”;‘*’号表示数据字段已结束,可根据该字符判断一条消息的结束;“hh”为和校验字段,算法是在定界符“$”与“*”之间(但不包括这些定界符)的全部字符执行OR(异或)运算。

手册大全--ln2000通讯系统手册

手册大全--ln2000通讯系统手册

通讯手册1GPS授时(LN_GPS.EXE)1.1概述LK_GPS Receiver接收对时程序接收LN_GPS模块的串口对时输出,并修改操作系统时间,完成精确授时功能。

在LN2000DCS系统文件夹中,点击GPSReceiver.exe按钮,就进入LK_GPS Receiver 接收对时程序界面(如图1.1-1所示)。

图1.1-1 LN_GPS启动界面1.2程序界面说明程序显示的主体是一个对话框的形式,包括操作区、对时回显区以及对时历史区。

其中操作区是程序的设置部分,各种操作都在这里;回显区显示最近一次对时的时间、接收码以及校验对时状态;历史区显示最近100次的接收历史,包括接收码和接收时间如图1.2-1所示。

图1.2-1 LN_GPS 程序界面1.3 操作说明LK_GPS Receiver 程序主要有如下几种操作:开始接收/停止接收:此按钮操作程序是否接受来自串口的对时信号,点击开始按钮则开始接收,点击停止接收按钮则停止接收串口信号参数设置:设置程序使用的串口设置,包括选择串口号、波特率、奇偶校验等,LN_GPS 模块上信号格式采用(9600,n ,8,1)格式,即波特率为9600,没有奇偶校验、8个传输位、一个停止位。

设置好后,点击确定即可如图1.3.1所示。

图1.3.1串口设置隐藏:点击隐藏或者是最小化,程序都会隐藏窗口,在屏幕右下角工作台缩成图标,操作区 回显区历史区鼠标左键单击该图标,可还原窗口。

退出:退出程序。

清空显示:清空对时历史区显示。

1.4串口通讯接口及协议说明1.4.1 LN-GPS模块通讯接口概述LN-GPS模块对各种授时接收系统提供三种通讯接口,包括CAN接口两个,RS-485串行接口四个,RS-232串行通讯接口两个。

串行口通讯的物理层协议为RS-485与RS-232,可与任何具有RS-485或RS-232接口的计算机、设备或系统,特别是DCS系统实现通讯,通常推荐RS-485方式进行距离较远或者环境较恶劣情况下的通讯。

充电机及BMS通讯报文解析总结计划说明

充电机及BMS通讯报文解析总结计划说明

1、周立功ZLGCANT、软件功能及用途周立功 ZLGCANT软件功能:数据传输方式用 CAN通信方式传输,能够使用该软件来收集原始数据报文,经通信协议分析出本质数据。

用途:在电池管理系统(BMS)中,经过该软件收集外can( BMS 与整车控制器通信)原始数据报文,或收集充电 can( BMS 与充电机通信)原始数据报文;经过收集的数据来查找 BMS 或其他设备的故障点。

、软件基本操作使用指南(USBCAN设备需连接正常)步骤一:双击图标,见以以以下图1-1 所示软件界面;图 1-1步骤二:打开软件后,可经过菜单栏或图标选择相应操作,见以以以下图1-2 所示菜单栏及图标;一般情况下会用到图标“ 1”(打开设备)、图标“ 4”(缓冲帧数)、图标“ 6”(保存)等;打开设备缓冲帧数保存图 1-2步骤三:经过菜单栏“设备操作”中选择“打开设备”,或点击图标“1”打开设备,平时情况下只选择相应 CAN 网络的波特率,其他参数均为默认值,今后点击“确认”,见以以以下图 1-3 所示;注: BMS 内 can 波特率为 500kbps,外 can 波特率为 250kbps,充电 can 波特率为250kbps;其他 can 网络依照本质波特率选择。

选择相应波特率图 1-3步骤四:设备参数配置达成后,经过菜单栏“编写”中选择“缓冲帧数”,或点1000000”帧(为击图标“ 4”缓冲帧数,平时情况下将缓冲帧数改为最大“保证数据圆满性),今后点击“确认” ,见以以以下图 1-4 所示;缓冲帧数更正到最大 1000000图 1-4步骤五:点击“ 启动 CAN”按钮,数据开始收集,见以以以下图1-5 所示;点击“启动can”按钮图 1-5步骤六:数据收集达成后,点击图标“6”保存按钮,文件命名(格式如“年 -月 -日-车牌编号”),选择保存路径,今后点击“保存”,见以以以下图1-6 所示;点击“保存按钮”文件命名格式:年-月-日-车牌编号图 1-6步骤七:数据保存达成后,如无需其他操作(连续收集数据),则关闭该软件。

充电机及BMS通讯报文分析说明

充电机及BMS通讯报文分析说明

充电机与BMS通讯报文分析说明目录一、充电总流程1二、报文分类解析2充电机与BMS通讯报文分析注:充电协议参考2012-03-01实施的最新协议一、充电总流程⑴整个充电过程包括四个阶段:①充电握手阶段01/02②充电参数配置阶段OA③充电阶段1A④充电完毕阶段1C-1F 〔故障诊断代码〕注意:在各个阶段,充电机和BMS如果在规定的时间没有收到对方报文或者没有收到正确报文,即判定为报文接收超时,超时时间除特殊规定外均为5秒;当出现超时后,BMS或充电机发送错误报文〔BEM或CEM〕,并进入错误处理状态。

〔注:因对协议理解不同,有些BMS厂家会在整个充电过程中发送没有超时信息的错误报文BEM或CEM〕BEM:BMS接收超时的报文信息CEM:充电机接收超时的报文信息⑵通讯协议中地址分配二、报文分类解析⑴、充电握手阶段当充电机和BMS物理连接完成并上电后,BMS首先检测低压辅助电源是否匹配,如果匹配,双方进入充电握手阶段,并由充电机首先发送辨识报文CRM〔此时的CRM辨识结果为不能辨识0*00〕,当BMS收到充电机发送的CRM后,发送BMS和车辆辨识报文BRM。

充电机在收到BMS和车辆辨识报文BRM后,再发送辨识报文CRM〔此时的CRM辨识结果为能辨识0*AA〕。

至此充电握手阶段完成。

①CRM报文包含容:截包工具中显示此报文容为:0*1801F45600 00 00 00 00 00 00 00分析此报文容:O*1801F456为此报文ID,“18〞为包含报文优先级〔3个位〕、保存位〔1个位〕和数据页〔1个位〕。

“01〞为此报文PGN〔参数组编号〕或者PF。

“F4〞表示此报文发送的目的地址为BMS。

“56〞为发送此报文的源地址为充电机。

〔注:查看报文时,只要看报文ID最后的两个数据:“56〞则表示此报文为充电机发送出来的;“F4〞则表示此报文为BMS发送出来的〕00 00 00 00 00 00 00 00为此报文的数据,最前面一个字节“00〞表示CRM里面的辨识结果〔0*00,BMS不能辨识;0*AA,BMS能辨识〕。

can总线多机通讯发送报文资料

can总线多机通讯发送报文资料

#include"SJA1000REG_1.h"#include<reg52.h>#include<stdio.h>#include<string.h>#include<intrins.h>#define STD_FRAMEID_LENTH 2 //标准帧ID长度#define EXT_FRAMEID_LENTH 4 //扩展帧ID长度#define LOW_BYTE(x) (unsigned char)(x)#define HIGH_BYTE(x) (unsigned char)((unsigned int)(x)>>8)#define OSCCLK 11059200UL#define CPUCLK (OSCCLK/12)#define SJA_BASE_ADDR 0X7E00#define T0_MASK 0x0fsbit LED=P2^5;sbit SJA1000_RST=P2^6;unsigned char xdata *SJA_CS_Point=(unsigned char xdata*)SJA_BASE_ADDR;void SJA1000_Init(unsigned char btr0,unsigned char btr1,unsigned char *filter);void WriteSJAReg(unsigned char RegAdr,unsigned char Value); //写寄存器unsigned char ReadSJAReg(unsigned char RegAdr); //读寄存器char SetBitMask(unsigned char RegAdr,unsigned char BitValue); //设置寄存器特定位char ClearBitMask(unsigned char RegAdr,unsigned char BitValue); //清除寄存器特定位char WriteSJARegBlock(unsigned char RegAdr,unsigned char *ValueBuf,unsigned char len);//连续写寄存器char ReadSJARegBlock(unsigned char RegAdr,unsigned char *ValueBuf,unsigned char len);//连续读寄存器char SetSJASendCmd(unsigned char cmd); //发送模式cmd 0为正常发送1为单次发送2为自发自收char SJASendData(unsigned char *databuf,unsigned char cmd); //sja1000发送函数,将数据写入sja1000发送缓冲区,再将其发到总线上char SJARcvData(unsigned char *databuf); //SJA1000接收函数读取接收缓冲区的CAN报文//void SJA1000_Config_Filter(char mode,char *Filter); //配置滤波器模式和滤波参数mode大于0为双滤波器,其他为单滤波unsigned char SJA_CAN_Filter[8]={ 0xea,0x40,0x00,0x00,0x00,0x0f,0xff,0xff};unsigned char UserData[8];typedef struct //结构定义{unsigned long ID;unsigned char FF;unsigned char RTR;unsigned char DLC;unsigned char CanData[8];}CanFrame_t;CanFrame_t UserSendData;void UserDataDeal(){UserData[0]=0x55;}void NumDataDeal(){UserSendData.ID=0x251;UserSendData.FF=0;UserSendData.RTR=0;UserSendData.DLC=8;UserSendData.CanData[0]=UserData[0];UserSendData.CanData[1]=UserData[1];UserSendData.CanData[2]=UserData[2];UserSendData.CanData[3]=UserData[3];UserSendData.CanData[4]=UserData[4];UserSendData.CanData[5]=UserData[5];UserSendData.CanData[6]=UserData[6];UserSendData.CanData[7]=UserData[7];}void timerInit(void) //串口初始化{TMOD&=~T0_MASK; //清除旧的设置(#define T0_MASK 0x0f)TMOD|=0x01;}void timerDelay(unsigned int n) //延时0.01×n{do{TL0=LOW_BYTE(65536UL-CPUCLK/100);TH0=HIGH_BYTE(65536UL-CPUCLK/100);TR0=1;while(!TF0);TR0=0;TF0=0;}while(--n!=0);}void SJA1000_Init(unsigned char btr0,unsigned char btr1,unsigned char *filter){SetBitMask(REG_CAN_MOD,RM_RR_BIT); //进入复位模式WriteSJAReg(REG_CAN_CDR,0x48); //配置时钟分频,选择peliCAN模式WriteSJAReg(REG_CAN_MOD,0x09); //配置模式寄存器,选择单滤波、正常模式WriteSJARegBlock(REG_CAN_ACR0,filter,8); //配置验收代码/屏蔽寄存器WriteSJAReg(REG_CAN_BTR0,btr0); //配置总线定时器0WriteSJAReg(REG_CAN_BTR1,btr1); //配置总线定时器1WriteSJAReg(REG_CAN_OCR,0x1A); //配置输出引脚TX0与RX0,推挽输出ClearBitMask(REG_CAN_MOD,RM_RR_BIT); //推出复位模式}void WriteSJAReg(unsigned char RegAdr,unsigned char Value) //写SJA1000寄存器{*(SJA_CS_Point+RegAdr)=Value;return;}unsigned char ReadSJAReg(unsigned char RegAdr) //读SJA1000寄存器{return(*(SJA_CS_Point+RegAdr));}char SetBitMask(unsigned char RegAdr,unsigned char BitValue) //设置指定寄存器指定位为1{char status=0;unsigned char temp;temp=ReadSJAReg(RegAdr);temp=temp|BitValue;WriteSJAReg(RegAdr,temp);if(ReadSJAReg(RegAdr)==temp){status=1;}else{status=0;}return(status);}char ClearBitMask(unsigned char RegAdr,unsigned char BitValue) //将指定寄存器的指定位清零{char status=0;unsigned char temp;temp=ReadSJAReg(RegAdr);temp=temp&(~BitValue);WriteSJAReg(RegAdr,temp);if(ReadSJAReg(RegAdr)==temp){status=1;}else{status=0;}return(status);}char WriteSJARegBlock(unsigned char RegAdr,unsigned char *ValueBuf,unsigned char len) //连续写多个寄存器RegAdr寄存器起始地址len要连续写入的寄存器数{unsigned char i;if(len!=0){for(i=0;i<len;i++){WriteSJAReg(RegAdr+i,ValueBuf[i]);}}return len;}char ReadSJARegBlock(unsigned char RegAdr,unsigned char *ValueBuf,unsigned char len) //连续读多个寄存器RegAdr寄存器起始地址len要读取的寄存器数{unsigned char i;if(len!=0){for(i=0;i<len;i++){ValueBuf[i]=ReadSJAReg(RegAdr+i);}}return len;}char SetSJASendCmd(unsigned char cmd) //发送模式cmd 0为正常发送1为单次发送2为自发自收{unsigned char ret;switch(cmd){default:case 0:ret=SetBitMask(REG_CAN_CMR,TR_BIT);break;case 1:ret=SetBitMask(REG_CAN_CMR,TR_BIT|AT_BIT);break;case 2:ret=SetBitMask(REG_CAN_CMR,TR_BIT|SRR_BIT);break;case 0xff:ret=SetBitMask(REG_CAN_CMR,A T_BIT);break;}return ret;}char SJASendData(unsigned char *databuf,unsigned char cmd) //sja1000发送函数,将数据写入sja1000发送缓冲区,再将其发到总线上{char status=1;unsigned char len;unsigned char dlc;if((ReadSJAReg(REG_CAN_SR)&(TBS_BIT|TCS_BIT))!=(TBS_BIT|TCS_BIT)){status=0;else{dlc=(*databuf&0x0f);if(dlc>8){dlc=8;}switch(*databuf&0xc0){case 0x00:len=STD_FRAMEID_LENTH+dlc+1;break;case 0x40:len=STD_FRAMEID_LENTH+1;break;case 0x80:len=EXT_FRAMEID_LENTH+dlc+1;break;case 0xc0:len=EXT_FRAMEID_LENTH+1;break;default:len=0;status=0;break;}if(len>0){WriteSJARegBlock(REG_CAN_TXFMINFO,databuf,len);SetSJASendCmd(cmd);status=1;}}return(status);}char SJARcvData(unsigned char *databuf) //SJA1000接收函数读取接收缓冲区的CAN报文{char status=1;unsigned char len;unsigned char dlc;if((ReadSJAReg(REG_CAN_SR)&RBS_BIT)==0)status=0;}else{*databuf=ReadSJAReg(REG_CAN_RXFMINFO);dlc=(*databuf&0x0f);if(dlc>8){dlc=8;}switch(*databuf&0xC0){case 0x00:len=STD_FRAMEID_LENTH+dlc;break;case 0x40:len=STD_FRAMEID_LENTH;break;case 0x80:len=EXT_FRAMEID_LENTH+dlc;break;case 0xC0:len=EXT_FRAMEID_LENTH;break;default:len=0;status=0;break;}if(len>0){ReadSJARegBlock(REG_CAN_RXBUF1,databuf+1,len);status=SetBitMask(REG_CAN_CMR,RRB_BIT);}}return(status);}/*void SJA1000_Config_Filter(char mode,char *Filter) //配置滤波器模式和滤波参数mode大于0为双滤波器,其他为单滤波{SetBitMask(REG_CAN_MOD,RM_RR_BIT);if(mode>0)SetBitMask(REG_CAN_MOD,AFM_BIT);}else{ClearBitMask(REG_CAN_MOD,AFM_BIT);}WriteSJARegBlock(REG_CAN_ACR0,Filter,8);ClearBitMask(REG_CAN_MOD,RM_RR_BIT);}*/int Hal_CanMsgSend(CanFrame_t *pCanFrame) //CAN控制器报文发送接口{unsigned char snd_buf[13];unsigned long id;snd_buf[0]=(pCanFrame->DLC&0xf);if(pCanFrame->FF){snd_buf[0]=(1<<7);}if(pCanFrame->RTR){snd_buf[0]|=(1<<6);}if(pCanFrame->FF){id=(pCanFrame->ID<<3);snd_buf[1]=(id>>24)&0xff;snd_buf[2]=(id>>16)&0xff;snd_buf[3]=(id>>8)&0xff;snd_buf[4]=(id>>0)&0xff;memcpy(&snd_buf[5],pCanFrame->CanData,pCanFrame->DLC);}else{id=(pCanFrame->ID<<5);snd_buf[1]=(id>>8)&0xff;snd_buf[2]=id&0xff;memcpy(&snd_buf[3],pCanFrame->CanData,pCanFrame->DLC);}return SJASendData(snd_buf,0);}int Hal_CanMsgRecive(CanFrame_t *pCanFrame) //CAN控制器报文接收{unsigned char rcv_buf[13];if(SJARcvData(rcv_buf)){pCanFrame->DLC=(rcv_buf[0]&0xf);if(rcv_buf[0]&(1<<7)){pCanFrame->FF=1;}else{pCanFrame->FF=0;}if(rcv_buf[0]&(1<<6)){pCanFrame->RTR=1;}else{pCanFrame->RTR=0;}if(rcv_buf[0]&(1<<7)){pCanFrame->ID=rcv_buf[1];pCanFrame->ID<<=8;pCanFrame->ID+=rcv_buf[2];pCanFrame->ID<<=8;pCanFrame->ID+=rcv_buf[3];pCanFrame->ID<<=8;pCanFrame->ID+=rcv_buf[4];pCanFrame->ID>>=3;memcpy(pCanFrame->CanData,&rcv_buf[5],8);}else{pCanFrame->ID=rcv_buf[1]<<8;pCanFrame->ID|=rcv_buf[2]<<0;pCanFrame->ID>>=5;memcpy(pCanFrame->CanData,&rcv_buf[3],8);}return 1;}elsereturn 0;}}int Hal_CanInit(void){SJA1000_RST=1;timerDelay(50);SJA1000_RST=0;SJA1000_Init( 0x00,0x14, SJA_CAN_Filter);return 1;}void main(){timerInit();Hal_CanInit();while(1){// unsigned char status,JiShu;// JiShu=0;UserDataDeal();NumDataDeal();if(Hal_CanMsgSend(&UserSendData)){LED=!LED;timerDelay(100);}}}。

00 标准通信学习材料(A5)

00 标准通信学习材料(A5)
呼号 •仅初次联系时叫ATC的呼号,后续报告及请示只讲自己的呼号。 •初次联系ATC时,重型机自己呼号后要加“Heavy”。
数字 •所有数字要分开讲。 •例:11000米应读作“one one thousand”而不是“eleven thousand”。 •“点” 国际民航组织规定为“Decimal”。FAA使用“Point”。
11
正常通讯
Taxi
PLT: CA101, request taxi, (information B). ATC: CA101, cleared to taxi, via G, hold short of E2. PLT: Cleared to taxi, G, hold short of E2, CA101. ATC: CA101, contact tower 118.5. PLT: 118.5, CA101. PLT: Tower, CA101, heavy(重型机), holding short of E2, SOSDI 8A departure. ATC: CA101, via E2, hold short of RWY 36R. PLT: Holding short of RWY 36R, via E2, CA101.
13
正常通讯
Take-off PLT: CA101, ready (for departure). ATC: CA101, are you ready for immediate departure? PLT: Affirm, CA101. ATC: CA101, behind the B737 on short final line up behind, be ready for immediate departure. PLT: Behind the B737 on short final lining up behind, CA101. ATC: CA101, RWY 36R, cleared for take-off. PLT: Cleared for take-off, RWY 36R, CA101. ATC: CA101, contact departure 127.75. PLT: 127.75, CA101.
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通讯报文学习手册
1常用报文类型
目前常用报文类型包括:ISO8583报文、定长报文、不定长报文、XML报文、分隔符报文
2ISO8583报文
ISO8583包(简称8583包)是一个国际标准的包格式,最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。

8583包前面一段为位图,用来确定包的字段域组成情况。

其中位图是8583包的灵魂,它是打包解包确定字段域的关键,而了解每个字段域的属性则是填写数据的基础。

在网络中传输报文的格式是不断变化的,报文中使用位图来标识报文中有哪些域而没有哪些域。

一个报文中可以有一个或两个位图位图在报文中位置如图所示:
位图1=域2-64
位图2=域66-128
图1 位图
2.1第一个位图
第一个位图又称为主位图,每一个报文都有主位图。

它由64个二进制位(8个字节)构成,位于报文类型标识符之后。

除了第一位,每一位和一个域相对应,即和域2到域64相对应。

每位的值指示该域是否出现在报文中:
如果一个位为0,与之对应的域不出现在报文中;
如果一个位为1,与之对应的域出现在报文中。

域号是1的域不存在。

主位图的第一位用来指明在主位图后是否还有第二个位图,称为位图二。

位图二的说明见下节。

下图说明了位图的位置和功能。

在这个例子中,位图第一位是0,表示主位图后没有第二个位图。

第2、3、4位是1,表示域2、3、4出现在报文中。

第5、6位是0,表示报文中没有域5、6。

第7位是1,表示域7出现在报文中,依次类推。

Bits 1-8 9-16 17-24 25-32 33-40
41-48
49-56 57-64
2-主账号 3-交易处理码 4-交易金额 7-交易传输时间 14-卡有效期 18-商户类型 22-服务点输入方式码 25-服务点条件码 32-代理机构标识码 35-第二磁道数据 37-检索参考号 41-受卡机终端标识码 42-受卡方标识码 49-交易货币代码 60-自定义域
图2 第一个位图示例
2.2 第二个位图
主位图的第一位指明了主位图后是否有位图二。

和主位图相同,位图二也由64个二进制位(八字节)构成。

可以认为位图二是主位图的扩展,和域66到128相对应。

报文域65不存在。

只有当报文中包含有域66到域128中的域,位图二才会使用到。

位图二紧接着主位图,并在报文域之前。

下图显示了位图二的位置和功能。

主位图的第一位是1表示位图二的存在。

如果位图中的哪一位为1,表示以该位序号为序号的域存在。

例如,位图二中的位90是1,表示报文中有域90存在。

第1位表示位图
二存在
位图二所指的域
图3 第二个位图示例
2.3 程序处理的准则
本节详细说明CUPS 处理报文数据时的规则。

2.3.1报文的长度
正确的报文最大长度不超过1846字节。

错误的报文最大长度不超过1892字节。

2.3.2数据的表示
对于ISO8583报文中的域规定为数字的,CUPS以数字的ASCII码表示。

本文中以这种方式表示:
nx,x位定长数字字符
对于ISO 8583报文中的域规定为字符和数字的,CUPS以字符和数字ASCII码表示,本文中以这种方式表示:
anx,x位定长的字母和数字字符
对于一些域,虽然定义为字符和数字,实际内容的取值也可能只是数字,例如域37—检索参考号。

标记为ans的域表示该域除了字母和数字,还允许有特殊字符,比如破折号、斜杠等。

2.3.3域的对齐
所有域以字节边界对齐。

2.3.4域的长度
ISO标准中规定的可变长度域最长可以达到999个字节。

本文中的域描述给出了每个可变长度域的最大长度字节数,这个长度限制适应于整个域,该域中所有子域的长度和应小于等于整个域的长度。

所有的长度值不包括长度子域本身的长度。

报文域的长度占位含义依赖于域的属性,可以是字母、数字或二进制位。

此规定可以让其它网络和系统的应用能正确的跳过这些域。

所有的二进制位域,如位图和PIN,它们的位串必须被正确的构造。

2.3.5变长域处理
对于变长域通常定义为如下格式:ansb...512(LLLVAR)
其中”ansb”:表示数据类型为字母、数字、特殊字符、二进制数
“...512”:表示最大长度为512个字节
“LLLVAR”:L表示长度位,LLL表示3个字节的长度
ansb...512(LLLVAR):3个字节的长度值+最大512个字节(字母、数字、特殊字符、二进制数)的数据
2.3.6对未使用位置的填充
对于固定长度的报文域有以下填充规则:
——如果是数字域,右靠齐,左边多余位填零;
——如果不是数字域,左靠齐,右边多余位填空格。

2.3.7带有可选择子域的报文域
如果一个域带有子域,并且不是全部子域都要求出现在报文中,那么只要该域的任何一个子域出现在报文中,该域在位图中对应的位就要设为1。

2.4BCD码
二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符。

4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9 这十个数符。

最常用的BCD码称为8421BCD码,8.4.2.1 分别是4位二进数的位取值。

点击此处将给出十进制数和8421BCD编码的对应关系表。

1、BCD码与十进制数的转换BCD码与十进制数的转换.关系直观,相互转换也很简单,将十进制数75.4转换为
BCD码如: 75.4=(0111 (0101.0100)BCD 若将BCD码1000 0101.0101转换为十进制数如: (1000 0101.0101)BCD=85.5 注意:同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的。

例如:00011000,当把它视为二进制数时,其值为24;但作为2位BCD码时,其值为18。

又例如00011100,如将其视为二进制数,其值为28,但不能当成BCD码,因为在8421BCD码中,它是个非法编码
3定长报文
定长报文,应该是目前使用最广泛的报文,是报文类型中的元老级别人物了,定长报文也比较简单,理解起来也比较方便。

但是定长报文也有其局限性,它的最大弱点就是担心以后所定义域的长度要加长,这个时候配置或程序就要改变。

4不定长报文
由长度+数据组成,长度用一个字节的二进制数表示,数据全部转换成字符串传送,字符串的最大长度由系统的BYTE_MAX_LEN宏定义指定,大于该长度的部分系统保留作为控制命令用。

如果数据单元的长度超过BYTE_MAX_LEN,则分段发送,0xFF作为超长数据的标志。

例如要传768字节数据,由于系统定义BYTE_MAX_LEN为250,则该数据段为0xFF+250字符+0xFF+250字符+0xFF+250字符+0x12+18字符;如要传250字节数据时,则该数据段为0xFA+250字符。

5XML报文
XML是eXtensible Markup Language的缩写。

扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。

6分隔符报文
报文各域之间使用特殊符号区分,一般使用”|”作为分隔符,也可以使用其它符号作为报文之间的分隔符。

相关文档
最新文档