Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/65: Рейтинг темы: голосов - 65, средняя оценка - 4.82
1 / 0 / 4
Регистрация: 10.04.2015
Сообщений: 58
1

Работа с модулем через RS-485 - ФМ-ТИИ

21.04.2015, 09:37. Показов 11851. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Передо мной поставили следующую задачу: необходимо считать статус функционального модуля, который подключен к компьютеру через преобразователь интерфейсов USB - RS-485 фирмы Bolid. Список команд чтения есть, необходимо, как я понял, реализовать программу, которая обменивалась бы данными с ФМ.

Я в этом деле новичок, так что хотел бы попросить совета у более опытных и умных дядек: с чего начать, какую литературу читать и тому подобное.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2015, 09:37
Ответы с готовыми решениями:

Проверка подключения RS-485 через преобразователь USB/RS-485
Добрый вечер, форумчане! Я относительно навичек софт-программист, и уж тем более навичек в...

Программная работа через COM с RS-485
:rtfm:так - народ - пишите, если только что дельное. Описание проблемы Есть Делфи установленный...

Modbus через RS-485
Подскажите пожалуйста,как реализуеться обмен по протоколу Modbus через RS-485? Интересует 6-ая...

"Прошивка" через RS-485
Назрел вот такой вопрос. Допустим имеется устройство, на боту у которого контроллер. Устройство...

25
1 / 0 / 4
Регистрация: 10.04.2015
Сообщений: 58
15.05.2015, 13:59  [ТС] 21
Author24 — интернет-сервис помощи студентам
John Prick, честно, не знаю чьими мыслями я руководствовался, когда писал эту команду... Исправил, но ответа так и не пришло. Попробую немного поэкспериментировать с типом и номером ФМ, а так же с преобразователем( есть сомнения, что полярность соблюдена ).
То есть ваше мнение, что эта команда ( в исправленном виде, конечно ), правильно сформирована и модуль должен ответить?
0
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
15.05.2015, 14:08 22
Цитата Сообщение от DanilidzeVa Посмотреть сообщение
То есть ваше мнение, что эта команда ( в исправленном виде, конечно ), правильно сформирована и модуль должен ответить?
В описании сказано, что должна. Там вообще на все команды ответ должен приходить, кроме одной, которая сразу всем устройствам посылается. Я выбрал эту, потому что она самая простая.
Кстати, проверьте ещё настройки ком-порта, в частности, частоту передачи. По описанию 57600 должна быть.
1
1 / 0 / 4
Регистрация: 10.04.2015
Сообщений: 58
18.05.2015, 17:43  [ТС] 23
John Prick, пытался поменять полярность на преобразователе, так же проверил настройки порта, но все тщетно.
В тестовом запуске ( через замкнутый шнур ) все данные как отправляются, так и принимаются программой.
Команду сформировал в точности ( на этот раз действительно точно ), как Вы мне исправили.
Варианта, как я понимаю, остается два: неисправно либо оборудование, либо мой код.
Не могли бы Вы проанализировать мой код?
0
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
19.05.2015, 10:55 24
Цитата Сообщение от DanilidzeVa Посмотреть сообщение
Варианта, как я понимаю, остается два
Нет, их побольше. Попробую накидать то, что первое в голову приходит:

1. Программа не отправляет данные.
Если в замкнутом режиме всё отправляется и принимается, то в первом приближении примем, что код работы с ком-портом корректен.

