以.NET MF为依托,打造物联网时代轻量级嵌入式组态系统

标签: net mf 物联网 | 发表时间:2010-09-20 22:47 | 作者:叶帆 王雪松
出处:http://www.cnblogs.com/


作者: 叶帆 发表于 2010-09-20 22:47 原文链接 阅读: 1486 评论: 12

1 前言

在工控领域,组态软件司空见惯,国外的iFixInTouchWinCC,国内的组态王、力控、MSCG等等。组态软件的出现彻底解决了软件重复开发的问题,实现模块级复用,好处不仅仅是提高了开发效率,降低了开发周期,更大的优势的是成熟模块的复用,大大提高了系统稳定性和可靠性。

所谓组态(Configuration),就是模块化任意组合(类似积木玩具)。组态软件的主要特点有:

1)、延展性。所谓延展性,就是系统的延续和易于扩展性,用组态软件开发的系统,当现场或用户需求发生改变时(包括硬件设备或系统结构的改变),用户无需做很多修改,就可以很方便地完成系统的升级和改造;

2)、易用性。组态软件对底层功能都进行了模块级封装,对于用户,只需掌握简单的编程语言(内嵌的脚本语言,类Basic或类C语言),甚至不需要编程技术,就能很好地,通过组态配置的方式完成一个复杂系统的开发和集成;

3)、通用性。不同用户根据系统的不同,利用组态软件提供的I/O驱动(如PLC、仪表、板卡、智能模块、变频器等等驱动)、数据库和图元,就能完成一个具有动画、实时数据处理、历史数据和图表并存,且具有多媒体功能和网络功能的系统工程,不受领域或行业限制。

但是无论是基于PC平台的组态软件还是基于ARM系统的嵌入式组态软件,其组态粒度都显过大,大部分通过串口、网口、CAN等通道把个系统模块连接在一起,在一定程度上增加了系统构建的成本和代价。

