怎么样才能把一个实数转换成四个字节的16进制数,并把这四个字节相加求和

在上位机里输入一个实数,怎么样才能转化成16进制的四个字节给PLC,并在PLC里对这四个字节进行累加,求累加和.请教各位大侠.

问题补充:
我的协议是普通的自由口协议,是一个仪表与PLC做自由口通讯,向仪表写数据时,需要向仪表发送7个字节的数据包,最后一个字节是通讯累加和,也就是需要把前6个16进制的字节相加,溢出位忽略.
 这个是我的数据包格式:
 第一字节 从机地址号
 第二字节 命令及数据号
 第三字节 数据高字节
 第四字节 数据次高字节
 第五字节 数据次低字节
 第六字节 数据低字节
 第七字节 通讯累加和
 

最佳答案

求累加和简单,关键是把实数转化为四个字节的十六进制数。
 要是仪表不识别S7格式的实数就不好办了。
 如果通讯的仪表定义BYTE3-BYTE4-BYTE5-BYTE6为一个有符号实数,且实数格式与S7200定义相同,那么直接转移就可以了:
 L SM0.0
 MOVD VD1000,VD2002 //假设VD1000为人机中的实数值,

 //VB2002=BYTE3
 //VB2003=BYTE4
 //VB2004=BYTE5
 //VB2005=BYTE6

 累加和
 LD     SM0.0
 MOVW   0, VW400                    //累加和结果寄存器
 MOVW   0, VW402                    //数据暂存器
 //累加和次数为有效字节数减去3,即不计算字头字尾和校验和字节            
 MOVD   &VB2000, VD410               //地址指针
 FOR    VW406, +1, VW404            //循环累加和
 MOVB   *VD410, VB403               //数据放到VW402
 +I     VW402, VW400                //累加
 ANDW   16#FF, VW400                //低字节有效
 INCD   VD410                       //指针指向下一个字节
 NEXT
 MOVB   VB401, *VD410               //保存校验和

提问者对于答案的评价:
谢谢,已经解决
 

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日 下午11:04
下一篇 2021年7月4日

相关推荐

  • s7-200视频讲座84讲vb40=?

    大家好,目前学到s7-200视频讲座84讲vb40=3eax不正确? 最佳答案 转换为两个字节。VB40=3E,VB41=A? 提问者对于答案的评价:您的解答准确无误,真心谢谢热心…

    SIMATIC S7-200 2017年12月7日
  • s7-200如何选择AI模块

    大家早,我在做一个气体控制系统,需要监测温度,压力等模拟信号,现在正在选型,看到选型手册有多种AI模块,不懂,故上来求教。具体的型号,模拟量隔离型输入模块(电流或电压输入)隔离型电…

    SIMATIC S7-200 2020年11月1日
  • s7200冗余

    现场是CPU226,想增加一套CPU做冗余,不知能否实现???该如何配置???? 问题补充:s7200是不是都不能做冗余呀???? 西门子有哪些系列的产品可以做冗余???…

    SIMATIC S7-200 2021年7月5日
  • npn如何加继电器转换为pnp

    不小心购买了一个npn的3线接近开关,现场需要连接西门子的plc,如何接线可以改为pnp的3线接近开关plc: 西门子 224xpcn接近开关:欧姆龙e2e-x…

    SIMATIC S7-200 2020年11月1日
  • s7-200定时器最大值

    S7-200 PLC CPU226 CN单个定时器最大能延时多长时间?(S7-300好像是2H46M30S) 问题补充:我现在现场有一个每8小时循环一…

    SIMATIC S7-200 2020年11月1日
  • 工控FTP地址

    大家谁知道一些免费的,比较好的,速度快,人少一些的工控FTP地址啊?现在一般的工控FTP都打不开,或者收费,能打开的速度又太慢,或者人太多。 最佳答案 亿万  …

    SIMATIC S7-200 2021年7月5日
  • 高速计数器循环计数

    检测到物体后,记到N个数后动作,比方说计数器循环到60的时候检测到物体了,再加20的长度就动作,循环到10的时候再加20的长度就动作 钻石用户推荐最佳答案 你用中断子程序来做。例如…

    SIMATIC S7-200 2021年7月5日
  • 关于M0.0的问题

    在学习实时时钟的例子程序里,用LD M0.0来设置时钟值,并用M0.0的上升沿来出发TODW。 我的问题是,M0.0用的是常开触点,程序中又没有置位1,这样程序…

    SIMATIC S7-200 2021年7月4日
  • 10台S7-200系列CPU226CN和S7-300 313C-2DP通信问题

    现在有5台一样的小设备,小设备的由2台CPU226CN通过PPI相互通信数据并由一台触摸屏Proface连接在其中一台CPU226CN进行人机通信即MPI。现在需要通过S7-300…

    SIMATIC S7-200 2020年10月31日
  • 温度模块231可以输入0—10V电压吗?

    我单位有一个6ES7 231-7PD22-0XA8四路温度模拟量输入模块,请问可以用它来输入0-10V模拟量电压吗?  最佳答案 不能,只能热电偶类型(选一种)…

    SIMATIC S7-200 2021年7月4日

发表回复

登录后才能评论