sihu国产精品永久免费_日韩午夜在线视频_久久99中文字幕伊人_古代男男嗯…啊h总攻

93329737
級別: 探索解密
精華主題: 0
發帖數量: 23 個
工控威望: 188 點
下載積分: 524 分
在線時間: 18(小時)
注冊時間: 2009-04-14
最后登錄: 2024-08-27
查看93329737的 主題 / 回貼
樓主  發表于: 2010-11-10 14:54
    用S7-200編程的三個實例的解析之三

         本文三例都是本人在網上回答網友的求助貼時編寫的,其中第三貼把和其他網友辯論編出的梯形圖是否正確的內容也寫進來,供大家分析參考,有不對之處,望批評指正。

         一、網友求助:“如何使用200統計流量 :我使用的一個流量計它能輸出脈沖信號,1000個脈沖為一個立方的,也可以輸出4-20毫安的電流信號,20毫安對應每小時500立方,我現在的想用226的CPU來計算一個月該流量計的總流量,最好直接使用CPU模塊實現,不建議再使用特殊模塊。謝謝了。”
        回復:
                        《 一》、使用4-20ma的電流信號求統計流量:
       (一)、你可選用4-20ma電流輸入模塊,將電流信號接在模塊的電流輸入端,如沒有,可選用0-10V電壓輸入模塊,不過要多用一個500歐的精密電阻并接在電壓輸入端與地之間,再將電流輸入信號接在電壓輸入端,這樣4-20ma 電流流過500歐電阻時,就轉變為2-10V的電壓信號。”
      (二)、求出瞬時流量的公式:

             (1)、從模塊的參數可知:20ma(或10V)模塊對應的轉換數字量設它為W20,你就可以求出4ma 對應的數字量W4:

                          W4 =W 20 ×4 ÷20 = W 20÷5。  

            (2)、20毫安對應每小時500立方,那么20毫安對應每秒鐘為500 ÷3600=0.139立方,而“0.139立方”即為流量計輸出20ma時的瞬時流量,此時對應的模塊的數字量為W 20。而流量計輸出4ma時對應的瞬時流量=0,但模塊此時的數字量為W 20÷5,即瞬時流量N與對應的數字量W的關系是一條不過0點的直線,可推導出瞬時流量N的公式:N = 0.139×(W - W 20÷5)÷(W 20- W 20÷5) 簡化為:
                            N = 1.39×(W -0.2× W 20)÷(8×W 20) ……(1)
       (三)、PLC程序處理:采用時間中斷的方式進行瞬時流量的采集與累加:中斷為秒中斷:即每隔1秒從模塊讀取一次數據,按上式(1)求出瞬時流量N,再把N值加在累積區(如VD100)中,即可。
                                   《 二 》用脈沖計數方式求統計流量
        我們知道:用 1秒時間對輸出脈沖進行計數采樣,其計數值即為瞬時流量,N秒內的瞬時流量的累加值即為N秒內的總流量。若求某段時間的總流量,很多人都是采用先求出瞬時流量,再對某段時間的瞬時流量進行累加的方法來求總流量,這種方法如用單片機或計算機可以,但用PLC進行定時計數,由于掃描周期的影響,瞬時流量是測不準的。我認為:如果求瞬時流量不是為了閉環控制提供反饋信號而是為了進行累加求總流量的話,可不用求瞬時流量,直接對流量計的輸出脈沖進行連續計數就可以了。具體編程思路是這樣的:1、如輸出脈沖的最高頻率低于200HZ,可用普通輸入點做計數信號的輸入端,用它的前沿觸發內部一雙字存儲器進行加一運算。如高于200HZ,就得選用帶啟動、復位控制的單相增計數方式的高速計數器進行計數。假設1000個脈沖為一個立方”,可知其一個脈沖為0.001立方的流量.。即累計的流量值的精度為0.001立方。如統計較長時間的總流量其精度不需要這么高,比如要求為0.1立方,此時的計數值應除以100,其商才為累計流量。3、一般流量計輸出脈沖信號幅度為5V或12V,而PLC輸入端要求輸入信號的幅度為24V,故流量計的輸出脈沖信號必需先做電平轉換變成24V脈沖信號后,方可接入PLC的計數輸入端,這樣就得做一塊電路板。如果流量精度為0.1立方,可在電路板上的電平轉換線路前再增加一塊4518(雙十進制計數器)集成塊,來構成二位十進制計數器,先對流量計輸出脈沖進行計數,其輸出的脈沖相當對流量計輸出脈沖進行除以100的運算處理,再對它進行24V電平轉換,去PLC計數口,這樣進入PLC計數端的脈沖頻率一定低于200HZ,就不需要用高速計數器計數,可大大的簡化編程程序。見下圖:


              程序說明:按下啟動開關I2.1,讀取此時的日期時間存入VB10(年)、VB11(月)、VB12(日)、VB13(時)中,I2.1的后沿使V2.0=1,V2.0的前沿使計數器VD100清0,V2.0=1時泵啟動,流量計計量開始。如運行中斷電,VD100、V2.0 及VB10、VB11等均具有斷電保持原數據、狀態的功能,所以復電后,不用按啟動開關,由于V2.0=1,PLC自動進行累計流量。如累計流量結束,按一下停止按鈕I2.2J就可:I2.2=1,立即將此時日期、時間出入VB20、VB21、VB22、VB23中,同時使V2.0=0,累計流量結束。

              二、網友求助:“如何用程序實現泵每五分鐘起一次,工作五分鐘后,再停五分鐘,循環工作。”
        回復:下圖是按著樓主要求用S7-200編寫的梯形圖,圖中用一個按鈕做電機運行與停車開關(I 0.0)



        不管哪種PLC都有通電延時定時器,你都可以按這樣思路編程。  

                三、網友求助:“s7-200程序,一個輸入,輸出時四個輸出中的任意一路輸出,有什么簡單的方法?歡迎大家熱烈發帖。”
        回復:“s7-200程序,一個輸入,輸出時四個輸出中的任意一路輸出,有什么簡單的方法?歡迎大家熱烈發帖。”,
