Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FTP по RS-485
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Интерфейсы
Страницы: 1, 2
skripach
Может не совсем Ethernet но всё же...
Задача передавать файлы, удалять файлы, просматривать директории на SD-карте которая вставлена в "железку".
Связь с "железкой" осуществляется по существующим каналам (PC->RS-232->RS-485->"железка").
Вопрос реально ли сделать подобие FTP сервера но по RS-485.
Очень хотелось бы для PC ничего не создавать, а пользоваться стандартным FTP-клиентом.
rezident
Вы сначала разберитесь, что у вас есть и что требуется.
RS232, RS485, Ethernet это интерфейсы - физический уровень сети, а FTP это протокол, прикладной уровень. См. описание сетевой модели OSI
zltigo
Цитата(skripach @ Dec 26 2009, 01:50) *
для PC ничего не создавать

Тогда с 485 облом, хотя с RS232 можно.
skripach
Цитата
Вы сначала разберитесь, что у вас есть и что требуется.

Вроде бы написал...
Думаю нужно искать возможность замены физического,канального уровня с Ethernet на RS232-485 на стороне PC, есть ли варианты???
Цитата
Тогда с 485 облом, хотя с RS232 можно.

облом потому что не дуплекс?

P.S. Вот интересно у модераторов красная лампочка зажигается или звоночек звенит когда создаётся новая тема. smile.gif
МП41
RS485 может быть и дуплексом (две пары проводов) и полу-дуплексом (одна пара).
aaarrr
Цитата(МП41 @ Dec 26 2009, 02:51) *
RS485 может быть и дуплексом (две пары проводов) и полу-дуплексом (одна пара).

В полнодуплексном варианте это уже RS422, а не 485.
МП41
В таком случае лучше именно RS422 использовать.
Ведь даже по нуль-модемному кабелю можно связать 2 компьютера, при этом по RS232 ходят высокие канальные протоколы (в игрушках даже виден айпишник другого компьютера). Другой вопрос, как научить железку автора работать подобным образом.
skripach
Связь с "железкой" осуществляется по существующим каналам (PC->RS-232->RS-485->"железка").
Цитата
Другой вопрос, как научить железку автора работать подобным образом.

Вопрс не в том как научить "железку", а в том как вывеси FTP наружу из PC через RS-232, а не через Ethernet.
aaarrr
Цитата(skripach @ Dec 26 2009, 03:25) *
Вопрс не в том как научить "железку", а в том как вывеси FTP наружу из PC через RS-232, а не через Ethernet.

При помощи PPP или SLIP.
zltigo
Цитата(skripach @ Dec 26 2009, 02:44) *
облом потому что не дуплекс?

Да.
Цитата
P.S. Вот интересно у модераторов красная лампочка зажигается или звоночек звенит когда создаётся новая тема. smile.gif

Это даже робот smile.gif дежурный smile.gif понимает, что тема создана не там.
skripach
Цитата
При помощи PPP или SLIP.

Вот это уже похоже

Цитата
Это даже робот smile.gif дежурный smile.gif понимает, что тема создана не там.

Перенесли правильно, удивило два первых ответа от модераторов с разницей в 2 минуты.
skripach
Так всё таки как (чем) на PC связать Ftp-клиент и COM-порт?
zltigo
Цитата(skripach @ Dec 26 2009, 18:49) *
Так всё таки как (чем) на PC связать Ftp-клиент и COM-порт?

Вам-же уже сказали SLIP/PPP на выбор натягивается на RS232. Поддержка коих в Win штатно есть (помните слово "модем"? - так вот это оно и есть). Поддержка SLIP на стороне контроллера несколько десятков строчек и дело в шляпе - IP поднят и ходите, чем хотите. Но это дуплекс. Если 485,
то придется для Win драйвер вместо RS232 писать, который будет разруливать проблемы.
skripach
Цитата
Вам-же уже сказали

Пардон сразу не понял.
А что скажете насчет DHLC это вроде поверх 485?
rezident
Цитата(skripach @ Dec 26 2009, 20:49) *
Так всё таки как (чем) на PC связать Ftp-клиент и COM-порт?

Нужна реализация TCP/IP для COM-порта.
zltigo
Цитата(skripach @ Dec 26 2009, 19:48) *
А что скажете насчет DHLC это вроде поверх 485?

