zs8823
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 86 個(gè)
工控威望: 513 點(diǎn)
下載積分: 1361 分
在線時(shí)間: 29(小時(shí))
注冊(cè)時(shí)間: 2008-06-21
最后登錄: 2024-08-23
查看zs8823的 主題 / 回貼
樓主  發(fā)表于: 2010-11-12 04:27
圖片:
圖片:
遇到一個(gè)問題,寫了一個(gè)如圖所示的子程序,在主程序中兩次調(diào)用,但只有第一個(gè)調(diào)用有輸入輸出,第二個(gè)調(diào)用的輸入好象未傳入子程序,但輸出完全與第一個(gè)輸出同值且同步變化.不知道錯(cuò)在哪里,請(qǐng)高手指點(diǎn),CPU226.
zs8823
級(jí)別: 家園常客
精華主題: 0
發(fā)帖數(shù)量: 86 個(gè)
工控威望: 513 點(diǎn)
下載積分: 1361 分
在線時(shí)間: 29(小時(shí))
注冊(cè)時(shí)間: 2008-06-21
最后登錄: 2024-08-23
查看zs8823的 主題 / 回貼
1樓  發(fā)表于: 2010-11-12 04:30
這是子程序截圖.
zs8823
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 86 個(gè)
工控威望: 513 點(diǎn)
下載積分: 1361 分
在線時(shí)間: 29(小時(shí))
注冊(cè)時(shí)間: 2008-06-21
最后登錄: 2024-08-23
查看zs8823的 主題 / 回貼
2樓  發(fā)表于: 2010-11-14 19:45
引用
引用第3樓wjmdtt于2010-11-12 11:02發(fā)表的 :
你可將程序修改下.如設(shè)計(jì)為讓子程序?qū)崟r(shí)返回在主程序中處理6次問題試試.
同時(shí)你這個(gè)子程序計(jì)算我沒看出有任何意義.網(wǎng)絡(luò)2中都是原值過去過來不知你要實(shí)現(xiàn)個(gè)啥功能.

寫這個(gè)子程序的原因是工程中現(xiàn)有程序步數(shù)已經(jīng)快到上限,為了避免超上限只能用子程序調(diào)用.這個(gè)程序是將壓墊稱每秒鐘的數(shù)量變化累計(jì)到一個(gè)臨時(shí)變量里,到6秒鐘時(shí)乘以10送到輸出變量,供上位機(jī)界面中動(dòng)態(tài)顯示每分鐘流向稱體的物料的流量,因結(jié)果僅供參考調(diào)整下料閘板,故算法不要求特別精確.
zs8823
級(jí)別: 家園常客
精華主題: 0
發(fā)帖數(shù)量: 86 個(gè)
工控威望: 513 點(diǎn)
下載積分: 1361 分
在線時(shí)間: 29(小時(shí))
注冊(cè)時(shí)間: 2008-06-21
最后登錄: 2024-08-23
查看zs8823的 主題 / 回貼
3樓  發(fā)表于: 2010-11-14 20:23
多謝各位指點(diǎn)!! 但還是想不明白.
如4樓所言C100是個(gè)全局變量,第6秒時(shí)在第一個(gè)子程序中被置ON使第一個(gè)子程序輸出,但第一個(gè)子程序和第二個(gè)子程序中的L20.0因?yàn)槭蔷植孔兞繎?yīng)該是兩個(gè)不同的值,所以我覺得C100在第二個(gè)子程序中應(yīng)該是又被+1了,但未被復(fù)位直到下個(gè)周期在前一個(gè)子程序中被復(fù)位后,進(jìn)入第二個(gè)子程序中直接+1,想到這里就有問題了:C100在一個(gè)周期中被加了兩次是不是?如果是,那么最后結(jié)果乘10就應(yīng)該改為乘20了,但是調(diào)試中發(fā)現(xiàn)第一個(gè)子程序輸出的值按乘10計(jì)算與實(shí)際接近....
不知道就這個(gè)思路有沒有更好的解決辦法?
zs8823
級(jí)別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 86 個(gè)
工控威望: 513 點(diǎn)
下載積分: 1361 分
在線時(shí)間: 29(小時(shí))
注冊(cè)時(shí)間: 2008-06-21
最后登錄: 2024-08-23
查看zs8823的 主題 / 回貼
4樓  發(fā)表于: 2010-11-14 20:29
引用
引用第4樓醉湮邃虞于2010-11-12 12:14發(fā)表的 :
個(gè)人感覺,是對(duì)局部變量的理解問題,子程序每個(gè)網(wǎng)絡(luò)都有錯(cuò)誤。

程序中大量使用了局部變量,你把所有的局部變量變?yōu)槿肿兞烤蛻?yīng)該會(huì)好。

網(wǎng)絡(luò)1:L20.0 開始執(zhí)行時(shí),狀態(tài)并不確定
.......

因輸出值僅供顯示參考所有沒用準(zhǔn)確算法,但第二個(gè)周期開始就是準(zhǔn)確值了.LD16是個(gè)臨時(shí)變量,用于累計(jì)輸入值的變化量,清零的目的是在下個(gè)周期中重新累計(jì).
zs8823
級(jí)別: 家園常客
精華主題: 0
發(fā)帖數(shù)量: 86 個(gè)
工控威望: 513 點(diǎn)
下載積分: 1361 分
在線時(shí)間: 29(小時(shí))
注冊(cè)時(shí)間: 2008-06-21
最后登錄: 2024-08-23
查看zs8823的 主題 / 回貼
5樓  發(fā)表于: 2010-12-17 21:19
10樓樓主,非常感謝您的答案 !