日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

接口超时后程序还会继续执行嘛_答网友问:分析一段STL程序,并就如何读懂一段程序谈几点感想...

發布時間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 接口超时后程序还会继续执行嘛_答网友问:分析一段STL程序,并就如何读懂一段程序谈几点感想... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在文章《S7-300/400進階筆記5.1:300系列PLC的裝載存儲器的類別及方法》一文后,有小伙伴在評論區提了個問題,駝子決定有必要寫一篇文章,和大家一起討論一下。也希望小伙伴們能向"@maintenance喬"學習,有問題及時提出來,大家一起討論、一起進步。

程序如下:

注意:原問題的紅框部分是:置位指令"S #OUT7"。由于只給了我部分程序,沒有復位"#OUT7"的指令,信號無法翻轉,因此為了方便仿真測試和理解,這里將程序略作改動。


一、相關參數說明

程序編寫在一個FC中,接口定義如下:


二、捋一捋主邏輯

其實,本程序的難點如圖中的"紅框"所示。如果將其"注釋"掉(即在指令前面打"//",使該指令不執行),則程序就編程簡單的邏輯控制指令了,如下圖所示。

邏輯比較簡單,不需要贅述了。重點分析一下注釋掉的判斷與跳轉指令。


三、判斷與跳轉指令

在解讀程序之前,先解釋幾個STL語句。

  • 狀態字寄存器
  • 狀態字寄存器是一個16位的寄存器,用于存儲CPU執行指令時的狀態。狀態字的某些位用于決定某些指令是否執行和以什么方式執行,執行指令時可能改變狀態字中的某些位,用位邏輯指令和字邏輯指令可以訪問和檢測它們。

    本程序主要用到了其中的兩位:溢出位OV和二進制結果位BR

    (1)二進制結果位BR

    二進制結果位BR用來表示操作結果是否正確。用戶編寫的FB、FC程序,最好對BR位進行管理,功能塊正確執行后,BR為1,否則為0。

    (2)溢出位OV

    如果算術運算、浮點數比較指令執行時出現錯誤(例如溢出、非法操作和不規范的格式),溢出位被置1。如果后面的同類指令執行結果正常,該為被清0。

    本例程序中,用"OV"位來判斷整數運算的運算結果是否溢出。結合"SAVE"指令,在BR中保存正確的邏輯。

    2、SAVE指令

    SAVE指令用于將RLO存入BR中。

    3、JNB指令

    當邏輯運算結果為0時,JNB就中斷線性程序掃描,并跳轉到指定的位置繼續執行。同時將RLO位的內容復制到BR位中。

    對于該跳轉程序,當"#temp13"為0時,RLO=0,JNB指令生效,將程序跳轉到"M002"的位置,繼續執行。同時,將RLO的內容復制到BR位中。從"M002"開始的指令,將BR的值讀出來,與后續邏輯進行"與"運算。

    當"#temp13"為1時,JNB指令不滿足跳轉條件,程序從"L #IN3"處繼續執行,執行整數的加法運算,即:

    "#temp23"的值與"#IN2"做比較,也可作為"#OUT7"狀態的邏輯依據。

    由于"@maintenance喬"同學只給了一段程序,沒有上下文做參考,因此,本段程序暫時不能完全解讀。但大概的邏輯是:

    "#IN3"是某工藝參數的實際值,"#IN2"端是給定了其上限值,"#OUT7"用于控制某設備的啟停,當實際值小于上限值時,"#OUT7"才為1,相應的設備方能啟動。


    四、寫在最后

    由于程序不完整,最終也沒解讀出個所以然來。但駝子想通過本例表達的是:

    遇到一段復雜的程序,要懂得合理的拆分它們,先從主體框架上弄懂程序想“干什么”,然后,再逐步分解每一個邏輯。精力允許的話,可以借助仿真手段,測試程序,驗證自己的猜想。

    總結

    以上是生活随笔為你收集整理的接口超时后程序还会继续执行嘛_答网友问:分析一段STL程序,并就如何读懂一段程序谈几点感想...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。