卓發(fā)智能
相互學習,共同進步。
級別: 工控俠客
![]() |
如下圖中所示程序,讀2個字的數(shù)據,后面處理的時候又是16位 ![]() |
|
---|---|---|
|
payfsl
級別: 工控俠客
![]() |
這是三菱 PLC 編程軟件 GX Works3 里的程序,我給你拆解下關鍵部分邏輯,幫你理解: 1. 基礎運行條件 `SM400` 是三菱 PLC 內置的常 ON 特殊繼電器,只要 PLC 正常運行,它就一直為 ON ,相當于程序的“總使能” ,所以這段程序只要 PLC 運行就會執(zhí)行 。 2. 指令功能解析 - **`ADPRW`** :大概率是和通訊、特殊模塊數(shù)據讀寫相關的指令(具體功能得結合模塊配置和手冊,從名字看像 “Advanced Process Read/Write” ,用于讀寫外圍設備數(shù)據,比如你程序里的 “通訊讀測高儀數(shù)據” ,可能是從測高儀讀取數(shù)據到 PLC 內部寄存器 )。`K1` `H4` `H0` `K2` 這些是它的參數(shù),可能指定模塊編號、讀寫地址、數(shù)據長度等 ,得結合手冊和實際硬件配置確認。 - **`MOV`** :很基礎的 “傳送” 指令,就是把一個寄存器的數(shù)據復制到另一個。比如 `MOV D120 D123` ,就是把 `D120` 里的數(shù)據,原封不動放到 `D123` 里 ,用于數(shù)據轉移、備份。 - **`DMOV`** :和 `MOV` 類似,但處理的是 32 位數(shù)據(`MOV` 是 16 位 )。`DMOV D121 D126` 就是把 `D121 - D122` 組成的 32 位數(shù)據(因為三菱 PLC 里 32 位數(shù)據占兩個連續(xù)寄存器,低 16 位 `D121` ,高 16 位 `D122` ),復制到 `D126 - D127` 里 ,用于處理較大數(shù)值或者精度要求高的數(shù)據(像測高儀可能輸出的是長整數(shù) )。 - **`DINT2FLT`** :是 “雙整數(shù)轉浮點數(shù)” 指令 。把 `D126 - D127` 里的 32 位整數(shù)(比如 `124630` ),轉換成浮點數(shù)(存到 `D128 - D129` ,因為浮點數(shù)占 32 位,也是兩個寄存器 ),方便后續(xù)做浮點運算(比如除法 )。 - **`DEDIV`** :是 32 位浮點數(shù)除法指令 。`DEDIV D128 K1000 D88` 就是用 `D128 - D129` 里的浮點數(shù)(比如轉換后的 `1.246e + 005` )除以 `1000` ,結果存到 `D88 - D89` 里(`D88` 顯示 “轉化后實際數(shù)值” ),可能是為了把原始數(shù)據換算成實際物理量(比如測高儀原始計數(shù)換算成毫米、米等實際長度 )。 ### 3. 整體流程邏輯 簡單說,就是 **先通過 `ADPRW` 從外部設備(測高儀)讀數(shù)據** → 用 `MOV` `DMOV` 做數(shù)據轉移備份 → 用 `DINT2FLT` 把整數(shù)轉成浮點數(shù) → 最后 `DEDIV` 做除法運算,把數(shù)據轉換成實際能用的物理數(shù)值(比如高度值 ),供后續(xù)程序判斷、控制使用 。 要是還迷糊,得結合這幾個點深入: - 查 `ADPRW` 具體參數(shù)定義(模塊手冊里找 ),確認到底讀了啥數(shù)據、存在哪些寄存器。 - 看看 “測高儀” 通訊協(xié)議、數(shù)據格式,知道原始數(shù)據啥含義,才好對應程序里的數(shù)據處理。 - 結合整個設備功能(三軸螺絲機,測高儀可能用于檢測螺絲高度、平臺高度等 ),理解為啥要這么處理數(shù)據 。 |
|
---|---|---|
本帖最近評分記錄:
|
zhongwen1234
級別: 探索解密
![]() |
二樓的解釋應該對的 讓你困惑的應該是第二行,因為它在這段程序里是多余的,刪掉完全不影響運行 > MOV D120 D123 |
---|---|
|
znz43
工控職業(yè)已成回憶 只因愛好;丶覉@ 樂此不疲
級別: 工控俠客
![]() ![]() |
同意 “讓你困惑的應該是第二行,因為它在這段程序里是多余的” 這個結論。 但是,不要輕易下 “刪掉完全不影響運行” 這個結論。 因為沒有看到全部程序,這里只是一個程序段,也許后面 D120 會被覆蓋,而后面還需要用在 D123 中的 D120 付本。 只有在分析全部程序后,才能作 “刪掉完全不影響運行” 或 “不能刪掉” 這個結論。 |
|
---|---|---|
|