Чтение данных с RS232 и запись в файл

Тема в разделе "Посоветуйте детальки", создана пользователем Star2o, 25 ноя 2015.

  1. Star2o

    Star2o Нуб

    Добрый день!
    Есть задача автоматизировать вывод информации с платформенных весов в программу 1С. Весы имеют интерфейс вывода RS232. Собственной памяти не имеют. Находятся в неотапливаемом складе (ПК поставить возле весов не могу). Температуры бывают ниже -30 градусов. Ближайший компьютер на расстоянии 50 метров. Нужно сформировать текстовый файл такого вида:
    25.11.2015;23.37;QW778851222;752 (ДАТА; ВРЕМЯ; НОМЕР ТОВАРА; ВЕС) Каждая новая строка в файле - новое измерение. Весы посылают на RS232 только вес.
    Пришла идея использовать либо Raspberry Pi 2 Model B, либо Raspberry Pi 2 Model B + Arduino Uno. Я не работал ни с тем не с другим. Подскажите возможно ли это и что лучше использовать.
     
  2. geher

    geher Гуру

    Возможно в любом варианте.
    Если рассматривать только задачу формирования текстового файла при отсутствии необходимости выбора из слишком широкой номенклатуры товаров, ручного ввода номера товара (наличие букв в номере потребует клавиатуры с большим числом кнопок) и работы со сканером штрих-кодов (впрочем последний, возможно, и существует в природе в варианте, подключаемом к ардуино, тут можно попробовать поискать), то хватит и UNO с модулем SD карты, модулем часов реального времени, дисплеем, какой-нибудь простой клавиатурой на 16 кнопок и преобразователем RS-232 - TTL Serial.
    Преобразователь, кстати, в любом варианте потребуется. Разве что для RPi его можно будет заменить преобразователем USB - RS-232.

    Также сильно подозреваю, что ничего из перечисленного на температуры <-30 не рассчитано. А потому придется делать для устройства герметичный корпус с встроенным обогревателем или хорошей термоизоляцией. И о разъемах подумать, чтобы влаги не боялись (конденсация при переходе из холодного помещения в теплое и обратно и все такое).
    По причине экстремально низких температур о сенсорном экране при любом раскладе придется забыть.

    А что лучше использовать, зависит от мелких деталей задачи.
    Разве что сразу можно заметить, что RPi + ардуина в данных условиях явное излишество. RS-232 вполне можно подцепить и к RPi.
     
  3. Star2o

    Star2o Нуб

    Спасибо большое. Но я бы хотел еще добавить датчик температуры и релейный модуль для обогрева. Но возникает вопрос хватит ли разъемов под все датчики и устройства на arduino?
    Процедура взвешивания будет следующей:
    1. Товар ставится на весы
    2. Вводиться код товара (код товара цифровой) Выбора из списка не будет.
    3. Происходит считывание массы товара с весов
    4. Происходит запись в файл (фал сохраняется после каждой строчки)
    5. Файл читается обработкой 1С по заданному сетевому пути.(подключение к сети обязательно)
    Я все таки хочу остановиться на Raspberry Pi 2 Model B. Поставить модуль реально времени, реле, датчик температуры, преобразователь RC232 (подскажите какой модуль лучше поставить на GPIO), четырёхразрядный индикатор (для дублирования информации с весов), клавиатуру на 16 кнопок, пищалку, пару светодиодов.
    По Arduino я нашел как писать с RS-232 в файл, а по Raspberry Pi не чего нет. Подскажите где можно найти эту информацию.
     
  4. ANV

    ANV Гуру

    Если бы не -30, то любой планшет на Андроид.
    Весы подключались бы через MAX2232 и FT312 к USB разъему планшета.
     
  5. geher

    geher Гуру

    Разъемов-то хватит, но требование доступа к файлу по сети от 1С сильно усложняет задачу. Не уверен, что на ардуино это вообще будет возможно реализовать (именно доступ к файлу по сети).

    Как мне кажется, этот преобразователь в случае RPi лучше вешать не на GPIO, а на USB.
    Но тогда надо смотреть на поддержку его линуксом, который будет крутиться на RPi. Теоретически почти все стандартные поддерживаются, но мало ли какая экзотика попадется.
    Если все же на GPIO, то теоретически подойдет любой, поддерживающий напряжение и логику 3.3 В (5В спалят последовательный порт на GPIO RPi, а может и саму RPi).
    Кстати, в связи с этим моментом вопрос. Какие параметры протокола последовательного порта у весов в плане контроля потока? Если он аппаратный (используются линии DTR и проч), то при подключении к GPIO возникает открытый вопрос с управлением этими линиями, поскольку, если не ошибаюсь, там предусмотрены только линии данных RX и TX, В случае же USB вопрос решится на уровне драйвера переходника.
    А если управление потоком программное или отсутствует (задействованы только две линии передачи данных), то проблем вроде не ожидается. Разве что не уверен до конца, что на GPIO поддерживается что-то отличное от 8N1 (8 бит данных, без бита четности, один стоповый бит).

    На чем программа для RPi будет писаться?
    Если на питоне, то смотреть в сторону pySerial и его примеров.

    Если на более другом языке (в смысле С/С++), то насчет толковых примеров совсем не подскажу.
    Разве что тут
    http://myworkonly.blogspot.ru/2013/04/linux.html
    о чтении/записи через последовательный порт.
    А работа с файлом - одним из стандартных наборов функций, Например: fopen, fprintf, fclose. Соответственно и искать примеры их использования.
     
  6. Star2o

    Star2o Нуб

    Спасибо большое, за полезные ответы. Весы установят только в январе. По результатам проекта сделаю отчет (Февраль-март 2016). В отчете будут ссылки на ваши ответы. Еще раз спасибо. Не закрывайте тему.

    Хочу писать на С++. Все таки это универсальный язык. Если не составит труда попрошу сделать ссылки на библиотеки элементов (которые описывал ранее) для С++.

    #geher, извините я могу к Вам так обращаться(если нет, сообщите свое имя)? Я понимаю, что повесить COM-разъем на USB порт легче, но:
    во первых: он занимает USB гнездо;
    во вторых: переходники USB - COM в большинстве случаев работают не корректно;
    в третьих: занимаемое место, вне устройства (влажность, обогрев).
    Честно говоря я не знаю параметры RS232 поставляемых весов, поставщик только развел руками.
    Какой модуль будет надежнее работать на GPIO?
     
  7. geher

    geher Гуру

    Подозреваю, что библиотек может и не быть вообще. Возможно, придется адаптировать имеющиеся, переделывая доступ к GPIO на тот, который используется в RPi.

    Естественно, можете.

    Не сталкивался. Правда работал до сих пор только с переходниками MOXA и не работал с ними на RPi.
    Как мне представляется, технически единственная проблема - увеличение размеров устройства. В любом случае USB наружу смотреть не должен по причине экстремальных климатических условий, а потому сам переходник должен быть внутри корпуса.

    Тут я пас. Я работал только с тем, что в Амперке продается (но он 5 В, придется городить огород с преобразованием уровней, что занимает место и неудобно), и с китайчатиной от "известной фирмы noname" (которые такая лотерея).