1. <del id="sqmd4"></del>
      <object id="sqmd4"></object>
      1. <object id="sqmd4"></object>
          加入收藏 在線留言 聯系我們
          關注微信
          手機掃一掃 立刻聯系商家
          全國服務熱線13185520415
          公司新聞
          西門子S7-1500為什么將某一個字中的單一地址定義為PLC數據類型會造成整個字被覆蓋
          發布時間: 2024-04-09 21:26 更新時間: 2024-11-21 08:00
          觀看西門子S7-1500為什么將某一個字中的單一地址定義為PLC數據類型會造成整個字被覆蓋視頻

          在STEP 7 (TIA 博途)中為使程序結構更加清晰,您可以把多個輸入輸出地址定義在一組更高一級的PLC變量中。 那么,可能會發生這種情況,即使您只是訪問了定義為PLC數據類型的單個位地址,但整個輸出Word都會被覆蓋。

          在下面的例子中,在一個S7-1500cpu中定義了2個輸出字節Q0和Q1,用戶程序中定義了PLC數據類型 "TypeMotor",包括4個元素,即"powerOn", "powerOff", "speedMin" and "speedMax"(都是Bool數據類型)。

          圖1

          圖1  數據塊"DB" 的"setFalse"變量和OB 主程序的Network 1 。

        1. 輸入變量 "init" 將輸出字節 "QB1" 初始化為255。

        2. DB變量 "DB.setFalse" 被聲明為 PLC 數據類型 "TypeMotor" 并預設值為"False"。

        3. 輸出變量 "set" [Q0.0] 也被聲明為 PLC 數據類型 "TypeMotor"。

        4. 用"MOVE" 指令將DB變量 "DB.setFalse" 覆蓋輸出變量 "set" [Q0.0]。

        5. 這樣輸出點 Q0.0 到 Q0.3將為"False"。

        6. 情形1: 數據塊 "DB" 沒有設置優化訪問

          圖2

          PLC 數據類型以Word 結束??截悢祿Y構時, 在系統中填充位會被插入到數據傳輸中,因為UDT在系統中總是以16位存在。這會導致當您在程序中使用非優化訪問的塊時整個輸出字將會被覆蓋。輸入和輸出區域沒有被優化。 在情形1中 ,輸出字節"QB1" 也被寫入了 "0"。

          情形2: 數據塊 "DB" 設置了優化訪問

          圖3

          輸出字節 "QB1" 沒有被覆蓋為 "0" 并且先前初始化的值被保留 。

          注意
          如果您用PLC數據類型定義了輸出字節QB0, 如例子中所示,但沒有在設備組態中定義輸出字節QB1或者說QB1不存在的話,那么就會有上面的錯誤提示信息。

          補救措施
           如果您只是訪問數據結構中的單個數據元素,那么如上所描述的填充比特位對數據傳輸沒有影響。如果您傳送如圖1所示的整個數據結構,那么您應該使用優化的塊訪問。

          S7-1200/S7-1500 新生成的DB塊會默認設置為優化訪問。 S7-300/S7-400 數據塊為“標準“的塊訪問屬性 ,如果您將這些塊用于 S7-1200/S7-1500,建議您更改為優化訪問以確保更好的性能。 為此,您打開塊的屬性,并在“屬性”選項卡中啟用“優化的塊訪問”功能。


          聯系方式

          • 電  話:13510737515
          • 聯系人:董海波
          • 手  機:13185520415
          • 微  信:13185520415