卓发智能
相互学习,共同进步。
级别: 工控侠客
精华主题: 0
发帖数量: 2498 个
工控威望: 3116 点
下载积分: 12598 分
在线时间: 673(小时)
注册时间: 2008-08-03
最后登录: 2025-07-21
查看卓发智能的 主题 / 回贴
楼主  发表于: 4天前
如下图中所示程序,读2个字的数据,后面处理的时候又是16位
赋值。
相信自我!
卓发智能
相互学习,共同进步。
级别: 工控侠客
精华主题: 0
发帖数量: 2498 个
工控威望: 3116 点
下载积分: 12598 分
在线时间: 673(小时)
注册时间: 2008-08-03
最后登录: 2025-07-21
查看卓发智能的 主题 / 回贴
1楼  发表于: 4天前
如果 不这样处理,读回来的数据根本就对应不上。
相信自我!
niningtt
级别: 工控侠客
精华主题: 0
发帖数量: 1233 个
工控威望: 3553 点
下载积分: 850 分
在线时间: 461(小时)
注册时间: 2010-08-24
最后登录: 2025-07-21
查看niningtt的 主题 / 回贴
2楼  发表于: 4天前
读两个字,放在D121\D120里,高低字排序需要交换  D120→D122   /D121
payfsl
级别: 工控侠客
精华主题: 2 篇
发帖数量: 2629 个
工控威望: 2908 点
下载积分: 40110 分
在线时间: 489(小时)
注册时间: 2010-08-03
最后登录: 2025-07-20
查看payfsl的 主题 / 回贴
3楼  发表于: 3天前
这是三菱 PLC 编程软件 GX Works3 里的程序,我给你拆解下关键部分逻辑,帮你理解:

1. 基础运行条件
`SM400` 是三菱 PLC 内置的常 ON 特殊继电器,只要 PLC 正常运行,它就一直为 ON ,相当于程序的“总使能” ,所以这段程序只要 PLC 运行就会执行 。

2. 指令功能解析
- **`ADPRW`** :大概率是和通讯、特殊模块数据读写相关的指令(具体功能得结合模块配置和手册,从名字看像 “Advanced Process Read/Write” ,用于读写外围设备数据,比如你程序里的 “通讯读测高仪数据” ,可能是从测高仪读取数据到 PLC 内部寄存器 )。`K1` `H4` `H0` `K2` 这些是它的参数,可能指定模块编号、读写地址、数据长度等 ,得结合手册和实际硬件配置确认。
- **`MOV`** :很基础的 “传送” 指令,就是把一个寄存器的数据复制到另一个。比如 `MOV D120 D123` ,就是把 `D120` 里的数据,原封不动放到 `D123` 里 ,用于数据转移、备份。
- **`DMOV`** :和 `MOV` 类似,但处理的是 32 位数据(`MOV` 是 16 位 )。`DMOV D121 D126` 就是把 `D121 - D122` 组成的 32 位数据(因为三菱 PLC 里 32 位数据占两个连续寄存器,低 16 位 `D121` ,高 16 位 `D122`  ),复制到 `D126 - D127` 里 ,用于处理较大数值或者精度要求高的数据(像测高仪可能输出的是长整数 )。
- **`DINT2FLT`** :是 “双整数转浮点数” 指令 。把 `D126 - D127` 里的 32 位整数(比如 `124630` ),转换成浮点数(存到 `D128 - D129` ,因为浮点数占 32 位,也是两个寄存器 ),方便后续做浮点运算(比如除法 )。
- **`DEDIV`** :是 32 位浮点数除法指令 。`DEDIV D128 K1000 D88` 就是用 `D128 - D129` 里的浮点数(比如转换后的 `1.246e + 005`  )除以 `1000` ,结果存到 `D88 - D89` 里(`D88` 显示 “转化后实际数值”  ),可能是为了把原始数据换算成实际物理量(比如测高仪原始计数换算成毫米、米等实际长度 )。

### 3. 整体流程逻辑
简单说,就是 **先通过 `ADPRW` 从外部设备(测高仪)读数据** → 用 `MOV` `DMOV` 做数据转移备份 → 用 `DINT2FLT` 把整数转成浮点数 → 最后 `DEDIV` 做除法运算,把数据转换成实际能用的物理数值(比如高度值 ),供后续程序判断、控制使用 。

要是还迷糊,得结合这几个点深入:
- 查 `ADPRW` 具体参数定义(模块手册里找 ),确认到底读了啥数据、存在哪些寄存器。
- 看看 “测高仪” 通讯协议、数据格式,知道原始数据啥含义,才好对应程序里的数据处理。
- 结合整个设备功能(三轴螺丝机,测高仪可能用于检测螺丝高度、平台高度等 ),理解为啥要这么处理数据 。
本帖最近评分记录:
  • 下载积分:+1(李乾威) 热心助人!
  • 三人行必有我师焉,择其善者而从之 ,学而不思则罔,思而不学则殆
    zhongwen1234
    级别: 探索解密
    精华主题: 0
    发帖数量: 117 个
    工控威望: 197 点
    下载积分: 619 分
    在线时间: 75(小时)
    注册时间: 2020-08-04
    最后登录: 2025-07-22
    查看zhongwen1234的 主题 / 回贴
    4楼  发表于: 前天
    二楼的解释应该对的

    让你困惑的应该是第二行,因为它在这段程序里是多余的,删掉完全不影响运行
    > MOV D120 D123
    znz43
    工控职业已成回忆 只因爱好常回家园 乐此不疲
    级别: 工控侠客

    精华主题: 0
    发帖数量: 1061 个
    工控威望: 4904 点
    下载积分: 7360 分
    在线时间: 2570(小时)
    注册时间: 2010-06-24
    最后登录: 2025-07-21
    查看znz43的 主题 / 回贴
    5楼  发表于: 前天
    引用
    引用第4楼zhongwen1234于2025-07-20 02:43发表的  :
    二楼的解释应该对的

    让你困惑的应该是第二行,因为它在这段程序里是多余的,删掉完全不影响运行
    > MOV D120 D123

    同意 “让你困惑的应该是第二行,因为它在这段程序里是多余的” 这个结论。

    但是,不要轻易下 “删掉完全不影响运行” 这个结论。

    因为没有看到全部程序,这里只是一个程序段,也许后面 D120 会被覆盖,而后面还需要用在 D123 中的 D120 付本。

    只有在分析全部程序后,才能作 “删掉完全不影响运行” 或 “不能删掉” 这个结论。
    出门打工难,打工学艺难,学艺拜师难,找到好师傅更难。
    赠人玫瑰,手留余香。舍得舍得,有舍才有得。
    不动如山
    级别: 正式会员
    精华主题: 0
    发帖数量: 37 个
    工控威望: 53 点
    下载积分: 188 分
    在线时间: 39(小时)
    注册时间: 2024-10-29
    最后登录: 2025-07-21
    查看不动如山的 主题 / 回贴
    6楼  发表于: 昨天
    看这个通讯对应硬件 地址对应是什么数据
    朱光显
    学无止境,继续加油
    级别: 探索解密
    精华主题: 0
    发帖数量: 122 个
    工控威望: 199 点
    下载积分: 7835 分
    在线时间: 96(小时)
    注册时间: 2020-07-08
    最后登录: 2025-07-21
    查看朱光显的 主题 / 回贴
    7楼  发表于: 昨天
    第二行的D123,从图中看是无用的,所以这段程序主要是想把D121与D120的位置进行互换。也就是高低字互换