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