Ничего, поскольку набор букв DHLC лично мне ни о чем не говорит. Если это HDLC, то ни к какому halfduplex эти буквы тоже отношения не имеют. Что Вы пытаетесь узнать? Как сделать так, что-бы ничего не делать? Не получится. Придется писать драйвер для поддержки своего железа. FTP/IP/PPP(SLIP) Windows Вам предоставит, остальное сами. Можете обойтись и без драйвера - напишите какое-нибудь приложение выполняющее роль шлюза и имеющее с одной стороны RS232->RS485 а с другой стороны изображающий локальный FTP сервер для Win.
skripach
Скрин из википедии на которую меня послал rezident
Как видно и SLIP и PPP и HDLC являются протоколами канального уровня TCP/IP стека, но в отличие от SLIP и PPP HDLC является, по сведениям из той же википедии, протоколом который может работать поверх RS-485.
Если изложенное в википедии верно, то у меня вопрос:
Возможно ли применить какой-то стандартный(уже написанный) софт реализующий цепочку FTP-клиент->[некий софт]->HDLC->RS-232.
zltigo
Цитата(skripach @ Dec 26 2009, 21:32) *
по сведениям из той же википедии, протоколом который может работать поверх RS-485.

В одну сторону совершенно без проблем smile.gif. Ну НЕ имеет он отношение к дуплексу никакого. И вообще он в потоке битов а не байтов работает. Что, дальше Википедии заглянуть не судьба?
zltigo
Цитата(SysRq @ Dec 26 2009, 22:06) *

К какому месту прикладывать для получения удовлетворения?
skripach
Цитата

Насколько я понимаю эта штука позволяет создать прозрачный RS-232 через интернет.
SysRq
Цитата(zltigo @ Dec 26 2009, 22:13) *
К какому месту прикладывать для получения удовлетворения?
К голове. Там в конце статейки ссылки на софт.

Цитата
The remserial program acts as a communications bridge between a TCP/IP network port and a Linux device such as a serial port. Any character-oriented Linux /dev device will work.

Цитата
TCP-Com is a software based serial port to TCP/IP Redirector, that can act as either a TCP/IP client or server. It allows you to turn your Windows PC into a "Serial Device Server"
zltigo
Цитата(SysRq @ Dec 26 2009, 22:32) *
К голове. Там в конце статейки ссылки на софт.

Ну тогда приложите и подумайте как этот софт поможет физически вылезти из писишки RS485-тым.
SysRq
Цитата(zltigo @ Dec 26 2009, 22:39) *
...как этот софт поможет физически вылезти из писишки RS485-тым.
Ну вестимо у автора темы есть на ПК интерфейс RS485 (либо с преобразованием с RS232), вестимо в системе он представлен в виде последовательного порта 07.gif
Почему бы не попробовать реализовать TFTP-клиент <-> (локальный TCP\UDP порт) этот софт <-> (COM-порт) RS485 <-> железо <-> TFTP-сервер?.. Полудуплекс RS485 помешать не должен..
skripach
Цитата
TFTP-клиент <-> (локальный TCP\UDP порт) этот софт <-> (COM-порт)

FTP-клиент никак не стыкуется "'этим софтом" ибо "этот софт" не передает TCP/IP пакеты в ком порт.
zltigo
Цитата(SysRq @ Dec 26 2009, 23:13) *
Ну вестимо у автора темы есть на ПК интерфейс RS485 (либо с преобразованием с RS232), вестимо в системе он представлен в виде последовательного порта 07.gif
Почему бы не попробовать реализовать TFTP-клиент <-> (локальный TCP\UDP порт) этот софт <-> (COM-порт) RS485 <-> железо <-> TFTP-сервер?..

Это все (кроме 485)делается без всяких дополнительных приблуд, как уже описано выше.
Цитата
Полудуплекс RS485 помешать не должен..

Отнюдь, это полный кирдык, ибо средств разрешения конфликтов в драйвере RS232 не предусмотрено, за ненадобностью.
SysRq
skripach, в этом случае в COM-порт пойдут только данные из них, т.е. протокол верхнего уровня в чистом виде.