2. Устройство не принимает данные.
Здесь у меня только одно предположение: неисправен преобразователь USB-RS485.
По руководству я так понял, что контролируется всё только с помощью светодиодов:
1.4 Назначение элементов индикации
1.4.1 «ОШИБКА» - индикатор зеленого цвета загорается при отсутствии связи
изделия с управляющим компьютером в течение 1 часа (рисунок 7).
1.4.2 «РАБОТА» - индикатор зеленого цвета светится постоянно при регулярном
получении (не реже, чем 10 с) от управляющего компьютера пакетов с запросами.
Индикатор мигает, если связь разорвана и в течение 10 с от управляющего компьютера не
было принято ни одного пакета запроса. При отсутствии питания - индикатор не горит.
1.4.3 «RS-485» - индикатор зеленого цвета светится в момент приема и передачи
изделием данных по интерфейсу RS-485.
Как ведут себя эти индикаторы, когда вы работаете из своей программы? Попробуйте смоделировать разные ситуации:
1) отправляйте данные с интервалом менее 10 сек (напр., 5 сек)
2) отправляйте данные реже 10 сек
3) не отправляйте ничего больше часа
Проверьте, чтобы светодиоды вели себя так, как сказано в описании.

3. Устройство принимает данные, но не отправляет ответ.
Здесь может быть много причин:
3.1. Посылка сформирована не верно.
3.2. Посылка сформирована верно, но не совпадает номер устройства.
Пробовали "играть" номером ФМ? Заметьте, что когда меняете номер устройства в посылке, необходимо также пересчитать контрольную сумму.
3.3. Всё формируется верно, но устройство получает "битую" посылку. Тут может быть что угодно: глюк преобразователя, глюк ФМ и т.д.

4. Устройство принимает данные и отправляет ответ. На ком-порт данные не приходят.
Опять же вопросы к преобразователю. Надо смотреть монитором ком-порта. Можете выложить сюда логи мониторинга?

5. Ответные данные принимаются ком-портом, но не принимаются программой.
Устройству на ответ необходимо некоторое время. После посылки сделайте некоторую паузу (называется таймаутом протокола, для разных команд может быть разным) и только потом читайте порт. А м.б. лучше разделить отправку и приём данных по разным потокам. Но этим заняться только если выполняется п.4.

На абсолютно исчерпывающий ответ я не претендую. Возможно, что-то натолкнёт вас на другие мысли. И выложите, пожалуйста, логи порта, интересно взглянуть.

Ещё такой момент. Нет у вас сторонней программы, работающей с этим устройством?
1
1 / 0 / 4
Регистрация: 10.04.2015
Сообщений: 58
20.05.2015, 14:59  [ТС] 25
John Prick, Вы не поверите, два попадания из двух!
Во-первых, был неисправен преобразователь. Ну а, соответственно, во-вторых, был неисправен сам ФМ. Все выяснилось путем посылки тестовой команды через программу, которая уже работала с данным ФМ.
Программа же, написанная мной, теперь успешно отсылает и принимает данные, что несказанно радует меня.
Большое Вам спасибо за всю ту помощь, что Вы оказывали мне на протяжении этих недель! Правда, мне кажется, что в скором времени появится новая тема с новым вопросом от меня. Хех.
Еще раз большое Вам спасибо!
0
2277 / 1768 / 741
Регистрация: 27.07.2012
Сообщений: 5,251
20.05.2015, 15:09 26
Ну что ж, поздравляю. В работе с периферийными устройствами главное - это терпение.
Цитата Сообщение от DanilidzeVa Посмотреть сообщение
Правда, мне кажется, что в скором времени появится новая тема с новым вопросом от меня.
Будут вопросы, дайте знать. Поможем, чем сможем.
0
20.05.2015, 15:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2015, 15:09
Помогаю со студенческими работами здесь

AVR, работа с RS-485
Нужно написать программу для МК AVR (какая модель будет пока не знаю), которая будет общаться с...

RS-485. Работа с Modbus протоколом...
...набивка мануал-факами. Вместо введения... В качестве протокола связи в промышленных сетях...

Modbus RTU через интерфейс rs-485
Всем привет! Разбираюсь с Modbus RTU. Просто хочу быть уверен, что двигаюсь в правильном...

Отправка и получение данных через RS-485
Помогите кто чем сможет. Надо отправить 2 командных пакетов из 7-ми байтов. Пауза между командными...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru