为了帮助IT从业者职业之路拥有更多收获,在诸多C粉的殷切期待下,由 CTO俱乐部打造的CTO线上讲堂自登场以来获得大家好评。本期邀请叶帆科技创始人兼CEO、前微软.NET Micro Framework成员、微软全球最有价值专家刘洪峰带来“浅析工业级物联网项目的快速开发 ”的主题分享。
欢迎加入CTO讲堂微信群与业界大咖零距离沟通,11月12日本期讲堂报名方式拖至文末查看。
分享嘉宾:叶帆科技创始人兼CEO、微软全球最有价值专家 刘洪峰
嘉宾简介:刘洪峰,网名叶帆,叶帆科技创始人兼CEO,前微软(中国).NET Micro Framework开发团队成员,微软全球最有价值专家(MVP),CSDN十大MVB。以微软.NET Micro Framework系统为核心,研发了物联网智能网关、物联网智能终端,YFIOs和YFHMI等物联网中间件软硬件平台。
刘洪峰有十余年工控经验,是国内最早一批接触微软.NET Micro Framework技术的人,从2007年.NET Micro Framework刚开始引入中国就开始研究。并于2008年加入微软亚太集团.NET Micro Framework项目组,进行了为期四年的深入学习。不仅完成了.NET Micro Framework第一个版本的文件系统(FAT32),也是全球第一个成功把.NET Micro Framework移植到ARM Cortex-M3架构上的人。博客:http://blog.csdn.net/yfiot、 微博:http://weibo.com/yfsoft
公司简介:北京叶帆易通科技有限公司(简称:叶帆科技)是一家软硬结合的高科技公司。专注于物联网中间件、物联网二次开发和软硬件集成技术方案研究和开发,以成熟的.NET Micro Framework技术为核心,用组态软件的架构和思想去构建物联网应用方案。
以下是11月6日CTO讲堂现场完整速记:
主持人:讲堂正式开始,现在欢迎嘉宾叶帆科技创始人兼CEO刘洪峰,请您做个自我介绍吧。
刘洪峰:大家好,我是刘洪峰,叶帆科技创始人兼CEO。2001年进入工控行业,开发了一些诸如二型计量系统、焦炉四大机车自动行走系统、LED广告大屏显示系统、WinCE嵌入式组态和地铁隧道广告通信系统等等。
08年进入微软研发集团.NET Micro Framework项目组做相关软硬件开发,做了一些比如养牛场远程监控,远程医疗系统等案例。2013年创立叶帆科技,开始深入开发物联网系统,比如智能网关,智能终端及YFIOs数据组态及YFHMI嵌入式组态等。
主持人:看您的经历有丰富的工控领域经验,在什么情况下你决定开始创业?最初的想法是怎样的?创业中遇到的挑战有哪些?
刘洪峰:在给别人打工的生涯中,你想做什么,其实是没有主导权和决定权的。你擅长的技术或你看好的产品研发方向,往往和公司的决策背道而驰,这是让人很痛苦的一件事。
在各种软硬件技术能力积累到一定程度的时候,就想按自己的想法和思路做一些产品了。创业最大的挑战,应该是在硬件研发方面,因为我是从1995年开始的软件开发学习,而真正的硬件开发学习才是从2010年左右开始,所以在硬件设计、器件采购、生产和调试方面遇到了很多坎,中间也曾更替过三个硬件合作伙伴。直到今天才相对熟练的掌握了硬件的设计、开发、生产和调试流程。
主持人:请介绍一下目前叶帆科技目前的情况以及技术团队构成。
刘洪峰:由于物联网开发需要各方面的技术,比如网络Web服务开发,手机平板移动开发,PC程序开发及嵌入式硬件开发,还有各种通信类程序开发,所以对人的技术能力要求比较高,但是作为一个创业型公司,很难一时找到比较合适的全职人员。所以技术团队主要一些核心人员和外围各种技能的兼职开发人员构成。
主持人:请您介绍下叶帆科技目前提供的产品及服务吧,相对同类产品竞争优势有哪些?
刘洪峰:有三种类型:
最大的优势有三点:
主持人:请您谈谈物联网和互联网+的异同?
刘洪峰:简单的说:互联网+,是通过互联网把人和设备建立了直接的关联,人可以方便的远程操控各种智能设备。物联网,我一直认为是工控网的外延,是有数据采集,具备自动控制能力系统。人的角色只是监视其中的异常情况,主要的控制逻辑是智能设备自动完成,所以也就是所谓的自动化控制。
相同点:都是依托互联网和移动互联,还有需要云服务及移动端设备。
不同点:互联网+,更多的体现在云服务层面,特别是和人交互方面,对智能硬件的要求并不是太高;物联网,需要一定的自动化能力,并且对设备要求高,一般要求7*24连续运行,并且大型物联网系统,会非常复杂,不仅传感器总多,控制设备及控制逻辑也是多而繁杂。
主持人:工业级物联网和其他物联网都有哪些区别(比如智能家居产品),请谈谈您的看法。
刘洪峰:一般情况下,对产品来说,有这么几个级别:商用级(民用)、工业级、军用级和汽车航空类级。其最大的指标差异就是工作温度,比如民用的是0~70度,工业的是-20-85度,军用-40-125度。当然可靠性,抗电磁干扰性要求也是逐步提高。
所以做产品的时候,工业级和非工业级在器件选购及板子设计方面都有比较大的区别,比如工业上,往往都是要做宽电压输入,光电隔离,抗电磁干扰等等处理。另外对程序要求也很高,可靠性要很强,并且工控项目网关周期短,变化大,需要产品提供更多二次开发的支持。
主持人:典型工业级物联网项目都包含哪些部分?
刘洪峰:三大部分:一、数据采集及设备控制(输入和输出);二、业务逻辑处理;三、远程动画监控、视频监控、报表及曲线。当然由于是工控项目,比如远程调试及远程升级工具等等也是非常必要的。
我举两个例子来详细说明一下,一个是门禁系统,一个是污水处理系统。我先简单介绍一下门禁系统,一个相对典型的门禁系统的架构示意图如下:
输入设备:RFID读卡器+ID卡,串口摄像头,常见的RFID读卡器的通信协议接口一般是WG26(韦根26),电压12V的比较多,也有5V的(如果是5V的一般可以直接对接主芯片,如果不是,需要做一些光隔或电平转换处理)。智能网关封装了WG26的功能库(最多可以同时支持8路,并且不仅仅限定为26位数据,最多可以100多位)。当然不仅仅是ID号,输入的数字键和门铃键也是以编码信息提供给用户(一般是4位编码)。串口摄像头通过RS232连接到网关,网关封装了一些常见摄像头的协议库,调用函数即可以获取当前的图像。
输出设备:继电器模块,语音模块,门磁装置。继电器模块控制比较简单,调用标准的.NET Micro Framework库,写入True就是通,写入False就是断开。语音模块,支持WAV语音文件播放。门磁装置由继电器来进行控制。
业务逻辑处理:
远程监控:
这个远程监控比较简单,主要就是接收摄像头图片和控制门磁开闭。当访客按门铃后,客户端程序会自动弹出,并显示摄像头图片,用户可以直接用鼠标单击按钮,就可以远程开门(同时语音模块,发出“请进”的语音)。
以上的门禁系统比较简单,也谈不上真正的工业级,但是整个的环节和工业级项目类似。下面我们介绍一下污水处理系统。
输入设备/输出设备:
常见的工业级现场,输入输出一般这么几种,一种是干点输入输出,输入一般是0-24V的电压,高电压表示1,低电压表示0。输出就是继电器输出了。当然也有可控硅控制的输出,优点是开关次数多。另一种就是模拟量输入输出,输入一般有三种,0-5V,0-10V,4-20mA,输出0~20mA。这之外比较常见的通信接口就是RS485/422,RS232,CAN,以太网通信接口了。智能终端和智能网关设备的型号有十几种之多,主要就是这些接口的各种组合。
针对这个污水项目,输入主要就是若干路24V左右的开关信号,比如高低水位信号,各种电机是否开启反馈信号等等。输出信号就是通过控制继电器,控制各种电机的启停。另外还通过RS485,读取电表或水表的读数。
业务逻辑:
这个逻辑相对复杂,我们简单说一下,比如检测到了高水位,我们开启提升泵(还要根据配置及主设备是否正常,来开启备用设备等等,其他泵类似),延时指定时间后,开启鼓风机等。根据定时开启回流泵或排污泵。同时还要检测报警信息,如鼓风机温度超高,则要自动关闭鼓风机等等。同样当检测到低水位,要关闭相关的设备。
远程监控:
这是现场监控图,动画基于Html5实现,我们有一个组态软件,可以直接导出html5的画面。通过WebSocket进行数据通信,各种动画IO,都是导出的时候 自动绑定的。
这是运行日志,记录一些运行情况,这个程序是物联网中间件的一个策略程序,用户可以自己把相关的内容写入,供最终用户查询。
这是摄像头监控,支持1~32个。
工艺报表,两种方式,一个日报表,一个是统计报表,可以切换显示。这些字段都是可以自定义的。
工艺参数,这个也是可以自定义的。以上是部分功能的页面,工控中也常包括一些系统诊断方面的页面。我们还有一个系统用户的后台页面,可以对上述的页面灵活定制。除了在PC上通过浏览器浏览外,也可以通过手机或平板来进行操控。后续还将支持手机APP或微信接入操控。
主持人:再谈到一些具体的技术方面,也就是今天的主题——工业级物联网项目的快速开发,组态画面如何快速转换为Html5动画?
刘洪峰:如果身处工控领域,那么对组态软件不会陌生,为什么需要组态软件呢?
因为工控项目工期相对较紧,及时同样的项目,每个现场都会有一定的区别,如果新开发代码,很难保证代码的可靠性。所以用组态软件,采用搭积木的方式,快速完成项目,由于每个模块都是考验过的,所以整体可靠性也会很高。
我们的组态软件的特色是除支持轻量级组态硬件(一个单片里面也可以跑组态),还支持PC组态及Html5组态。针对Html5动画来说,实现起来并不是特别难,难的是各种动画元素和设备变量的绑定及对应关系,组态软件转换为Html5的优势是,不仅仅动画完全一一实现,并且IO绑定关系还在,可以直接和后台服务通信,快速显示现场的设备状态。
这是我们的组态开发环境,最早是WinCE的组态开发环境,后期我们调整为.NET Micro Framework的组态。再后来就是PC组态及现在的Html5组态。这个平台可扩展性强,Html5组态就是通过插件导出的。上面的画面是一个 垃圾处理的组态画面。
导出到网页上就是这个样子:当然需要传入一些参数,比如websocket服务器的ip,端口号。当然也可以在网页中直接嵌入,不过为了灵活,为了让一个html5文件,显示多个相同的现场,采用参数的方式。
这个是污水处理的画面,绑定关系要复杂一些,特别是流动的动画。早期的这种画面,不用组态方式,用代码写,是很繁琐的。
导出到网页上,就是这个样子。
主持人:请谈谈基于WebSocket协议,通过IO字典快速和后台服务器进行通信的技术特点。
刘洪峰:正是因为有了WebSocket才使得基于Html5组态有了实现的可能。我这样表达可能不是太严谨。早期这种动画 一般都是flash,但是我们也知道 iOS系统已经不支持flash了。如果用 其他基于http通信协议做 动画,代价也会很高。WebSocket天然的比较适合,并且一旦做好,目前可以说 全平台支持。
通过Html5提供的绘图指令,可以构建组态图元库,每个图元有一个或多个动画点,每个动画点和一个IO字典里面的变量进行绑定,根据这个变量的值显示不同的颜色或图案。组态软件在导出Html5组态画面的时候,会自动进行图元和IO字典变量的绑定,WebSocket负责把这些变量和后台WebSocket服务程序进行对接(组态软件导出组态画面的同时,会导出一个IO字典表,直接导入服务器后台就可以实现对接)。
这里需要强调一下,做基于html5的组态和pc或嵌入式上的不同。后者程序都是编译好的,通过配置,反序列化出来组态,包括IO绑定。
但是 html5的是通过js脚本,是代码形式存在,这就有最大的灵活度,意味着我们可以不用配置,代码本身就是配置。另外就是js脚本在当前硬件条件下,做复杂的动画和通信,效率是非常高的,超出我们的意料。
主持人:请介绍下智能网关/智能终端等通过组态化软件支持,实现少编程或免编程完成数据采集,控制和通信的过程。
刘洪峰:举一个简单的例子,比如采集温湿度,温湿度传感器种类很多,通信链路和通信协议也多样,比如有RS485、I2C、单总线、AD等等。这个时候如果是组态软件支持,可以选择部署对应的驱动即可,对应的都是两个变量T和H(温度和湿度),用户直接读取这两个变量值即可。
我们这个组态是可以自动添加IO变量的,加入驱动的同时,IO变量也就有了。(当然对比如modbus这种非明确IO的,不能实现自动添加)。如果希望把温度和湿度传递到云端去,这个时候直接配置一个系统策略(云和端通信),配置好需要上传的IO字典即可(对应服务器上的中间件,也需要配置一下,设定好对应的上传IO字典,一般都是导入IO的xml文件即可)。
如果需要控制,那么可以加一个一路或多路继电器的驱动,每一路继电器也对应一个IO字典变量,向其中写入1,就是开启继电器,写入0,就是断开继电器。这个时候可以用一个标准系统策略,通过配置建立关系,比如T大于多少,就想继电器的变量写入1,低于多少,就写入0。
当然你也可以自己写一个简单的策略(C#或VB.NET),直接读取对应的变量,经过逻辑判断后,向输出变量写入对应的数据,可以实现相对复杂的控制。
主持人:请展开介绍一下Windows Azure + Windows 10 IoT + .NET Micro Framwork, 一体化的开发体验,全程软硬件.NET支持。
刘洪峰: Windows Azure是微软早就发力的一个云平台,不同于一般的云服务公司,微软不仅仅提供所谓的云主机,更多的是体现在云计算层面,并且和Visual Studio开发工具紧密结合,可以直接在线开发、上传、调试。开发效率和开发能力被大大拓展。
Windows 10横空出世最吸引人的地方就是UWP(通用平台程序)的提出,这就意味着,只要是Windows 10的系统,UWP程序都可以运行,无论是X86还是ARM架构,无论是PC,还是XBOX,手机或平板。
Windows 10 IoT是一款完全免费的系统,专门针对物联网研发的系统,除了UWP等特性的支持外,还对GPIO,SPI,I2C等等芯片层面的直接开发,提供了支持。并且在树莓派这种ARM低端开发板上也可以运行。大大扩展了Windows 10的应用范围。这次我去参加微软的技术大会,Windows 10 IoT 又出来两个版本, 当前是Windows 10 IoT core, 新出的是 移动版和企业版。
.NET Micro Framwork是微软2001年就开始研发的轻量级系统,可以在单片上运行,目前可以看,是Windows 10 IoT的一个补充。最近刚刚推出了最新V4.4版本,支持UWP接口,AllJoyn通信协议。另外.NET Micro Framework家族也衍生了一个产品LLILUM,支持把标准UWP程序直接编译为本地二进制代码,直接部署到芯片中运行(更小,更快)。
我是从2006年开始了解.net mf,2007年这个技术进入中国,2008年去微软去学习这个,2003那个时候的智能手表就是基于这个系统。LLILUM产品 其实目前德国的一个企业在做,就是把C#直接编译成二进制代码,一年授权使用费十几万,而微软是完全免费开源的。这个的执行效率就很高了,对资源的要求也非常小了。
一言以蔽之,由于这些平台全部都支持.NET平台开发,一样的开发环境,一样的开发语言,一致的开发调试体验,会让一个人的能力发挥最大,可以让更少的人在更短的时间内快速开发出可靠又实用的物联网项目。
微软的技术做深入的产品研发也许不是好选择,但是做项目,做集成确是最好的选择。特别是需要用户做二次开发的。
主持人:看到您已经在CSDN写了10多年的技术博客,能做到这一份长期的积累实属不易,请结合您自己这一路技术之路上的提升谈谈技术人该如何做到高效学习和提升技能?
刘洪峰:从1995年开始学习编程,从最初的TB(Ture Basic)到TC(Ture C),再到BC(Borland C/C++),在DOS平台上花了近乎4年的时间去学习编程,把一些书籍上的数学算法一一实现,各种功能的重复练习,在兴趣的支撑下去感受编程,铸造一种编程思维。如果没有这些作为基础,那么2008年进入嵌入式领域,做嵌入式开发和硬件设计,是很难顺利切入的。
技术本身,说到底都是相通的。只要学习的早期很扎实和深入的学习一门语言及相关技术,那么几年学成后,再学习其他的就简单了。需要值得一提的是,C/C++是一切开发语言基础,学好这个,其他的就不在话下了。
我到现在唯一比较感慨的就是,在DOS那个资讯相对贫瘠的时代,三年的时间专心在640*480分辨率的DOS系统上学习C和C++。所谓十年磨一剑,“十万小时”定律,莫不是这个道理。选对一件事,一个方向,坚定的走下去,肯定会有所成就的。
主持人:请结合您的切身体会谈谈一名合格的CTO或技术团队管理者应该是怎样的?
刘洪峰:技术领导者,需要选择技术路线和方向,另外就是设计相关的架构平台,有了这个为基础,可以针对性的进行选人用人。
另外我比较习惯谈心的方式,基本一两个月就会和相关的人谈一下,当然这是团队规模不是太大的情况下,比较好的方式。目前其实很多公司,要的是业绩和进度,往往这方面对员工关心不够,现在人的压力比以前大多了。多一些人情关怀,另外在技术上 一定是技术领导者,领先者,至少思想上是,要起到指导作用,这样才能在技术层面上,降低团队人员的压力。
主持人:在提升叶帆技术团队方面,有哪些思考?
刘洪峰:团队需要看到希望,这个希望不仅仅是技术层面的,也有经济层面的。要做最有价值的项目,让每个团队参与人员,都能感受到自身的价值所在。
我以前太过于偏重技术,很多事都是自己去了解,很深依赖团队,这是一个比较大的缺点。所以最近几年,也是走了出去,多进行交流和合作,其实是给自己的团队,扩展了一个更大的空间和舞台,让他们可以更好的发挥自己的能力,同时可以有更好的未来。
主持人:可否跟大家谈谈叶帆的技术团队氛围是怎样的?公司招人过程中,比较看重新人的哪些特质?
刘洪峰:只要团队目标一致,气氛就会比较融洽。比较看重的就是兴趣,兴趣是最好的老师,如果不喜欢自己所从事的工作,无论能力多强,都是不可取的。时间有限,先简单说这些。
主持人:对想在技术路线上走得更远的人,您都有什么建议和忠告?推荐一些您觉得非常不错的书籍吧。
刘洪峰:还是那句话,兴趣是最好的老师,选择任何一个切入点都可以,深入研究几年,然后再谈其他。现在是网络的时代,技术变化很快,书籍往往会比较延迟,所以建议还是多上网,多思考,培养自己的自学能力。
我个人的经验,如果想切入一个新的领域,或者是学习一门新的语言,那么最好选择一个最入门的书籍,越简单越好,比着做一遍,有了感觉后。在利用网络资源,有所侧重的去深入学习。
互动环节:LLILUM编译的二进制代码,在芯片上运行可以采集到单总线协议的温湿度值吗?单总线协议需要识别微妙级别的脉冲。在IOT下实现的,非常不稳定。
刘洪峰:LLILUM 并不都是C#代码,底层还是C,其实目前是 mbed,所以 这种肯定用C实现,然后C#接口调用,目前.net mf也支持单总线,也是底层C++驱动。mf的好处是,让一般初学者,也可以直接使用,复杂的留给高手 做驱动,做底层。
问:智能网管\智能终端 可以运行自己写的应用吗?
刘洪峰:当然,这是我们最主推的功能。代替部分PLC或PC应用场景,C#+VB.net开发,VS在线直接调试。
问:如果有些传感器的驱动没有,怎么办?
刘洪峰:.net mf官方不支持一般用户开发C++驱动,要写必须移植的时候加入,我们扩展了一个功能,类似wince的流式驱动,支持用mdk等工具 写C++驱动。然后C#直接调用。
互动环节:关于控制网络安全问题,以及业界常用的防范方法。
刘洪峰:SPI,I2C,AD,DA,CAN,RS232,RS485这些都是常见的支持。由于我们是中间件平台,策略用户可以自己写,用户可以选择,这是一。我们也有自己的协议,比如是二进制协议,采用常见的非对称加密。其实我们更希望用户自主来选择,这样技术多样化,防范其实会更好,我们只是提供基础平台而已。
互动环节:如您所讲,html5组态后台是有一个基于WebScoket协议的WebScoket服务程序在支撑对吧,这个服务程序是云端在线提供还是本地化部署?它与嵌入组态的应用系统的Web服务器是怎么一个部署关系?代理?
刘洪峰:web服务器都不需要,因为是客户端的程序。是的,我们这个有一个云端中间件,提供了websocket的服务。
问:websocket核心服务跟组态页面建立的是无刷新推送机制还是请求响应机制?
刘洪峰:
这个放在本地也可以,也是一个二次开发平台。目前我们是放在 阿里云,是的,这也是一个二次开发平台,用户只需要关注具体业务逻辑即可,换句话说,可以最快的速度,开发出比较专业的物联网系统。而不是简单的和几个智能硬件进行对接
我们有模板 ,模板其实高一些层次的抽象。中间件平台是更低一层。
问:那你这个中间件往下对数据网关接入有何要求?有标准协议输出吗?
刘洪峰:我们自己有自己的标准协议,通过导入,就可以直接对接。
比如这里定义好 上传IO,发布IO,上传的 就是现场设备。
问:往上的话有没有什么标准化的接口给上层业务系统用?说穿了就是只需要你采集数据,其他都我们自己干
刘洪峰:发布的 就是websocket对接的。
直接可以导入 设备组态的时候 上传IO。
问:那目前有其他研发团队用你们的中间件吗?而不是你自己的团队,说穿了各方面标准化的输出就好了,别人才能用,文档API之类
刘洪峰:当然,我们不做具体的项目,都是合作伙伴 配合完成最终的项目的。文档目前还没有太更新,后续会有比较新的。
互动环节:我现在是做PHP开发的,以前专业是电气自动化。我想要转型到物联网行业,那么我需要从哪里做起呢?
刘洪峰:应该先侧重服务端,然后再考虑和硬件对接。
互动环节:哪儿可以看到价格信息?
刘洪峰:netmf.taobao.com 有我们一些产品。
问:产品很强大的样子。支持vs2015community开发吗?
刘洪峰:硬件支持 VS2010 VS2012 VS2013 VS2015开发。
互动环节:这些产品都有光隔离吗?可以可靠用在工业现场吗?
刘洪峰:当然,我们这就是工业级的产品,最早的一代已经在现场运行3年了,新的也已经一年半以上了。宽电压,光电隔离,是一般的工控要求。