flyfeky
bilibili 工控貴族
級別: 論壇先鋒
精華主題: 0
發(fā)帖數(shù)量: 889 個
工控威望: 1040 點
下載積分: 2000 分
在線時間: 688(小時)
注冊時間: 2012-05-09
最后登錄: 2024-12-13
查看flyfeky的 主題 / 回貼
樓主  發(fā)表于: 2023-08-29 12:32
天天做工控,做的很無聊, 嘗試自己寫了博圖文件解析。

西門子的數(shù)據(jù)塊解釋文件長這樣,  可以用博圖得到。
DATA_BLOCK "hah"
{ DB_Accessible_From_OPC_UA := 'FALSE' ;
S7_Optimized_Access := 'FALSE' }
VERSION : 0.1
NON_RETAIN
   STRUCT
      "1" : Bool;
      "2" : Struct
         "3" : Array[0..1] of Struct
            "8" : Bool;
         END_STRUCT;
         "4" : Array[0..1] of Struct
            "1" : Bool;
            "2" : Bool;
            "3" : Bool;
            "4" : Array[0..1] of Struct
               "5" : Bool;
               "6" : Bool;
            END_STRUCT;
            "7" : Array[0..1] of Struct
               "1" : Bool;
            END_STRUCT;
         END_STRUCT;
      END_STRUCT;
      "3" : Bool;
   END_STRUCT;
BEGIN
END_DATA_BLOCK



下面是轉(zhuǎn)換效果, 感興趣的朋友可以交流。


西門子倍福WPF+C#數(shù)據(jù)庫,槽式設(shè)備專家
海你好咸
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 307 個
工控威望: 389 點
下載積分: 2758 分
在線時間: 198(小時)
注冊時間: 2018-12-22
最后登錄: 2024-12-20
查看海你好咸的 主題 / 回貼
1樓  發(fā)表于: 2024-03-27 13:59
挺不錯的啊
海你好咸
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 307 個
工控威望: 389 點
下載積分: 2758 分
在線時間: 198(小時)
注冊時間: 2018-12-22
最后登錄: 2024-12-20
查看海你好咸的 主題 / 回貼
2樓  發(fā)表于: 2024-03-27 14:11
圖片:
有一個問題,如果里面有結(jié)構(gòu)體數(shù)據(jù),除非提前將結(jié)構(gòu)體輸入到上位機代碼里
海你好咸
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 307 個
工控威望: 389 點
下載積分: 2758 分
在線時間: 198(小時)
注冊時間: 2018-12-22
最后登錄: 2024-12-20
查看海你好咸的 主題 / 回貼
3樓  發(fā)表于: 2024-03-28 13:48
最后讀取PLC數(shù)據(jù)的時候你是怎么操作的?先根據(jù)數(shù)據(jù)類型進(jìn)行歸類,地址從小到大單個的就單個讀,連續(xù)就批量讀?

還是說拿到這個數(shù)據(jù)結(jié)構(gòu)在代碼里寫個類,最后用反射的方式來讀取或?qū)懭搿?/div>