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#数据库,槽式设备专家
flyfeky
bilibili 工控贵族
级别: 论坛先锋
精华主题: 0
发帖数量: 889 个
工控威望: 1040 点
下载积分: 2000 分
在线时间: 688(小时)
注册时间: 2012-05-09
最后登录: 2024-12-13
查看flyfeky的 主题 / 回贴
1楼  发表于: 2023-11-02 16:32
要问这个有什么用,  用C# 写个上位机通信时一定用的到。
西门子倍福WPF+C#数据库,槽式设备专家
flyfeky
bilibili 工控贵族
级别: 论坛先锋
精华主题: 0
发帖数量: 889 个
工控威望: 1040 点
下载积分: 2000 分
在线时间: 688(小时)
注册时间: 2012-05-09
最后登录: 2024-12-13
查看flyfeky的 主题 / 回贴
2楼  发表于: 2023-11-02 16:32
怎么没有人感兴趣啊,  欢迎围观。
西门子倍福WPF+C#数据库,槽式设备专家
flyfeky
bilibili 工控贵族
级别: 论坛先锋
精华主题: 0
发帖数量: 889 个
工控威望: 1040 点
下载积分: 2000 分
在线时间: 688(小时)
注册时间: 2012-05-09
最后登录: 2024-12-13
查看flyfeky的 主题 / 回贴
3楼  发表于: 2023-11-02 17:58
引用
引用第3楼都是风景幸会于2023-11-02 16:41发表的  :
很感兴趣  楼主继续更新啊 最近也在学C#想先写个触摸屏 不知都有什么教程推荐没有

  一般都去B站找找学习资源。看自己合适的。
西门子倍福WPF+C#数据库,槽式设备专家
flyfeky
bilibili 工控贵族
级别: 论坛先锋
精华主题: 0
发帖数量: 889 个
工控威望: 1040 点
下载积分: 2000 分
在线时间: 688(小时)
注册时间: 2012-05-09
最后登录: 2024-12-13
查看flyfeky的 主题 / 回贴
4楼  发表于: 2023-11-02 17:59
引用
引用第4楼frostspirit于2023-11-02 16:43发表的  :
你这是用S7netplus的吗

是的 , 就是那个库。  测试到3万个变量 , 200ms
西门子倍福WPF+C#数据库,槽式设备专家
flyfeky
bilibili 工控贵族
级别: 论坛先锋
精华主题: 0
发帖数量: 889 个
工控威望: 1040 点
下载积分: 2000 分
在线时间: 688(小时)
注册时间: 2012-05-09
最后登录: 2024-12-13
查看flyfeky的 主题 / 回贴
5楼  发表于: 2024-03-23 21:45
再截个复杂一点的解析    
          以前都是S7通信,  但数据量太大的时候,比如 几十个6W字节的数据块,  转到SOCKET了   。 用SOCKET采集,  单个变量还是S7 写到PLC .  
西门子倍福WPF+C#数据库,槽式设备专家
flyfeky
bilibili 工控贵族
级别: 论坛先锋
精华主题: 0
发帖数量: 889 个
工控威望: 1040 点
下载积分: 2000 分
在线时间: 688(小时)
注册时间: 2012-05-09
最后登录: 2024-12-13
查看flyfeky的 主题 / 回贴
6楼  发表于: 2024-03-23 21:50
编程解读的思路,就是分析文件特点, 其实都是字符串数组拆分, 合并, 字典数据结构应用,集合遍历,FOR循环, 没用到什么新鲜玩意。
西门子倍福WPF+C#数据库,槽式设备专家
flyfeky
bilibili 工控贵族
级别: 论坛先锋
精华主题: 0
发帖数量: 889 个
工控威望: 1040 点
下载积分: 2000 分
在线时间: 688(小时)
注册时间: 2012-05-09
最后登录: 2024-12-13
查看flyfeky的 主题 / 回贴
7楼  发表于: 2024-03-27 15:01
引用
引用第10楼海你好咸于2024-03-27 14:11发表的  :
有一个问题,如果里面有结构体数据,除非提前将结构体输入到上位机代码里


==========
博图-->从块生成源-->包含所有关联块
西门子倍福WPF+C#数据库,槽式设备专家
flyfeky
bilibili 工控贵族
级别: 论坛先锋
精华主题: 0
发帖数量: 889 个
工控威望: 1040 点
下载积分: 2000 分
在线时间: 688(小时)
注册时间: 2012-05-09
最后登录: 2024-12-13
查看flyfeky的 主题 / 回贴
8楼  发表于: 2024-03-28 18:02
引用
引用第13楼海你好咸于2024-03-28 13:48发表的  :
最后读取PLC数据的时候你是怎么操作的?先根据数据类型进行归类,地址从小到大单个的就单个读,连续就批量读?

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

你用反射类试一下,应该可行。我是做一张变量表,查询地址对顺序对应
西门子倍福WPF+C#数据库,槽式设备专家
flyfeky
bilibili 工控贵族
级别: 论坛先锋
精华主题: 0
发帖数量: 889 个
工控威望: 1040 点
下载积分: 2000 分
在线时间: 688(小时)
注册时间: 2012-05-09
最后登录: 2024-12-13
查看flyfeky的 主题 / 回贴
9楼  发表于: 30天前
引用
引用第12楼tandekun于2024-03-27 15:25发表的  :
不错的想法,源码能不能拿出来分享一下啊。

搞了大大半年, 一般不想。
西门子倍福WPF+C#数据库,槽式设备专家