c# 怎么获取autosize为true的控件高度_扩散给工程师:从零开始教你基于C#开发WinCC语音报警插件【附源代码】...

导语

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

bc5a1e24812ad2a3e296048fc673af3c.gif

        对于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窗体应用,这里的窗体主要是用于测试,然后在此基础上,创建一个类库项目:
a4de16b7689df97a901c01a0ca0352c9.png
  • 在类库的基础上,右击添加新建项,项目类型选择自定义控件,取名为AlarmVoiceBroadcast:
df685aebbf52b4ec6c71e3fcf19cc28e.png
  • 经过前期的分析,这个语音报警控件应该包含以下内容:报警助手启用禁用、语音播报启用禁用、报警检测上升沿下降沿选择、报警播报方式单次或循环、系统实时报警显示、系统报警日志显示。因此,语音报警助手界面设计如下图所示:
88bea4751fa693551d2ea09fa2403aa1.png
  • 开发过程中,以下几个问题需要思考:

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

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

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

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

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

3 控件应用

  • 控件开发完成后,最终生成的是一个dll动态链接库文件,将该dll复制到WinCC项目中,通过控件栏中的.NET控件右击添加这个dll。
b940cf354c9a459990b98d259d01389a.png
  • 将该控件拖放到WinCC界面中,并创建一些用于测试的按钮功能,效果如下图所示:
517f292d8201d26329d2081bafa32101.png
  • 创建一些内部变量,包括3个布尔变量(Alarm1、Alarm2、Alarm3)以及3个模拟量变量(Pressure1、Pressure2、Pressure3)。
f8775800b3b6e8232382dbb632eef59a.png
  • 控件属性绑定,对于Toogle按钮及输入输出域,直接绑定对应的变量即可,对于语音报警控件,需要设置Alarm1-Alarm6,其中Alarm1-Alarm3直接绑定内部变量Alarm1-Alarm3,对于Alarm4-Alarm6,由于是模拟量,需要通过动态对话框进行设置,如下图所示:
2338d7b1df51da703f0aa851be3f31af.png
  • 对于报警播报的内容提示,根据实际情况填写即可:
6412158d31b1556d718cf6360290faed.png
  • 绑定完成后,运行测试即可,最终运行效果可以观看下方视频:

ffd0eb8b45ce386e64a37d1fc7076cd5.png

     智能仓储物流技术研习社

长按识别别关注

d901ddc8be907b528a4454b751b96574.png

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

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

5fe3f0c1f448f1cf5421f3d98542aa24.png

e86be91998219b19bad3446becb50dbd.png d20831efc7e05045202030d651c41049.png

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

9cdd58854e2275eb572f689c1dcb7e27.png

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

7478593c99eebae9d493686961feefc7.png

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

fc1c0199a1a2c4b67270755fe86837ba.png

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

9b4793e01d2f7b16abdabf4c4c90c695.png

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

32446289b5f91bee5a47e7e5dffbc618.png

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

e969fd7b5f71da9136300f5fef113fe7.png

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

88c9cc11897c9204e9a0d14d47c5e5bd.png

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

WinCC报警语音助手是一款 报警语音助手是一款 WinCC的辅助软件,它可以将报警消息语音方式通知 的辅助软件,它可以将报警消息语音方式通知 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 操作员。该报警语音并未使用预先录制的频文件,而是自动朗读当前消息本它可 以获取 WinCC报警控件中的当前消息文本,并判断它应答状态如果已被 报警控件中的当前消息文本,并判断它应答状态如果已被 应答则不再发出语音。 该软件已在下列平台测试通过: Win7 + WinCC V7.3 Win10 + TIA WinCC V14 SP1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值