既然有组态软件,为什么还要学C#上位机?
什么是上位机
百度百科是这么定义上位机的:
上位机是指可以直接发出操控命令的计算机,英文名一般是PC/Host Computer/Master Computer/Upper Computer。
我们可以通过上位机运行一些特定的软件来显示各种信号变化(液压,水位,温度等),上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。
通常情况下,工控机,工作站,触摸屏作为上位机,通信控制PLC,单片机等作为下位机,从而控制相关设备元件和驱动装置。
因此上位机本质是一台电脑,实际运行着一个可供用户操作监控的软件,这个软件称之为上位机软件,所以我们学习上位机开发,其实是学习怎么开发上位机软件,更具体的是指如何使用高级语言来开发上位机软件。
什么是组态软件
组态软件,又称组态监控系统软件,英文名是Scada(Supervisory Control And Data Acquisition),是指数据采集与过程控制的专用软件,也是指在自动控制系统监控层一级的软件平台和开发环境。这些软件实际上也是一种通过灵活的组态方式,为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。
所以组态软件本身也是属于上位机软件。
为什么选择C#
能够开发上位机的语言不止C#一种,比如Java、C++/QT、Python、LabVIW等,在工控领域,C#的地位,就像Windows在操作系统中的地位一样,我们为什么选择C#,主要是一种综合考虑,也许C#在各个方面都不突出,但是它的综合能力是非常强的,主要是以下几个方面:
• 学习成本,说白了,就是难易程度
• 资源成本,说白了,就是网上资料多不多
• 人员基数,说白了,就是使用的人多不多
• 可持续性,说白了,就是能用多久
• 应用范围,说白了,就是应用是否单一化
所以并不是我们培训C#,大家也要跟着学C#,而是因为C#足够好,我们才选择培训C#。
如果哪一天我们发现有更好的语言,我们也会改变赛道。
组态软件与C#上位机
组态软件与C#上位机同样都可以开发上位机软件,所以很多人会将两者做对比,其实我觉得两者不是同一个竞品,使用组态软件,我们只是一个使用者的角色,C#开发上位机,我们更多的是一个开发者的角色。
就拿日常的汽车来打比方,组态软件就是给驾驶员使用的,我们只管开车就行了,但是C#上位机是给汽车制造工程师使用的,需要去研究汽车,改造汽车。
我们使用组态软件,看重的是它的稳定及便捷,但是我们选择C#上位机,无非就是两个原因:
1、不愿意花组态授权的费用,组态软件是按照项目和点数收费的,如果公司每年的项目达到几百上千,这是一笔很大的开支。
2、有很多项目和功能,组态软件是实现不了的,这是一个客观事实。
如果排除这两个原因,组态软件可以免费使用,而且能够满足我们所有的功能需求,那么学习C#上位机将没有任何意义。
但恰恰有这两方面的原因,所以越来越多的人开始来学习上位机,能够解决公司的难题,就是变相地给自己涨薪开道。
C#上位机应用场景
首先可以明确的是,基本上组态软件可以实现的功能,C#上位机都可以实现。反之,却不一样,即使我们排除金钱的因素,也会有一些场景是组态软件实现不了,必须要高级语言开发的。
业务非常复杂的项目,这个一般在特定的行业应用比较多。
系统对接复杂的项目,需要同时对接扫码、相机、机器人、MES等多个系统。
涉及到运动控制卡、运动控制器的项目。
机器视觉OCR、抓取、识别、测量等的项目。
实验室项目,更侧重于数据分析的项目。
三维动画或数字孪生的项目。
客户定制化需要比较多的项目。
C#上位机开发时间
很多人会认为上位机开发成本很高、难度很大、时间很长。
对于新手来说,相对于组态软件,C#开发上位机确实时间也会更久,甚至会不了了之。
但是随着项目的增多,开发越来越熟练,项目积累到一定量之后,会形成一个量变到质变,会有很成熟的开发框架,很灵活的开发技巧,很完善的系统架构,而且这种积累会持续存在。