扩散给工程师:从零开始教你基于C#开发WinCC语音报警插件【附源代码】

导语

大家好,我是智能仓储物流技术研习社的社长,老K。相信在很多项目中,大家都会用到西门子的WinCC来监控现场的设备状态。如果客户需要语音播报,该咋办呢?

扩散给工程师:从零开始教你基于C#开发WinCC语音报警插件【附源代码】_第1张图片

        对于WinCC,我相信很多人都比较熟悉,WinCC自带报警控件,可以实现报警的监测及显示。在之前做的一个比较大的项目中,项目已经使用WinCC开发并调试完毕,但是客户提出系统有报警时,需要语音播报的需求,因为当时没做过这样的,所以便查找资料,找了很多也无法通过WinCC实现,最后决定通过C#开发一个语音播报控件,集成到WinCC中,经过2天的研究测试(当时刚开始学习C#),终于实现了所有的功能,并且也得到了客户的认可。

        现在有时候想起这个事,仍然心有余悸,如果当初没有提前学习C#,也许这个项目就没法完美交差,客户也会不满意,后续也不会有更多的业务合作,所以我始终坚信一句话:凡事预则立,不预则废。转型学习上位机也是一样,从今天开始,也许明天就会不一样。之所以会提及这个事情,最近有位学员一直在研究这个,所以我就稍微做了一下整理,把这个案例分享给大家。

1  开发思路

如果想实现C#开发语音报警控件,植入到WinCC中,需要解决以下几个技术要求:WinCC支持.NET控件、C#可以实现语音播报功能、报警逻辑要清晰。

  • 对于WinCC支持.NET控件, WinCC 从V7.0开始支持.NET自定义控件。

  • 其次,C#可以实现语音播报功能,可以通过调用系统自带的语音类库文件,实现语音播报。

  • 而对于报警逻辑,主要是对沿信号的检测,包括上升沿及下降沿。

2 开发流程

  • 首先通过 VS2019 创建一个Windows窗体应用,这里的窗体主要是用于测试,然后在此基础上,创建一个类库项目:

  • 在类库的基础上,右击添加新建项,项目类型选择自定义控件,取名为AlarmVoiceBroadcast:

  • 经过前期的分析,这个语音报警控件应该包含以下内容:报警助手启用禁用、语音播报启用禁用、报警检测上升沿下降沿选择、报警播报方式单次或循环、系统实时报警显示、系统报警日志显示。因此,语音报警助手界面设计如下图所示:

  • 开发过程中,以下几个问题需要思考:

(1)整个控件的思想,就是通过检测N个变量的实时状态(这里都是布尔变量),结合上升沿/下降沿,当发现某个变量报警时,进行语音播报,并将报警状态显示到实时报警及报警日志中。经过测试发现,这里如果将报警变量设置为数组或者集合,WinCC均不支持,因此没法将监测报警变量的数量动态化,只能按照单个布尔类型,我这里是根据实际需求创建了20个布尔变量,如果大家有更好的方法实现动态化,可以反馈给我。

(2)对于检测到某个变量发生了报警,语音播报的内容应该是什么?我这里针对每个报警创建了一个报警说明属性,因此也相应地创建了20个字符串变量,通过索引与报警变量一一对应。

(3)由于需要实时检测,因此需要循环执行。C#中循环执行一般有两种方式,一种是定时器,一种是多线程,经过测试发现,多线程的形式无法实现,似乎是WinCC不支持,最终采用的是定时器的方式。

(4)循环检测实现思路:针对上升沿:循环针对每个报警变量,将当前值与缓存值做对比,如果当前值为True,缓存值为False,则表示报警触发,如果当前值为False,缓存值为True,则表示报警消除。针对下降沿:循环针对每个报警变量,将当前值与缓存值做对比,如果当前值为False,缓存值为True,则表示报警触发,如果当前值为True,缓存值为False,则表示报警消除。

  • 语音相关控制,语音控制包括播报音量、播报语速、播报性别及年龄。

3 控件应用

  • 控件开发完成后,最终生成的是一个dll动态链接库文件,将该dll复制到WinCC项目中,通过控件栏中的.NET控件右击添加这个dll。

  • 将该控件拖放到WinCC界面中,并创建一些用于测试的按钮功能,效果如下图所示:

  • 创建一些内部变量,包括3个布尔变量(Alarm1、Alarm2、Alarm3)以及3个模拟量变量(Pressure1、Pressure2、Pressure3)。

  • 控件属性绑定,对于Toogle按钮及输入输出域,直接绑定对应的变量即可,对于语音报警控件,需要设置Alarm1-Alarm6,其中Alarm1-Alarm3直接绑定内部变量Alarm1-Alarm3,对于Alarm4-Alarm6,由于是模拟量,需要通过动态对话框进行设置,如下图所示:

  • 对于报警播报的内容提示,根据实际情况填写即可:

  • 绑定完成后,运行测试即可,最终运行效果可以观看下方视频:

     智能仓储物流技术研习社

长按识别别关注

围绕厂内物流Intralogisitics,分享仓储物流自动化技术、设备、系统等知识,畅谈智能仓储物流的未来和去向。专栏包括智能仓储物流自动化规划设计,自动化立体库、智能机器人,自动化拣选系统,仓储管理软件WMS,AGV应用等等一系列热点内容。

  您也可以扫描如下与社长老King取得联系。

老K观察 | 什么?!物流技术也要被美国“卡”脖子?


原创|一气呵成|多组动图|揭秘仓储物流中的自动化包装技术


原创|干货|长文|264亿件包裹怎么破?闪电式自动化分拣技术 细节大起底!

原创|长文|孙子兵法| 百万级订单如何“拆零拣选”?

不读后悔:风口上的仓储自动化

【原创】葵花宝典!自动化拣选的秘密(整箱拣选)- 偷摸收藏,练吧

继续收藏!轻载料箱类自动化立体库的前世今生

建议收藏!老K谈谈自动化立体库的前世今生

你可能感兴趣的:(编程语言,java,eclipse,人工智能,移动开发)