开发计算机控制的多用途机器

时间:2011-05-03 13:01:31

标签: c# embedded

可能是我的标题措辞可能会产生误导,但这正是我想要实现的目标。

我计划开发一种多功能一体机(类似于全自动洗衣机......但不仅如此)......它将有许多需要由一个控制的移动和非移动部件面板上的芯片/处理器......

我知道C#并且可以编写负责用户输入的模块,并通过向其发出命令来控制机器。但是在机器方面该怎么办......

说,假设我希望机器将Drum B旋转30秒......我的C#代码将

Machine.Rotate(drumB, Direction.Clockwise, 30);

但是我怎样才能进入机器的电机,这样它可以旋转30秒......

我应该知道“嵌入式系统”吗?还是我还需要学习其他东西。

你能帮我解决一下......如果可能的话,可以通过书籍/网上资料开始学习。

由于

5 个答案:

答案 0 :(得分:3)

您应该开始查看.Net Micro Framework的业余爱好网站。

他们会给你所需的所有套件,包括套件。我正在使用来自Tinyclr.com

的FEZ Domino积极开发一些硬件

我发现TinyClr.com非常好,SparkFun.com也有很多东西。

答案 1 :(得分:0)

一种非常直接的方法是使用.NET Micro framework。但至少嵌入式系统的基本知识并不是那么糟糕。

答案 2 :(得分:0)

This不是.NET,但也许您可以搜索并从中获取一些想法。

顺便说一句,在我看来,从第一个“直觉思维”来看,你将发布到设备的大多数命令都是异步的,如下所示:

Motor.StartTurning(90, 0.1, CallBackFunction);

答案 3 :(得分:0)

首先,恕我直言,你必须学习这种项目的嵌入式系统,尽管你可以使用技术。嵌入式系统中的思考和编程与台式计算机的思考和编程略有不同。

最重要的区别是硬件资源(例如,大多数情况下,您将拥有有限的磁盘和内存容量,而处理器则相同)。其他重要的区别是软件容错(如果驾驶员卡在洗衣机上的车内,可能会有点烦人,因为软件崩溃......)。还有其他重要的一点你必须寻找(例如,软件 - 硬件协同设计),但我认为这两个非常重要,我认为你必须从项目的开始就注意它们。

作为对嵌入式系统的介绍,我建议您使用“Programming Embedded Systems: With C and GNU Development Tools”形成Michael Barr(更多面向软件)和“Designing Embedded Hardware”作者John Catsoulis(面向硬件)。当然,您始终可以将Wikipedia article作为起点。

如果您真的想使用.NET,您有两种选择:

  • 正如已经说过的那样,寻找.NET Micro Framework。请注意.NET MF仅适用于有限数量的硬件(check this page);
  • 其他选择是购买工业面板(example of one here)或工业计算机,安装Windows Embedded并在标准.NET Framework下编程。除了最后一个优点,硬件是工业的,这意味着它具有防震和防水功能,并且具有许多输入(USB,CAN,以太网,串口......),您可以使用它们的所有优点Windows编程。

另一种选择是尝试其他硬件,但在这种情况下,您必须使用制造商为该硬件提供的库/ API /框架。

要访问硬件,必须使用可用的硬件输入/输出。例如,如果你想与a,比如步进电机通信,你必须检查你如何与它通信。如果唯一的方法是发送PWM信号,您必须找到一种方法。两个假设:

  • 如果您使用的是带有.NET MF的开发套件,则必须检查它是否可以生成PWM信号,否则您可能需要编写设备驱动程序来执行此操作;
  • 如果您使用主机作为人机接口连接到外部硬件(可以通过USB,串口等连接),硬件必须能够从主机接收消息并生成PWM信号(几乎可以肯定,你的硬件上会有一个微控制器用于这种行为。)

对于这两个概述,您可以使用您提供的方法创建一个高级框架,该方法抽象出与硬件的所有通信。此外,@丹尼尔建议回调是一个非常好的,因为它使您的框架更灵活(例如,您可以在停止之后或启动之前为每个电机的回调定义不同的行为。)

最后一点,您必须评估您的项目真正需要什么。如果您的项目必须便宜,可能您会使用小型硬件,但在这种情况下,您可能会或可能不会使用.NET Micro Framework;如果你可以花更多的钱,也许你可以使用运行Windows的更昂贵的硬件,在这种情况下你甚至可以使用标准的.NET Framework。

很抱歉答案很重要,但我希望它可以帮助您做出选择!

答案 4 :(得分:0)

系统无需是嵌入式系统,您可以使用配备合适的数字和模拟I / O硬件(examples)的PC控制机器并获取传感器数据。该方法的问题在于,实时性能可能是通用操作系统(GPOS)(如Windows或Linux)的问题。您可以为PC配备实时操作系统(RTOS),但是C#不太可能是一个选项,并且您失去了PC开发的许多好处,例如熟悉的开发和调试环境。物理尺寸也可能是一个问题,虽然可以使用非常小的工业PC架构板,例如PC / 104,但那实际上是一个嵌入式系统,恰好可以分享熟悉的桌面硬件架构。

可以在基于非x86硬件的真正嵌入式系统上使用.NET Micro,但同样不能提供硬实时性能。

控制电机并不总是像打开或关闭一样简单,您可能还需要使用闭环反馈和PID控制器进行速度或位置控制。