這確實是個不錯的帖子,我也沒用什么隨機函數,憑著PLC由于掃描周期影響定時器的定時精度的考慮,用S7-200編寫了樓主提出的控制要求的梯形圖,并在S7-200上運行,證明程序符合樓主要求。梯形圖如下,有興趣的網友可以試用一下。
     (原圖)


     (后改圖)



          ***有網友提出異議:
1:
這個程序的輸出不具備隨機性,因此不能說符合樓主要求。簡單地說:如果某一時刻I0.0輸入ON,輸出為Q0.0,那么15ms后再次輸入,則輸出一定不是Q0.0了。這就不符合隨機性要求。隨機性的原則是:無論何時輸入I0.0,輸出Q0.0-Q0.3的機會相等。
2:
樓上的程序未必是真正意義上的隨機輸出。有限個輸出符合要求不意味著總能隨機輸出。還是用隨機數輸出的指令,讓plc給出在(0,1)范圍內的偽隨機數RAND(x),用取整指令對4*RAND(x)+1取整,其結果一定是1,2,3,4中隨機的某一個,再讓此隨機結果分別與1,2,3,4比較,采用分支程序根據比較結果把程序執行引向不同的輸出
          我的答復: 根據樓主要求:“一個輸入,輸出時四個輸出中的任意一路輸出,”就是說在輸入信號=1時,Q0.0-Q0.3 四個輸出端中必須有一路輸出=1,且不是有規律出現,我是按這個原則編程的。11樓你說“15ms后再次輸入,則輸出一定不是Q0.0了”你對T32的用意理解錯了,這里用T32構成振蕩器,是在輸入信號I0.0 =1的后沿起的300MS內,對MB0計數用的,300MS后MB0計數停止,由于這種定時計數不穩定性,使MB0每次計數結果不相等,但MB0的低二位(即M0.0與M0.1二位值)的狀態只有四種:00、01、10、11,按梯形圖四路輸出支路的M0.0、M0.1的組合,不管計數值為多少,總有且只有一路為串聯通道狀態,當下一個輸入信號到來時間內(即I0.0=1)使M2.0=1,這樣四路輸出中總有且只有一路輸出=1,當輸入信號結束后的300MS內MB0又計數,計數停止,M0.0與M0.1的狀態是隨意的,但只能在0-3之間變化,也就是說總有一路M0.0與M0.1串聯處于通道狀態的。我認為本梯形圖符合樓主要求。從統計學觀點來看,多次的輸入,其四路出現導通的概率應該是相等的。

            ****網友再提出異議: 你還是沒有理解“隨機性”。就你的程序,再舉個特殊點的例子來說明我在11樓的觀點:如果某一時刻I0.0輸入時,輸出為Q0.0,5ms時I0.0斷開,10ms時再次輸入I0.0,那么按照你的程序,輸出是確定的:不是Q0.0就是Q0.1,而不可能是Q0.2或Q0.3,因為這期間T32最多翻轉一次。這就談不上隨機性了。
        再回復: 15樓網友:你說的問題我明白,但樓主要求用S7-200編程,PLC通常內部存儲器計數頻率很低,所以才用15ms定時器搭成振蕩器,如果想要是輸入信號寬度為幾ms,可用高速計數器計數,這樣就得用外輸入計數脈沖來代替T32,而且最高為20KHz。如你再要求輸入脈寬為幾微秒,PLC根本不能勝任,就得用計算機編程了,而計算機也有最高頻率限制,所以不能把問題太絕對化。(將T32的定時時間改為 1ms,程序仍能正常工作,這樣幾毫秒輸入脈寬就能正常運行)
         ****網友再提出異議: 不是我要求脈寬為幾微秒,只是舉個例子而已。無論T32的定時時間是15ms還是1ms,性質是不變的:即不能保證任意時刻I0.0輸入時Q0.0-Q0.3輸出的概率相等。

        再回復:17樓網友說:“不是我要求脈寬為幾微秒,只是舉個例子而已。無論T32的定時時間是15ms還是1ms,性質是不變的:即不能保證任意時刻I0.0輸入時Q0.0-Q0.3輸出的概率相等。”對此結論我不理解,如果你的依據來源于15樓你說的“如果某一時刻I0.0輸入時,輸出為Q0.0,5ms時I0.0斷開,10ms時再次輸入I0.0,那么按照你的程序,輸出是確定的:不是Q0.0就是Q0.1,而不可能是Q0.2或Q0.3,因為這期間T32最多翻轉一次。這就談不上隨機性了。”。如果是這樣說明你對程序沒有看細,就以你說的輸入條件,第一次輸入,MB1可能計數為0或1,當第二次輸入時,MB1的計數值不是仍為0或1而是0、1或2,為什么?MB1計數是累加計數的而不是從0計數,怎么會不可能出現Q0.2或Q0.3為輸出呢?我們還是以樓主的求助內容來討論問題吧:樓主說“s7-200程序,一個輸入,輸出時四個輸出中的任意一路輸出,有什么簡單的方法?”。1、用S7-200編程,就限制了輸入信號的脈寬不能小于5ms(普通輸入口對信號的前后沿滯后時間為幾毫秒,用其做計數輸入口只能計200HZ以下的脈沖頻率),2、輸入信號的寬度是隨意的,即使脈寬相同,由于掃描周期的影響,再加上MB1為累加計數,故使MB1的每次計數值波動性大,即MB1最低二位數(M1.0、M1.1)的狀態為不固定的。從統計學觀點來看,多次的輸入,其四路各自出現導通的概率應該是相等的。這和拋錢看正反面的概率是一樣的。3、真正意義上的隨機數(或者隨機事件)在某次產生過程中是按照實驗過程中表現的分布概率隨機產生的,其結果是不可預測的,是不可見的。而計算機中的隨機函數是按照一定算法模擬產生的,其結果是確定的,是可見的。我們可以這樣認為這個可預見的結果其出現的概率是100%。所以用計算機隨機函數所產生的“隨機數”并不隨機,是偽隨機數。
         我是本著上述二個原則編寫的程序,通過上機運行,多次輸入,且輸入脈寬長短變化,其四路輸出是隨機的,所以我仍堅持我編寫的梯形圖符合樓主要求。
       ***網友再提出異議:
       1、10樓的程序是否改過了,我記得原來有兩個定時器。
       2、對于“如果是這樣說明你對程序沒有看細,就以你說的輸入條件,第一次輸入,MB1可能計數為0或1,當第二次輸入時,MB1的計數值不是仍為0或1而是1或2,為什么?MB1計數是累加計數的而不是從0計數,怎么會不可能出現Q0.2或Q0.3為輸出呢?”的回復:(針對先前的程序)
