05-自由口通信详细设计.docVIP

  • 4
  • 0
  • 约2.78千字
  • 约 7页
  • 2018-09-13 发布于湖北
  • 举报
05-自由口通信详细设计

详细设计 1 地址符号的分配 在编写库函数的时候,不能够使用绝对地址进行编程,必须使用符号地址,所以在编写程序之前须定义符号地址,符号地址的定义如下: 表1 自由口库函数符号地址定义 符号名 地址 填充开始地址 VW1000 发送数据个数 VB1000 发送帧帧头 VB1001 站地址_发送(字) VW1002 站地址_发送(字节) VB1002 控制码_发送 VB1004 发送控制码_低 VB1005 数据标识_发送(字) VD1006 数据标识_发送 VB1006 数据长度_发送 VB1010 数据域_发送 VB1012 接收数据个数_以字形式表 VW1099 接收数据个数高位 VB1099 接收数据缓冲首地址 VB1100 站地址_接收(字) VW1102 站地址_接收(字节) VB1102 接收控制码_高 VB1104 接收控制码_低 VB1105 数据标识_接收 VD1106 数据域长度_高 VB1110 数据域首址 VB1112 生成控制码 VB1041 发送长度 VW1042 发送长度_高 VB1042 发送长度_低 VB1043 发送数据标识 VW1044 发送数据标识_高 VB1044 BCC校验_当前循环次数 VW1046 BCC校验_当前值 VB1048 BCC校验_V存储地址 VD1049 发送完成标志 V1055.0 接收完成标志 V1055.1 BCC校验成功标志 V1055.2 接收到信息BCC计算结果 VB1056 接收数据帧控制码_16进制 VB1057 接收数据帧控制码_0 V1057.0 接收数据帧控制码_1 V1057.1 接收数据帧控制码_2 V1057.2 接收数据帧控制码_3 V1057.3 接收数据帧控制码_4 V1057.4 接收数据帧控制码_5 V1057.5 接收数据帧控制码_6 V1057.6 接收数据帧控制码_7 V1057.7 接收数据数据域长度_字 VW1058 接收数据数据域长度_高 VB1058 接收数据数据域长度_低 VB1059 缓冲区最后地址 VB1199 2 错误代码定义 在自由口通信中,当通信出现错误时,根据不同的错误类型,定义了一些错误代码。代码具体如下: 表2 自由口通信错误代码 编号 错误代码 判断位置 (主站|从站) 代码意义 1 0x00 从站判断 无错误 2 0x01 从站判断 从站接收到数据帧指令错误 3 0x02 从站判断 从站接收到数据帧R_W与数据标识不匹配 4 0x03 从站判断 从站接收到数据帧BCC校验错误 5 0x04 从站判断 从站奇偶校验错误 6 0x05 从站判断 从站接收到数据帧控制码错误 7 0x11 主站判断 主站检测设置的R_W与数据标识符不一致 8 0x12 主站判断 应答帧数据长度与数据域长度不一致 9 0x13 主站判断 运算错误 10 0x14 主站判断 应答帧BCC校验错误 11 0x15 主站判断 应答帧站地址错误 12 0x16 主站判断 应答帧数据标识与命令帧数据标识不一致 13 0x17 主站判断 应答帧指令错误 14 0x18 主站判断 响应超时 3 初始化 初始化库函数的主要功能是设置自由口通信的端口、接收信息开始字符、接收信息结束字符、接收信息控制字节、空闲检测时间、发送或接收的最大字符数。为了贴近于实际情况,在初始化局部变量中添加了3个输入型局部变量。分别用于对通信端口、接收信息开始字符、接收信息结束字符的设置。局部变量表如下: 表3 初始化局部变量定义 符号 变量类型 数据类型 L0.0 Port IN BOOL LB1 First IN BYTE LB2 Final IN BYTE 4 自由口 在自由口库函数中添加了7个输入型的局部变量和2个输出型的局部变量,局部变量表如下: 表4 自由口局部变量定义 符号 变量类型 数据类型 L0.0 Send IN BOOL L0.1 R_W IN BOOL LB1 Slave IN BYTE LW2 Mark IN WORD LB4 Len IN BYTE LD5 DataPtr IN DWORD LW9 Timer IN WORD L11.0 Done OUT BOOL LB12 Error OUT BYTE 自由口库函数的主要功能是完成数据的发送、接收、对接收到数据信息BCC校验、对BCC校验成功的数据帧进行解码,在程序上对数据的发送、对接收到数据信息BCC校验、对BCC校验成功的数据信息进行解码三个功能是通过顺序控制继电器指令来实现的,当满足条件时,分别调用不同的顺序控制继电器来实现功能。此外,由于库函数没有办法添加中断来检测数据帧的发送完成和接收完成,所以对于接收完成和发送完成是在该程序中通过检测特殊寄存器来实现的,该库函数的主体流程

文档评论(0)

1亿VIP精品文档

相关文档