而以.NET MF为依托构建的轻量级嵌入式组态软件(TinyIOs)就很好的解决了上述问题,除支持常规的串口、网口、CAN外,还支持USBWifiZigBeeSPII2C等通道,SPII2C片级总线的支持加上强大的托管代码(C#)开发能力,使嵌入式硬件系统真正的组态化、模块化成为可能,这项技术的推出,无疑为快速打造形态各异,功能不同的产品提供了最有力的支撑,完全符合新时代科技、绿色、环保的发展理念。

2 TinyIOs简介

TinyIOs,就是Tiny I/O Server的简称,在物联网、云计算时代,一切以数据为中心,不同的传感器通过不同的方式联入网络,通过云计算的方式为不同的终端用户提供服务。为了适应这种新形势的发展,加速和降低各种传感器、智能模块的入网代价,以微软成熟的.NET Micro Framework系统为基础,打造出物联网时代的轻量级嵌入式组态系统 —— TinyIOs

2.1 .NET Micro Framework简介(略)

2.2 TinyIOs系统架构

TinyIOs由三大部分构成,一是TinyIOs运行时,包含IODBIOBC、驱动引擎和策略引擎四部分;二是应用模块,包含驱动、策略和IO数据三部分;三是TinyIOs IDE环境,该工具和Microsoft Visual Studio开发工具一起共同完成驱动、策略的开发、配置及部署工作。

系统架构图(如下图所示):

  

 TinyIOs.NET MF关系图(如下图所示)

2.3 IODB(略)

2.4 IOBC(略)

2.5驱动开发

一个驱动程序可对应一种设备,也可以对应一类设备,关键在于设备支持的协议是私有的,还是公开的,一般公开的协议,如Modbus,不同厂家的智能设备都有不同程度的支持,凡支持该协议的设备,都可以通过共同的设备驱动进行访问,唯一不同的就是访问的数据类型,起始地址,数据长度等参变量的不同而已。

2.5.1 驱动接口类

    public interface IDriver

    {

        DeviceInfo GetDriverInfo();

        int OnStart(Device device, IDeviceOperate operate);

        int OnScan(Device device, IDeviceOperate operate);

        int OnEnd(Device device, IDeviceOperate operate);

}

2.5.2 通信方式

    public enum DeviceConnMode

    {

        SerialPort = 0,

        Ethernet,

        CAN,

        USB,

        SPI,

        I2C,

        SDIO,

        Zigbee,

        AD,

        DA,

        I,

        Q,

        PWM,

        Other,

 }

2.5.3 驱动配置信息类

public class DeviceInfo

    {

        public string Name;                         //32byte,驱动名称(要保证唯一)

        public string Ver;                          //16byte,版本信息

        public string Explain;                      //64byte,说明

        public string Developer;                    //16byte,开发者

        public string Date;                         //16byte,日期

        public int AutoFlag;                        //自动化标志 0 - 系统为你初始化通信接口

 1 - 由驱动程序本身完成通信接口初始化

        public DeviceConnMode ConnMode;             //通信方式

        public string Manufacturer;                 //64byte,设备制造商

        public string DeviceType;                   //32byte,设备类型

        //设备参数

        public string PortAddrExplain;              //硬件端口名称   空为无效项

        public string PortAddrValue;                //硬件端口默认值 项选择(如果有的话)用"|"

分隔开,默认项为第一个

        public string PortConfigExplain;            //端口参数名称   空为无效项

        public string PortConfigValue;              //端口参数默认值 项选择(如果有的话)用"|"

 分隔开,默认项为第一个

        public string DeviceAddrExplain;            //设备地址名称   空为无效项

        public string DeviceAddrValue;              //设备地址默认值 项选择(如果有的话)用"|"

分隔开,默认项为第一个

        public string DeviceConfigExplain;         //设备参数名称   空为无效项

        public string DeviceConfigValue;            //设备参数默认值 项选择(如果有的话)用"|"

分隔开,默认项为第一个

        //项参数

        public string[] ItemExplain;                //8*32 byte,连接项名称

        public string[] ItemValue;                  //8*4 byte 默认值 项选择(如果有的话)用

"|" 分隔开,默认项为第一个

}

2.5.4 驱动的执行

驱动除了按设定的扫描时间周期执行外,还可以把扫描时间设置为0,表示不会自动运行。设置为该模式的驱动,一般被策略程序直接调用而得以执行。

2.6 策略开发

可以把TinyIOs运行时想象成一个支持多任务的操作系统,这样每个策略的OnRun接口,都可以当成一个进程的Main函数,唯一不同的是,这个Main函数被调用的机制多种多样(参见策略执行模式)。

策略就是一段代码,一段标准的.NET Micro Framework程序,可以根据项目的需求充分访问.NET Micro Framework已有的开发资源(如各类库函数),编写实现任意功能的代码模块。

2.6.1 策略接口类

    public interface IStrategy

    {

        string GetStrategyName();

        int OnRun(IDeviceOperate operate, int parameter);

}

2.6.2 策略执行模式

public enum StrategyRunMode

    {

        None = 0,      //无动作  

        Loop,          //循环执行

        System_Loop,   //系统循环执行

//事件驱动

        Event_System_Start_Before,      

        Event_System_Start_After,

        Event_System_End_Before,

        Event_System_End_After,

        Event_System_Error_Process,

        Event_Driver_Scan_Before,

        Event_Driver_Scan_After,

        Event_Driver_Start_Before,

        Event_Driver_Start_After,

        Event_Driver_End_Before,

        Event_Driver_End_After,

 }

2.6.3 策略另类功能

     策略除了按策略执行模式执行外,策略之间还可以互相调用,并且还可以直接调用指定名称的驱动程序的执行。

2.7 TinyIOs项目存储(略)

3 TinyIOs IDE简介

详情请观看视频:http://video.sina.com.cn/v/b/38583321-1804832611.html

4 TinyIOs应用实例(远程医疗系统)

5相关资源

1、官方网址

http://www.microsoft.com/netmf/default.mspx

2、官方博客

http://blogs.msdn.com/netmfteam/

3、中文博客

http://blog.csdn.net/yefanqiu

http://www.cnblogs.com/yefanqiu

4、中文论坛

http://space.cnblogs.com/group/MFSoft

http://social.msdn.microsoft.com/Forums/zh-CN/microframeworkzhchs/threads

5V4.0 SDK下载

http://www.microsoft.com/downloads/details.aspx?FamilyId=77dbfc46-14a1-4dcf-a809-eda7ccfe376b&displaylang=en

6V4.0 PortingKit(源码)下载

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=16fa5d31-a583-4c0d-af74-f4d5e235d5bc

7.NET Micro Framework低价开发板

   http://item.taobao.com/item.htm?id=7117999726

 

评论: 12 查看评论 发表评论

程序员找工作,就在博客园


最新新闻:
· Adobe第三季利润2.301亿美元 同比增长69%(2010-09-22 08:37)
· 美国最新研制无人侦察机 可持续飞行5年(2010-09-22 08:35)
· MySpace将大幅进行重新改版 或损失更多用户(2010-09-22 08:34)
· 苹果起诉Sanho称其侵犯专利权(2010-09-22 08:22)
· Android 2.2 Gmail 客户端通过 Market 更新到 2.3 版本(2010-09-22 08:22)

编辑推荐:详解ASP.NET的最新安全漏洞

网站导航:博客园首页  个人主页  新闻  闪存  小组  博问  社区  知识库

相关 [net mf 物联网] 推荐:

以.NET MF为依托,打造物联网时代轻量级嵌入式组态系统

- 王雪松 - 博客园-首页原创精华区
作者: 叶帆 发表于 2010-09-20 22:47 原文链接 阅读: 1486 评论: 12. 在工控领域,组态软件司空见惯,国外的iFix、InTouch、WinCC,国内的组态王、力控、MSCG等等. 组态软件的出现彻底解决了软件重复开发的问题,实现模块级复用,好处不仅仅是提高了开发效率,降低了开发周期,更大的优势的是成熟模块的复用,大大提高了系统稳定性和可靠性.

Debugging .NET Core on Linux with LLDB | RayDBG

- -
The LLDB debugger is conceptually similar to the native Windows debugging tools in that it is a low level and command live driven debugger. Part of the reason the .NET Core team chose the LLDB debugger was for its extensibility points that allowed them to create the SOS plugin which can be used to debug .NET core applications.

Microsoft .NET Gadgeteer 简介及其它

- 王雪松 - 博客园-首页原创精华区
     Microsoft .NET Gadgeteer 为开发小型电子模块或嵌入式设备的用户,提供一个快速构建原型机的平台. 它结合了面向对象编程的优点,提供一系列电子模块,可以快速地用这些模块进行计算机辅助设计.      通过.NET Gadgeteer模块可以很容易的构建简单或复杂的设备.

Windows 8将Silverlight和.Net打入冷宫?

- Will - ITeye资讯频道
微软近期在D9和Computex 2011大会上演示了Windows 8,普通用户对于Windows 8的全新界面和触摸功能相比是欣喜不已,但是有那么一群人,却倍感沮丧和担忧. 他们就是Silverlight和.Net开发人员,Windows 8会采用什么样的开发平台呢. 是不是会将Silverlight和.Net打入冷宫.

微软推出开源平台.NET Gadgeteer

- dydso - Solidot
微软推出了一个开源软件和开源硬件平台.NET Gadgeteer,但兼容.NET Gadgeteer的硬件价格不菲. .NET Gadgeteer是一套用于创造不同用途的小型电子设备的开源工具集,使用.NET Micro Framework和Visual Studio/Visual C# Express,结合硬件模块和.NET软件,让用户能在不十分了解硬件知识的情况下,在数小时内创造出智能电子设备,制造出快速原型设备,帮助教师设计新颖的交互教育仪器,帮助业余爱好者创造出想象中的事物.

Visual Studio 2012和.NET Framework 4.5发布

- - 博客 - 伯乐在线
摘要:好消息,微软负责Visual Studio部门的公司副总裁Jason Zander发表博客,宣布Visual Studio 2012和.NET Framework 4.5现在已经可以下载,同时提供MSDN订户、付费版本、试用版和免费Express版. 此外,他还列举了升级到Visual Studio 2012的十二大理由.

微软宣布将开源.NET

- - Solidot
微软宣布它计划在MIT许可证下开源.NET软件架构,源代码(项目页面目前只有文档)将托管在GitHub上. .NET架构目前只支持在Windows上运行,微软表示它计划让.NET跨平台支持OS X和Linux. 微软计划在下一个版本中开源整个.NET服务器堆栈,从 ASP.NET 5到通用语言运行库到基础类库.

说说.NET反编译工具

- - 标点符
自己都不会.NET,但是目前团队里都是使用的.NET开发,整理一些.NET相关的知识,以便和团队一起成长. .NET和先前我接触的PHP、Python不一样的是代码需要经过编译,很多提供到网站的组件都是编译过的,很难看到源代码. 所以造成了一部分反编译工具的流行. Reflector应该是最为熟知的.NET反编译工具,最早由微软员工Lutz Roeder编写并免费提供,它除了能将IL转换为C#或Visual Basic以外,Reflector还能够提供程序集中类及其成员的概要信息、提供查看程序集中IL的能力以及提供对第三方插件的支持.

Profiling a .NET Core Application on Linux | All Your Base Are Belong To Us

- -
In the same vein of  my previous post on analyzing core dumps of .NET Core applications on Linux, let’s take a look at what it takes to do some basic performance profiling.

为什么创业公司能使用.Net却不用

- 冉波 - 译言-电脑/网络/数码科技
来源Why Startups Could Use NET, But Don’t.    几周前,Expensify的CEO David Barrett,  写了篇文章解释为什么他的公司不雇佣使用微软.Net框架的开发者. 这篇文章引起了一些争议,同时也让一些.Net开发者很抗拒. 尽管这篇文章有一些不准 确,但它确实提出了一个很好的观点,为什么没有更多的创业公司在.Net框架上构建应用程序.