西门子STEP7、博图里的数据块(DB)编址规则
最近在為PLC-Recorder開發DB變量導入功能時,仔細分析了STEP7和博圖里導出的數據塊的結構(導出的只是結構,沒有偏移地址),并重點分析了偏移地址計算的規則,否則,沒法算出變量的地址,都是白扯了。西門子的DB塊內的變量除了前篇文章里那些可能的數據類型,還有用戶數據類型(UDT)和一些特殊的類型(這在文獻里很難找到,軟件也就沒法處理了)。DB塊內的變量是有結構區分的,并且層級可能很深,UDT可以算作層級類型之一,還包括STRUCT、ARRAY(數組),都需要特殊處理,否則地址計算就會出錯。對于UDT,由于里面可能嵌套其他UDT、結構,因此,地址計算的程序必須具有遞歸計算的功能(我這個編程門外漢對于遞歸是很敬仰的,竟然在這里也實現了遞歸功能)。總結一下幾個核心的規則,分享給大家:
1、從編程軟件導出DB源代碼要包括引用,這樣,所有必要的UDT都會在DB前面列出結構,否則你還要讓用戶去導出UDT,用戶會立馬放棄你這個功能。
? ?
2、在同一結構層級內,如果變量長度是偶數,則地址從偶數字節開始。如果長度非偶數(只有單字節變量和位符合這個條件),則從緊挨著的字節開始。
3、在同一結構層級內,同類型的變量地址可以連續計算,比如位變量,確定了第一個位變量的起始地址后(比如10.0),后面的就可以連續計算,比如:10.1、10.2...
4、每個結構(包括數組、STRUCT、UDT等)增加一個層級,其變量都是從偶數字節開始,結構退出后的下一個變量起始地址也是偶數。
5、字符串地址從偶數字節開始,但是下一個變量(比如位)可能從非偶數字節開始。
DB塊的導入,只是PLC-Recorder的一個細微功能,沒想到費了很大的勁。希望朋友們多向工控、工藝的朋友們推薦咱們的數據采集、記錄、分析軟件,在可能的場合,多去替代那些昂貴的進口軟件,軟件詳情請見連接。
?
2021年2月4日
?
?
總結
以上是生活随笔為你收集整理的西门子STEP7、博图里的数据块(DB)编址规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 波形发生_事件与信号
- 下一篇: 『AA』AutoAnchor自动猫