Цитата(zltigo @ Dec 26 2009, 23:22) *
Отнюдь, это полный кирдык, ибо...
Исключить, выбрав протокол верхнего уровня с принципом запрос-ответ. Железке отдем логическую роль slave. Чем TFTP не подходит?
SM
Вообще, чтобы ничего не создавать на PC, надо создать что-то вне PC - например сделать дуплексный 485, по двум парам. И всех делов. На это вроде тут уже намекали. Или, если в кабеле пар физически не хватает, как вариант, создать умный переходник 232-485, который бы и разруливал конфликты.

Цитата(SysRq @ Dec 26 2009, 23:41) *
Исключить, выбрав протокол верхнего уровня с принципом запрос-ответ.

А если ошибка в канале битовая... Начнутся перезапросы, перепосылки пакетов... Да и все TCP ACK-ки ходят дуплексно вместе с пакетами вне зависимости от того, что там за протокол "наверху". В общем встроенного средства заставить винду (да вроде и линь тоже, хотя тут не уверен) учитывать в TCP-уровне то, что канал недуплексный, нету.
zltigo
Цитата(SysRq @ Dec 26 2009, 23:41) *
Исключить, выбрав протокол верхнего уровня...

Без проблем, но его придется написать, причем для двух сторон, а не взять готовый их Windows, о чем тоже уже говорилось выше.
skripach
Цитата
в этом случае в COM-порт пойдут только данные из них, т.е. протокол верхнего уровня в чистом виде.

хорошо бы ftp сразу в RS232, сейчас буду проверять, но наверное не так.
SysRq
Цитата(SM @ Dec 26 2009, 23:45) *
А если ошибка в канале битовая... Начнутся перезапросы, перепосылки пакетов...
Это loopback. Я сам себе сервер, сам себе клиент. По полудуплексному каналу я предлагаю гонять только протокол верхнего уровня.

Цитата(zltigo @ Dec 26 2009, 23:45) *
Без проблем, но его придется написать...
Обработку TFTP (или HTTP) запросов в железе. На ПК софта полно.
AlexandrY
Так параметры железки будем говорить или как? wassat.gif
RTOS-ы портировать умеете?
Открытый, полноценный и качественный FTP сервер поверх PPP (HDLC, к сведению, является несущей PPP) который может работать
поверх асинхронных последовательных каналов есть только в демопакете MQX от Freescale.
Вам только портировать надо эту ось, драйвер UART-а и SDIO.
Профессионалу работы на неделю... ну не больше месяца biggrin.gif



Цитата(skripach @ Dec 26 2009, 00:50) *
... Задача передавать файлы, удалять файлы, просматривать директории на SD-карте которая вставлена в "железку"...
SM
Цитата(SysRq @ Dec 26 2009, 23:51) *
По полудуплексному каналу я предлагаю гонять только протокол верхнего уровня.

И как винду (или линь, на PC может работать самая разная ось) это заставить делать без какого-то доп. софта для PC? Один хрен все готовые утилиты работают через сокеты, а сокеты - через набор имеющихся драйверов, включающих и протоколы нижнего уровня. Вариант лишь один - брать какой-то опенсурс клиент и переписывать под свой транспорт. Что противоречит условию - ничего на PC не делать
zltigo
Цитата(SysRq @ Dec 26 2009, 23:51) *
Обработку TFTP (или HTTP) запросов в железе. На ПК софта полно.

Вы опять о чем-то, чего не понимаете,говорить пытаетесь sad.gif


Цитата(AlexandrY @ Dec 26 2009, 23:53) *
(HDLC, к сведению, является несущей PPP)

Нет, они идеологически похожи по формированию фреймов, но один в другом не нуждаются. Тем более, что как уже поминал, HDLC это биториентированный протокол и в нем байториентированный UART не нуждается.
SM
Кстати, если применить AX.25 - то пожалуй и можно сделать все то, что хочет сделать автор, вроде по памяти X.25 умеет по полудуплексу ходить. А TCP/IP over AX.25 есть на PC (как минимум в лине) встроенными средствами.
zltigo
Цитата(SM @ Dec 27 2009, 00:11) *
X.25 умеет по полудуплексу ходить.

Разумеется нет.
AlexandrY
Слаб я в идеологии... wink.gif Это враги из Freescale называют физический уровнь PPP как HDLC.
Да и другие как сговорились все этот уровень HDLC называют.

