Перемещение системы сбора данных на основе.NET для удаленной автоматической установки?
У меня есть необходимость сделать несколько довольно простых (по крайней мере, на поверхности) сбора и регистрации данных. В удаленном месте (как, например, на другом континенте) будет несколько устройств RS-485 (наш пользовательский аппаратный продукт), использующих собственный протокол, плюс метеостанция (анемометр и флюгер). Для метеостанции у меня есть несколько вариантов: один выводит скорость ветра как частоту прямоугольной волны, а направление - как аналоговое напряжение; другой связывается по USB с использованием интерфейса HID. Машина, к которой подключаются эти устройства, должна собирать данные, регистрировать их и периодически передавать их через Интернет через соединение WiFi. Эта передача может быть как push, так и pull, то есть я могу периодически получать удаленный доступ к машине, чтобы получать последние данные, или машина может периодически выгружать данные на FTP-сайт или в веб-службу. Эта машина должна быть установлена на чердаке, поэтому она должна работать надежно, без присмотра за детьми, и она должна выживать в окружающей среде (температура, влажность, твари).
У меня есть приложение.NET, которое уже делает большую часть этого, написано для.NET 4. Это интерактивное приложение с графическим интерфейсом, которое отображает измеренные данные и записывает их в файл. (У меня фактически есть две версии с небольшими отличиями - одна на основе Winforms, а другая WPF.)
У меня есть около недели, чтобы разработать решение для удаленной установки, включая определение и покупку любого необходимого оборудования, выполнение любого необходимого кодирования и обеспечение его работы. Ох, и это должно быть дешево. (Например, было бы неплохо менее 500 долларов. Все, что больше 1000 долларов, будет непростым.)
Некоторые вещи, о которых я подумал или которые мне предложили:
- Используйте дешевый нетбук с интерфейсом RS-485-USB. Ну, может быть... но я действительно не ожидаю, что это сохранится в окружающей среде. Например, жесткому диску не понравится сильная жара или холод. SSD - вариант, но это как минимум еще 100 долларов, и я до сих пор не уверен, что машина выдержит влажность и твари. Я мог бы положить его в корпус, но это еще один расход. В общем, я просто чувствую, что этот подход намного дороже и сложнее, чем должен быть, и вряд ли будет таким надежным.
- Используйте небольшой одноплатный или промышленный компьютер. Они, как правило, надежные, и во многих есть порты RS-485 и встроенные сторожевые таймеры. Некоторые даже имеют цифровые входы / выходы общего назначения. До сих пор я не нашел ни одного с аналоговым входом напряжения, но они, вероятно, также существуют. Кроме того, они обычно используют карту памяти CompactFlash для хранения. Это похоже на правильный краткосрочный подход, но те, которые работают под Windows, обычно используют какую-то встроенную версию (например, Windows CE или Windows XP Embedded) - что, вероятно, замечательно, за исключением того, что у меня нет опыта работы с ними, и я не Я знаю, сколько потребуется работы, чтобы установить и запустить мое программное обеспечение. Кроме того, они, как правило, имеют процессоры с очень низким энергопотреблением, и я действительно не знаю, какая мощность мне нужна. Мое приложение прекрасно работает на современном рабочем столе; Я понятия не имею, будет ли он работать нормально на одном из этих младших процессоров. Некоторые из них заявляют, что они совместимы с.NET 2.0, но я ничего подобного не видел, так что, по крайней мере, мне, вероятно, придется перенести все обратно на.NET 2.0. О, и многие из этих компьютеров, которые я нашел до сих пор, довольно дороги.
- Используйте беспроводной последовательный сервер. Эти вещи помещают последовательный порт в сеть. Вы можете подключиться к нему удаленно, и последовательный порт выглядит как локальный COM-порт, хотя он может быть расположен в любой точке мира. Это своего рода вариант для RS-485. Это позволяет избежать необходимости удаленного администрирования ПК и заставить мое программное обеспечение работать удаленно. Однако меня беспокоит пропускная способность и надежность интернет-соединения с другой стороной мира, и это не помогает с устройством USB HID. (Хотя, если это окажется хорошим подходом, я мог бы найти версию этого устройства для RS-485.)
- Используйте регистратор данных. Они также кажутся довольно дорогими - особенно те, которые имеют WiFi - и я не нашел ни одного, который бы делал все, что мне нужно. В частности, высокая скорость передачи данных и собственный протокол наших устройств RS-485, по-видимому, являются препятствием. (Многие из них предназначены для работы с устройствами MODBUS.) Метеостанция на базе USB HID не будет работать с таким подходом, поэтому мне придется использовать ту, которая выводит частоту и напряжение.
- Используйте недорогой встроенный микроконтроллер. Долгосрочные (например, будущие проекты), это, вероятно, лучший подход. Это дешево, и я могу запрограммировать его на то, что мне нужно. Однако я не вижу, как я справлюсь с этим через неделю. Это полное переписывание моего программного обеспечения и освоение нового процессора и среды разработки.
У кого-нибудь есть опыт решения подобных проблем? Какой самый простой, дешевый, самый надежный способ сделать это? На какие продукты или подходы я должен смотреть?
2 ответа
Я закончил с CompuLab fit-PC2 под управлением Windows Embedded Standard 7. Для входа RS-485 я использовал изолированный интерфейс RS-485-USB от B & B Electronics. В итоге я пропустил интерфейс с анемометром и лопастью, что значительно упростило проблему, поскольку теперь мне нужно было только общаться с моими последовательными устройствами RS-485.
Fit-PC оказался отличным решением:
- Это дешево (я заплатил менее 400 долларов за модель SSD объемом 8 ГБ от Amazon)
- это эффективно (всего 8 Вт при полной загрузке процессора и 0,5 Вт в режиме ожидания!)
- у него есть встроенный WiFi и проводной Ethernet
- он автоматически включается и перезагружается после сбоя питания
- у него есть аппаратный сторожевой таймер, который может автоматически перезагружать компьютер, если он зависает
- это крошечный и прилично бурный
С Windows Embedded оказалось очень легко справиться. Я перенес свое приложение в службу Windows, которая автоматически запускается при запуске системы и выводит данные в удаленную базу данных MySQL. Встроенный Windows не включает в себя функцию.Net 4, поэтому мне пришлось установить ее отдельно, но в остальном все прекрасно переносилось с моей системы разработки на встроенную систему.
Может быть, NetDuino+ может помочь. Это дешево, но вам придется подумать о блоке питания, преобразователе RS232<>RS485, WiFi и корпусе. Он поддерживает.NET Micro Framework, поэтому вы можете повторно использовать большую часть кода C#. Он также имеет аналоговый и цифровой ввод-вывод. GESBC-9260S имеет встроенный RS485, опциональный WiFi, аналоговый и цифровой IO. На нем установлен Linux, так что вы, вероятно, можете использовать Mono для использования своего кода.NET.