编者按:
前阵子,梁工为大家带来了一篇《我在国外现场亲历的一次工业安全事故》,让我们从第一现场视角感受到工业安全不可小觑。本月,梁工把压箱底的东西又搜出来了,让我们一起来看看技术大神日常最多使用的软件工具有些啥,相信会给大家一些启发。
会使用工具是人类与其他动物最主要的区别。已经2020了,虽然人类还没有实现星际旅行,还没有接触到外星人,但是我们已经开发出很多能提高生产力的工具了。善于利用这些工具,事半功倍。
我日常的工作正如文末个人介绍中所写,主要是PLC/SCADA/工业大数据项目,有空也写写技术文章。下面把我的软件工具箱翻出来,给大家介绍一下我常用的为数不多的几个工具。
一. 站在巨人的肩膀上
1. Excel
这个不用多介绍了,想必大家都非常熟悉,而且也经常在用,但我发现还是有很多人只是把它当作一个可以输入文字的表格来用,并没有充分利用好这个工具。
在工程项目中有很多场景都可以借助Excel来提高效率和准确度,比如:
* 变量的创建
* 报警信息的创建
* 设定值的保存和修改
* HMI画面的批量操作(某些软件支持Excel直接交互操作,某些软件可以导出csv,xml等格式)
* PLC编程(生成源文件后在Excel里操作)
* 曲线拟合
……
Excel最强大之处我觉得是无需编程便能实现很多高级的功能。作为工程人员,我觉得至少要掌握以下操作:
* 数据导入导出
* 排序/筛选/查找/替换
* 生成图表
* 数据工具
* 公式(我一直认为公式作为Excel的核心之一,应该已被大多数人熟知。但事实却不然,有些人根本不知道原来有这么多公式可以用,有些人首先想到用的是VBA)
2. Dia/Paint.net/Powerpoint
Dia是一个免费的开源画图工具,我经常用它画一些流程图和系统框图,朴素小巧易用,而且还免费,满足了我对一个软件的所有要求。
Paint.net是一个类photoshop的图型软件,同样的朴素小巧易用免费。我会用它创建或编辑一些HMI图标。
虽然现在我很少自己做PPT了,但我还是经常用Powerpoint输入公式和画一些简单的图型。其实有很多更好的公式输入工具,但我不写论文,Office的公式编辑器和对我来说就够用了。
3. 虚拟机VM
我们偶尔还是会遇到运行着Win NT, Win XP甚至DOS的机器,这些机器里安装了很多与现在的操作系统不兼容的软件,一个虚拟机软件能很好地解决这个问题。
另外如果需要用到多台设备做一些通讯测试的时候,使用虚拟机能大大地节省硬件资源。
现在很多公司的系统都实现虚拟化,提升了系统的扩展性和灵活性的同时降低了维护和管理成本。PLC的虚拟化多年前已有人在实践了,这很有可能是未来的一个趋势。扯远了,以后有机会再聊虚拟化。
我的工作电脑的系统里只装有Office,Dia,Paint.net,pdf阅读器,网页浏览器和VMware Player(免费),其他的软件我都装在了虚拟机里面。
4. Notes/Google Keep
灵感这个东西稍纵即逝,我们需要一个工具能随时随地并能快速地把想到的东西记录下来,而且能同步到电脑,方便日后作进一步的扩展。
Notes是iphone自带的一个APP,这篇文章就是在手机里用Notes写的,选择它的理由是它朴素小巧易用系统自带,且能与电脑同步。Google Keep也是类似的一个工具,我也同时有在用。
我相信其他操作系统也有自带类似的工具,或者有很多功能更加强大的APP可以选择。选择一个合适自己的,随时随地把想法记下来,一两年以后再回顾过去自己写的东西,你可能看到个人的发现、时间的流逝、历史的变迁。
5. 一些在线工具
现在有很多工具都有在线版本了,无需安装,只要能上网就可以用。比如前面介绍的画图,公式编辑等都有在线的替代版本。
下面的一些是我经常用到的:
数学工具(Matlab也有在线版,但不是免费的和目前还不支持Simulink)
https://www.wolframalpha.com/
https://www.desmos.com/
https://www.symbolab.com/
单位转换
http://online-unit-converter.com/index.html
正则表达式测试
https://regexr.com/
json格式解析(还有很多类似的工具解析xml、csv等和相互转换的,大家可以根据需要在网上搜索)
http://json.parser.online.fr/
二. 自己动手,丰衣足食
当现有的工具不能满足我们的需求的时候,我们就需要自行编程解决了。以下介绍的是一些通用工具,与工程平台无关,一些平台指定的编程语言和工具(比如C和VB之于WinCC, IEC 61131-3之于PLC)并不在本文讨论范围之内。
1. VBA
VBA不能独立运行,需要依附于某一个主应用程序,用于扩展主应用程序的功能或者自动化主应用程序的操作。比如Excel、WinCC、AutoCAD等都是VBA的宿主应用程序。
现在每当大家说起VBA,大部分时候都是指Excel VBA。Excel配合VBA,如虎添翼。借助VBA,我们可以实现很多一键操作,是偷懒的好帮手,比如
* 一键创建目标(变量、消息、对象等等)
* 一键转换类型
* 一键查询
* 一键计算
……
另外VBA还可以引用库作进一步的扩展,比如对正则表达式的支持,数据库连接,工业通讯(OPC/Modbus等),与其他软件平台(如SCADA)的交互等等,可谓无所不能,无限可能。
我曾经遇到过一个技术经理,天天琢磨Excel + VBA,开发了很多小工具提高团队的工程效率。他操作Excel已经达到不用鼠标的地步,看他用Excel就像在弹钢琴一样。
2. Powershell
根据百度百科,Powershell是微软Windows下的命令行外壳程序和脚本环境。
Powershell是我近年来大力向周围的人推荐的工具。毫不夸张地说,我第一次用它就有种相见恨晚的感觉。这么好的工具,知道的人和用的人真不多。
首先它是Windows自带,意味着不用额外花钱购买。另外它是Windows自带,意味着它与Windows紧密结合,能很方便地管理Windows。最重要的还是Windows自带,意味着其程序可以利用 .NET框架的强大功能。
大部分的工程软件都只支持Windows,而且大部分都提供有.NET的API,Powershell有天生的优势,能很好地与这些软件进行交互。其轻量级易用免费又不失强大的特点是编写一些小工具最好的选择,而且Powershell还支持窗体控件。
自从用了Powershell,C#和VBA用少了,睡眠充足了,头痛少了,身体也健康了。
3. 正则表达式
工程数据有很大一部分是字符,比如变量名、消息、路径、配置、设备描述等等,要批量处理这类型数据,需要有一种工具,使得我们的程序能查找出需要的内容,正则表达式正是这样一个工具。
正则表达式是一种字符串匹配/查询模式,它可以用来检查一个字符串是否含有某个子串,将匹配的子串替换或者从某个字符串中取出符合某个条件的子串等等。
比如以下的VBA程序的作用是找出一个字符串中以PC开头,TE结尾的子串:
4. SQL
VBA和Powershell可以不懂可以不用,但是SQL可不能不用。SQL作为数据库操作语言,只要有关系型数据库(有些nosql数据库也支持)的地方,几乎都会用到它。与我们这行相关的SCADA、Historian和MES系统都离不开它。
如果让人从成万上亿条记录中找出需要的数据,简直不可想象。但有了SQL,那就是瞬间之间的事。
如果你的VBA或Powershell或其他编程语言的程序,连接上数据库,配合SQL,真有点海阔凭鱼跃,天高任鸟飞的感觉。
当然数据不仅仅只存在数据库里,还可能以txt、csv、json、xml等文档格式保存,而这些格式的文档很常见,掌握如何通过程序解析它们也很重要。
三. 总结
有人用Excel作画,有人用汇编语言写游戏,有人在“我的世界”游戏中搭建出CPU,这些作为兴趣爱好值得拍掌鼓励。但在工作中,我们应该尽量借助前人的成果,尽量自动化一切繁杂琐碎的事情,这样我们才有更多的时间去作画,游戏和追逐梦想。
各位工程师朋友,您有什么常用的软件工具,欢迎在留言区推荐给大家!