C#联合WINCC之数据通信
【公众号dotNet工控上位机:thinger_swj】
在工控领域中,WINCC仍然占有很大的市场份额。很多时候我们说学习C#开发上位机可以取代传统的组态软件,两者就像冤家一样,然而,即使是冤家,也会有联合的时候。当我们的项目已经采用WINCC落地之后,已经学会C#的我们,还能做哪些事情呢?今天跟大家分享一下如何使用C#,与WINCC联合实现数据通信。
1. 环境搭建
众所周知,WINCC作为西门子家族的一款组态软件,主要是用来和PLC(主要是西门子PLC)通信,因此我们选择的硬件就是一款西门子S7-1200 PLC。软件方面,使用的是WINCC V7.4(其他版本待测试),以及宇宙第一IDE——VS 2019。
这里有个问题提醒一下,当我安装好WINCC V7.4,通过添加驱动和S7-1200 PLC通信时,怎么都连接不上,最后发现应该是WINCC的S7-1200 PLC的驱动有点BUG,缺少一些组件,通过安装TIA博图之后,最终解决。
如果想通过C#联合WINCC访问到PLC里的变量,前提是WINCC项目已经开发好,并且处于运行状态,操作步骤如下:
首先创建一个S7连接,并创建4个变量分别为data1、data2、data3、data4,地址对应DB100.DBD0、DB100.DBD4、DB100.DBD8、DB100.DBD12。
接着创建一个画面,拖入4个显示控件,分别绑定这4个变量,通过博图将4个变量的值分别设置为50.5、60.5、70.5、80.5,
然后运行WINCC画面。
接下来我们要做的是通过编写一个简单的Winform程序来读取WINCC中这4个变量的值并显示,这里有两种方式可以实现这样的效果,一种是通过直接访问WINCC变量进行读取,另一种是通过访问WINCC画面中的控件。
2. 访问WINCC变量
1、首先创建一个新的Windows窗体应用,再从WINCC安装目录中找到两个dll,分别是CCHMIRuntime.dll和CCHMITags.dll,位置默认处于C:\Program Files (x86)\Common Files\Siemens\Bin,将这两个dll复制到debug根目录下并手动添加引用。
2、Windows窗体界面设计如下图所示:
3、编写读取代码
4、编写写入代码
5、读取结果:
6、写入结果
3. 访问WINCC控件
1、重新新建一个窗体,窗体内容和布局与之前一致:
2、读取代码
3、写入代码
4、读取结果
5、写入结果
这里值得注意的是,通过访问控件实现的写入并没有真正写入PLC,所以这种方式仅限于读取数据,但可以通过这种方式来设置控件的其他属性,比如样式、背景、文本等。
本文主要以学习研究为主,针对C#与WINCC之间的数据通信做了较为详尽的描述,相信对于很多电气工程师,尤其是以西门子PLC为主的电气工程师来说,会有很大帮助。也许这种情形目前用途不那么广泛,但是出现这种需求时,就会变得很有用。
我一直坚信因为努力才会有结果,而不是因为看到结果,才想着去努力,而是就像学习C#和上位机一样,你如果不学习,这些内容对你来说可能就是天方夜谭,但是如果你提前学习了,你会发现其实很简单。
近几年随着人工智能、物联网的普及,工控行业发生了很大的变化,每一位电气工程师都应该及时作出调整,至少学习一门高级编程语言,未雨绸缪,以更好的姿态来应对即将到来的智能制造2025。
最新文章
- 前端学HTTP之网站架构演化
- android 6.0 高通平台sensor 工作机制及流程(原创)
- *HDU1907 博弈
- 使用hexo搭建github.io博客(一)
- C# List<;T>;用法
- 转型?还是延伸?开源建站系统近乎推整套SNS社区解决方案
- 解决java.lang.NoClassDefFoundError: org/apache/log4j/Level
- Octopus系列之HttpCustom2.0模板引擎的处理,一个bug的分析
- extern &ldquo;C&rdquo;原理,用法以及使用场景-2016.01.05
- Hibernate一对一双向关联映射
- (5)I2C总线的10bit地址以及通用广播地址
- resolvconf: Error: /etc/resolv.conf isn&#39;t a symlink, not doing anything.
- Java_Activiti5_菜鸟也来学Activiti5工作流_之初识BPMN2.0的简单结构(五)
- WCF入门教程系列一
- iOS8 用AVAudioPlayer播放音乐(Swift)
- .net mvc mssql easyui treegrid 及时 编辑 ,支持拖拽
- WAMPServer多站点配置方法
- redis的常用公共方法
- 怎么对MySQL数据库操作大数据?这里有思路
- 服务器配置tomcat部署项目
热门文章
- 痞子衡嵌入式:链接函数到8字节对齐地址或可进一步提升i.MXRT内核执行性能
- Supervisor操作相关的进程
- [转] Socket通信实例
- 2019-02-03 线性表的顺序储存结构C语言实现
- 【JMeter_13】JMeter逻辑控制器__执行时间控制器<;Runtime Controller>;
- jni 字符串的梳理 2 字符串的处理操作
- SpringMVC 学习笔记(7)异常操作
- Swoole 绑定域名 80 端口 (Nginx 反向代理)
- 入门大数据---Kylin搭建与应用
- python+opencv切割细胞及细胞团(持续更新)