flyfeky
bilibili 工控贵族
级别: 论坛先锋
精华主题: 0
发帖数量: 889 个
工控威望: 1040 点
下载积分: 2000 分
在线时间: 688(小时)
注册时间: 2012-05-09
最后登录: 2024-12-13
查看flyfeky的 主题 / 回贴
楼主  发表于: 2023-08-29 12:32
天天做工控,做的很无聊, 尝试自己写了博图文件解析。

西门子的数据块解释文件长这样,  可以用博图得到。
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



下面是转换效果, 感兴趣的朋友可以交流。


西门子倍福WPF+C#数据库,槽式设备专家
海你好咸
级别: 略有小成
精华主题: 0
发帖数量: 307 个
工控威望: 389 点
下载积分: 2758 分
在线时间: 198(小时)
注册时间: 2018-12-22
最后登录: 2024-12-19
查看海你好咸的 主题 / 回贴
1楼  发表于: 2024-03-27 13:59
挺不错的啊
海你好咸
级别: 略有小成
精华主题: 0
发帖数量: 307 个
工控威望: 389 点
下载积分: 2758 分
在线时间: 198(小时)
注册时间: 2018-12-22
最后登录: 2024-12-19
查看海你好咸的 主题 / 回贴
2楼  发表于: 2024-03-27 14:11
图片:
有一个问题,如果里面有结构体数据,除非提前将结构体输入到上位机代码里
海你好咸
级别: 略有小成
精华主题: 0
发帖数量: 307 个
工控威望: 389 点
下载积分: 2758 分
在线时间: 198(小时)
注册时间: 2018-12-22
最后登录: 2024-12-19
查看海你好咸的 主题 / 回贴
3楼  发表于: 2024-03-28 13:48
最后读取PLC数据的时候你是怎么操作的?先根据数据类型进行归类,地址从小到大单个的就单个读,连续就批量读?

还是说拿到这个数据结构在代码里写个类,最后用反射的方式来读取或写入。