А так согласен HDLC это битовый протокол.
У нас одна уважаемая фирма даже собственный придумала формат тоннеля IP поверх FrameRelay с битовым HDLC и через свои спутниковые каналы качает с огромной скоростью.

Цитата(zltigo @ Dec 26 2009, 23:07) *
Нет, они идеологически похожи по формированию фреймов, но один в другом не нуждаются. Тем более, что как уже поминал, HDLC это биториентированный протокол и в нем байториентированный UART не нуждается.
SM
Цитата(zltigo @ Dec 27 2009, 00:19) *
Разумеется нет.


А про что тогда пишут в "2.4.3.5 Collision Recovery", а именно "2.4.3.5.1 Collisions in a Half-Duplex Environment" спецификации AX.25 ?
zltigo
Цитата(AlexandrY @ Dec 27 2009, 00:20) *
Да и другие как сговорились все этот уровень HDLC называют.

Для битовых потоков это так и есть - классика жанра. Тот-же X.25 лежит в таком случае поверх HDLC+LAPB(вот эту сладкую парочку
уровня Data Link и могут называть как придется)->MLP->X.25
Цитата(SM @ Dec 27 2009, 00:22) *
спецификации AX.25 ?

Про AX.25 не занимался, не знаю. Ну а X.25, как и многое другое, писал собственноручно - чего там нет, так это разруливания halfduplex.
Скажу одно, что после уровня LAP* заниматься разрешением коллизий уже изрядно поздно sad.gif. Одиночные битые фреймы они хоть и на самом верху на IP уровне отсеиваться и переповторяться могут, но не массовые потери.
SM
Цитата(zltigo @ Dec 27 2009, 00:35) *
Скажу одно, что после уровня LAP* заниматься разрешением коллизий уже изрядно поздно sad.gif. Одиночные битые фреймы они хоть и на самом верху на IP уровне отсеиваться и переповторяться могут, но не массовые потери.


А для любительского радио, для которого AX.25 придуман был, там других вариантов нет, как на этом уровне разбираться, ибо остальные аналоговые smile.gif. Опять же по памяти - там делается тупо, как в Ethernet - если произошла коллизия, (слал более, чем один передатчик), ретрансмит по случайному таймеру. А вообще подробностей я не помню, очень давно это было, и разбираться-вспоминать в подробностях лень, да и времени нет, пусть автор сам смотрит, пойдет это ему, или не пойдет. Главное что оно на PC стандартными средствами есть.
AlexandrY
Боюсь мужику все равно придется поверх X.25 лепить PPP.
А то кто будет проводить назначение сетевых адресов, DNS-ов, шлюзов?


Цитата(zltigo @ Dec 26 2009, 23:35) *
Ну а X.25, как и многое другое, писал собственноручно.
Скажу одно, что после уровня LAP* заниматься разрешением коллизий уже изрядно поздно sad.gif. Одиночные битые фреймы они хоть и на самом верху на IP уровне отсеиваться и переповторяться могут, но не массовые потери.
SM
Цитата(AlexandrY @ Dec 27 2009, 00:45) *
Боюсь мужику все равно придется поверх X.25 лепить PPP.

Что-то это масло масляное - TCP/IP over AX.25 over PPP smile.gif

Цитата(AlexandrY @ Dec 27 2009, 00:45) *
А то кто будет проводить назначение сетевых адресов, DNS-ов, шлюзов?

Дык это уже всякие там DHCP/BOOTP и тому подобное, это выше, чем TCP/IP, да и фиксированно прописать можно, и без DNS вообще (это тут только с жиру беситься - доменные имена вводить в 485-ой сети). А какие-то фиксированные адреса в RS-485 сети наверное уже и так есть... Которые видимо в AX.25 вид "позывной+SSID" придется переделать.

Цитата(zltigo @ Dec 27 2009, 00:35) *
Про AX.25 не занимался, не знаю. Ну а X.25, как и многое другое, писал собственноручно - чего там нет, так это разруливания halfduplex.


Блин, сорри, досадная опечатка вышла, букву пропустил... В этом сообщении http://electronix.ru/forum/index.php?showt...st&p=698806 - все три раза должно быть AX.25
zltigo
Цитата(AlexandrY @ Dec 27 2009, 00:45) *
Боюсь мужику все равно придется поверх X.25 лепить PPP.
А то кто будет проводить назначение сетевых адресов, DNS-ов, шлюзов?

