【公众号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。

最新文章

  1. 前端学HTTP之网站架构演化
  2. android 6.0 高通平台sensor 工作机制及流程(原创)
  3. *HDU1907 博弈
  4. 使用hexo搭建github.io博客(一)
  5. C# List<T>用法
  6. 转型?还是延伸?开源建站系统近乎推整套SNS社区解决方案
  7. 解决java.lang.NoClassDefFoundError: org/apache/log4j/Level
  8. Octopus系列之HttpCustom2.0模板引擎的处理,一个bug的分析
  9. extern “C”原理,用法以及使用场景-2016.01.05
  10. Hibernate一对一双向关联映射
  11. (5)I2C总线的10bit地址以及通用广播地址
  12. resolvconf: Error: /etc/resolv.conf isn't a symlink, not doing anything.
  13. Java_Activiti5_菜鸟也来学Activiti5工作流_之初识BPMN2.0的简单结构(五)
  14. WCF入门教程系列一
  15. iOS8 用AVAudioPlayer播放音乐(Swift)
  16. .net mvc mssql easyui treegrid 及时 编辑 ,支持拖拽
  17. WAMPServer多站点配置方法
  18. redis的常用公共方法
  19. 怎么对MySQL数据库操作大数据?这里有思路
  20. 服务器配置tomcat部署项目

热门文章

  1. 痞子衡嵌入式:链接函数到8字节对齐地址或可进一步提升i.MXRT内核执行性能
  2. Supervisor操作相关的进程
  3. [转] Socket通信实例
  4. 2019-02-03 线性表的顺序储存结构C语言实现
  5. 【JMeter_13】JMeter逻辑控制器__执行时间控制器<Runtime Controller>
  6. jni 字符串的梳理 2 字符串的处理操作
  7. SpringMVC 学习笔记(7)异常操作
  8. Swoole 绑定域名 80 端口 (Nginx 反向代理)
  9. 入门大数据---Kylin搭建与应用
  10. python+opencv切割细胞及细胞团(持续更新)