求助校验问题

我的题目是实时采集并给出控制信号的,还要和计算机实现通信,老师让我做的是自由口协议,我用了异或和校验的方法,可是不知道为什么它有时就是对的,有时计算的校验值是错的,不能正常通信,麻烦各位帮我看看吧

 
 //接收校验正确,向计算机输出子程序 

 NETWORK 1       //NETWORK TITLE (single line)
 // 
 //NETWORK COMMENTS
 // 
 LD     SM0.0
 MOVB   16#01, VB602                 // 反馈正确命令
 MOVB   16#0D, VB600
 MOVB   16#BE, VB601
 MOVB   16#08, VB603
 MOVB   16#ED, VB613

 NETWORK 2       //NETWORK TITLE (PLC变频采样值发送,
 // 
 //NETWORK COMMENTS
 // 
 LDB=   VB702, 1                     //如果是PLC变频命令
 MOVD   VD14, VD604                  //将采集温度赋给发送温度缓冲区VD610
 MOVD   VD200, VD608                 //将计算频率赋给发送频率寄存器VD614
 //BMB    VB108, VB603, 6              //将采集时间送给VB603-VBVB608

 NETWORK 3       //NETWORK TITLE 采样流量和时间发送至计算机)
 // 
 //NETWORK COMMENTS
 // 
 LDB=   VB702, 2                     //如果是流量PID命令
 MOVD   VD30, VD604                  //传流量
 //BMB    VB108, VB603, 6              //传时间
 MOVD   +0, VD608                    //频率区清零

 NETWORK 4       //NETWORK TITLE (发送停止成功信息)
 // 
 //NETWORK COMMENTS
 //
 //
 LDB=   VB702, 0                     //如果是停止命令
 MOVB   8, VB603                     //
 MOVD   16#00000000, VD604           //
 MOVD   16#00000000, VD608           //
 //MOVB   16#00, VB615                 //
 //MOVW   16#0000, VW616               //数据区都清零

 NETWORK 5       //NETWORK TITLE (发送,
 // 
 //NETWORK COMMENTS
 // 
 LD     SM0.0
 MOVB   0, VB160                     //发送校验值赋初值
 MOVD   &VB604, VD152                //获取校验区首地址
 //计算校验码
 NETWORK 6
 LD     SM0.0
 FOR    VW177, +1, +8

 NETWORK 7
 LD     SM0.0
 XORB   *VD152, VB160

 NETWORK 8
 LD     SM0.0
 INCD   VD152

 NETWORK 9
 NEXT

 NETWORK 10
 LD     SM0.0
 MOVB   VB160, VB612                 //将校验值送给vd618

 NETWORK 11
 LD     SM4.5                        //如果线路空闲
 R      SM87.7, 1                    //停止接收
 RCV    VB700, 0                     //
 XMT    VB600, 0                     //发送数据给计算机

 
 

最佳答案

如果你用起始字符和结束字符的话,那就把中间数据转换为ASCII后再发送,否则发送的数据有可能刚好是结束字符,从而提前结束接受,那么算出来的校验肯定是不对的。

提问者对于答案的评价:
看看

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc357095.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午9:44
下一篇 2021年7月5日 上午9:44

相关推荐

  • S7-200设置PG/PC接口

    S7-200设置PG/PC接口应该选择那一种通讯 最佳答案 S7-200的通讯方式: 1. PPI:西门子专为S7-200系统开发的通讯协议. 2.M…

    SIMATIC S7-200 2021年7月5日
  • 脉冲与PLC224XP

    谢谢!!!我用位控做,但还是不行,调出的与机械传动部分配合的速度还是太低。我是自己编的一段程序,那步进电机的速度与脉冲周期有关,周期小,速度步,SMD72脉冲计数值是不是越小,速度…

    SIMATIC S7-200 2020年11月1日
  • STEP 7-200 Micro/WIN v4.0 SP9无法安装 提示卸载原来的4.0版本 老版本已经删了 系统win7 32位

    STEP 7-200 Micro/WIN v4.0 SP9无法安装 提示卸载原来的4.0版本 老版本已经删了 …

    SIMATIC S7-200 2021年7月5日
  • PC Access V1.0 SP2 安装步骤

    安装导向是英文的,看不懂,请教高手指点,最好有图文指示,谢谢了。。。。 最佳答案 软件的安装与卸载   CD盘包含S7-200 PC&nbs…

    SIMATIC S7-200 2021年7月5日
  • CRC16校验花费时间

    224XP中编写modbus通信CRC16校验程序,正在犹豫用计算方法编写还是用表格查询方法编写。想请问大家,两者所需要花费的计算时间是多少?比如说每个字节需要多少ms。表格查询到…

    SIMATIC S7-200 2020年11月1日
  • S7200 配置

    我配置一个224 DC/DC/DC 带一个EM231,请教一下这个CPU和231模块的接线端子需要另外采购吗? 需要采购存储卡吗? 我就做实…

    SIMATIC S7-200 2020年11月1日
  • TD200设置?

    TD200上面可以设置与S7-200相对应的V变量,但是我控制一台电机起停,那个变量怎么对应了? 问题补充:可否用S7-200编写一段程序了?我刚接触不久,对于这个的了解很模糊,我…

    SIMATIC S7-200 2021年7月5日
  • modbus库与台达m系列通信例子

    师傅们!     你们好!能提供一份modbus库与台达m系列变频器通信例子吗?谢谢1 最佳答案 这是我做的一个工程,用modbu…

    SIMATIC S7-200 2020年11月1日
  • s7-200与研华工控机通讯

    通讯电缆的选择 钻石用户推荐最佳答案 转:1、【推荐方案】使用大连德嘉国际电子的CP243i ,将PPI转换成以太网协议(TCP),上位机(PC)中选择的驱动是【Micr…

    SIMATIC S7-200 2021年7月5日
  • profibus通讯协议该怎么编程

    客户要求用profibus通讯协议,我们制氮机用的是西门子S7-200来控制的 ,那我在我的PLC程序上应该怎么编程?求大神帮忙,最好给个实例啊 最佳答案 1、如果西门子…

    SIMATIC S7-200 2017年11月23日

发表回复

登录后才能评论