Зачем? У него физическая точка-точка и на всякие адреса и шлюзы вообще плевать игнорируя - контроллеру можно вообще радостно откликаться на любой. Или речь идет о 485 "сети"? В ней по портам разойтись можно,
И вместо PPP SLIP пойдет на ура. Все, что требуется sad.gif, это драйверок вместо RS232 разруливающий явные коллизии.
AlexandrY
Маразм крепчал... biggrin.gif
DHCP используют вообще-то только при наличии уровня LLC-MAC. Хотя можно в принципе наверно предложить коллеге эмулировать LLC и МАС поверх RS485.

Цитата(SM @ Dec 26 2009, 23:48) *
...Дык это уже всякие там DHCP/BOOTP и тому подобное, это выше, чем TCP/IP, да и фиксированно прописать можно, и без DNS вообще...
SM
Цитата(AlexandrY @ Dec 27 2009, 00:59) *
при наличии уровня LLC-MAC.

Что за новости? Это где еще такое в RFC-2131 написано? UDP+броадкасты есть - значит и DHCP реализуем, и совершенно все равно, что там ниже, MAC или не MAC.
Да и реализуется он (DHCP) "одной левой", если уж человек на FTP позарился. Хотя в контексте - фиксированные айпишники всем, и вперед.

Короче - если TCP/IP over AX.25 встроен в ядро ОС на PC, то и какой-то протокол преобразования IP-адресов в AX.25 адреса (по аналогии с изернетовским ARP) тоже там есть. Дело за малым - поднять AX.25 и TCP/IP over AX.25 в девайсе.
AlexandrY
Цитата(zltigo @ Dec 26 2009, 23:58) *
Зачем? У него физическая точка-точка и на всякие адреса и шлюзы вообще плевать игнорируя...

Ничего не имею против такой технологии. Тоже хороший ход.
Только загвоздка, что штатные FTP сервера и клиенты понимают только вменяемые IP адреса и работают через штатные сокеты которые используют штатные таблицы маршрутизации. FTP сервер же открывает потом еще одно соединение.
Кастрировать все это хозяйство под некие упрощенные процедуры это будет знатный гемор. biggrin.gif
zltigo
Цитата(AlexandrY @ Dec 27 2009, 01:09) *
Только загвоздка, что штатные FTP сервера и клиенты понимают только вменяемые IP адреса

Вменяемый не проблема, как позвали, так и ответит, тем более, что он может быть один на всех.
Цитата
и работают через штатные сокеты которые используют штатные таблицы маршрутизации.

Да ни малейших проблем - работают и пусть.
Цитата
FTP сервер же открывает потом еще одно соединение.

Естественно, но проблемы-то какие?
Цитата
Кастрировать все это хозяйство под некие упрощенные процедуры это будет знатный гемор. biggrin.gif

Никакой кастрации - легкая вставка игнорирующая IP, выхватывающая из IP адрес и заносящая его, как свой для
ответных фреймов. Портировать-то IP стек по любому в котроллер надо. А вообще, чего это мы еще и о конфигурации IP? Статические адреса еще никто не отменял.
AlexandrY
Цитата(zltigo @ Dec 27 2009, 00:22) *
Никакой кастрации ...


Да, я думаю мы недооцениваем мануальную терапию. biggrin.gif

Осталось только выяснить как этот SLIP или что там.. X.25 присобачить скажем к FTP клиенту Total Соmmander-а?
zltigo
Цитата(SM @ Dec 27 2009, 01:05) *
AX.25.

Да успокойтесь Вы с AX.25 - ну он уже по любому работает с ГОТОВЫМИ фреймами и если будет тупо ими кидатся, то просто может и ни один не дойти. Нужно коллизии разруливать на байтово-фреймовом уровне пока навстречу идет фрейм свое буферизировать и не передавать. А при конфликте встречных фреймовых маркеров должно быть понятие уступающего слейва. И уж потом, если разрулили не 100% коллизий качественно, например, по причине упрощения разруливателя, то это тогда битое на IP вывалится и подчистится.
rezident
А какой-нибудь telnet не решит задачу топикстартера? На имеющемся типе связи его вроде проще поддержать. Или нет?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.