假定某一時刻I0.0輸入時,Q0.0輸出,說明MB0此時=0。再過10ms,I0.0再次輸入并持續5ms,此時段內T32可能翻轉,也可能不翻轉,但翻轉最多一次。故MB0或者是0,或者是1,而不可能是2或者3.
      3、針對現在改過的程序:Q的輸出與I0.0的持續時間有關,是可以人為控制的。因此也不是隨機的。
      再回復: 最終定下的梯形圖如下,望有條件有興趣的網友在S7-200 PLC上運行試驗,看看能否符合樓主的要求。



         梯形圖是做過改動,只是簡化程序,縮短二次輸入的間隔時間,原程序是I 0.0 驅動斷電延時定時器T100,用I 0.0 由1變0起到T100由1變0止的間隔時間對MB0進行計數,這是考慮手動按鈕做輸入,其二次輸入的最小間隔時間在幾百毫秒以上才選用這種控制方式的。考慮到你在5樓提出“如果某一時刻I0.0輸入時,輸出為Q0.0,5ms時I0.0斷開,10ms時再次輸入I0.0,”,即二個輸入信號間隔10ms,由于此時T100還沒有變0,會使第二次輸入失效,故將“原用I 0.0 由1變0起到T100由1變0的間隔時間對MB0進行計數”的計數方式改為“在I0.0=1的時間對MB1進行計數,I0.0 的后沿將MB1的計數結果送入MB0”,這樣就可縮短二次輸入信號的間隔時間,而且也簡化了程序。但“一個輸入,輸出時四個輸出中的任意一路輸出”的設計思路并沒變。現在要論証一下你在21樓說的話“假定某一時刻I0.0輸入時,Q0.0輸出,說明MB0此時=0。再過10ms,I0.0再次輸入并持續5ms,此時段內T32可能翻轉,也可能不翻轉,但翻轉最多一次。故MB0或者是0,或者是1,而不可能是2或者3.”,
        前面我講過幾次,MB0 或MB1是累加計數,不是清0后計數,假設在輸入時間內,MB1最多計一個數,MB1從0開始,第一次計數值為0或1,第二次為0或1或2,第三次為0或1或2或3,第四次為0或1或2或3(或4時即為0)。。。。怎么“不可能是2或者3”呢?多次輸入,使MB1的最低二位出現0、1、2、3的幾率相等,這就是我編程的依據,如你有充足的理論依據能駁倒我的編程思路我歡迎,如還像前面的說法,我認為就此停止吧。