0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
||||||
1 | ||||||
Обмен с I-87068 (ICP DAS)20.02.2015, 14:07. Показов 1998. Ответов 15
Метки нет Все метки)
(
Здравствуйте! Помогите пожалуйста!!! Я написал программку с использованием библиотеки CPort, RS-485 как модуль у меня I-87068. Мне надо чтобы оправить сигнал (или код) и получить ответ (см. рис). Я написал программу сигнал отправляется т.е. я на реальных устройствах проверил, но я не получаю ответ от модуля. Ниже приведен код программы. Вопрос такой как мне получить ответ? Начинающий программист не судите строго!). Спасибо заранее!
Файл: Вложение 492081 Рисунок: Вложение 492082 Код программы:
0
|
20.02.2015, 14:07 | |
Ответы с готовыми решениями:
15
Работа с DCON протоколом (ICP DAS) Работа с ICP DAS i-7043 по протоколу DCON Бесплатная среда разработки для ICP DAS |
![]() |
|
20.02.2015, 16:44 | 2 |
Легко проверить. Вы привели скрин с родного ПО модуля I-87068 от ICP DAS. А теперь запустите сниффер portmon и приведите дампы (полные в HEX в экспорте в TXT-файле на форум) с родной утилиты, начиная с подключения и запросов-ответов и вашей. И посмотрим в чем же разница
![]() p.s.: кстати, вам никто не мешал использовать готовый SDK от производителя (nModbus). Даже есть альтернативный путь, OPC сервер производителя и получение данных любым OPC клиентом, как самописным, так и даже Excel.
1
|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
||||||
20.02.2015, 17:02 [ТС] | 3 | |||||
Спасибо! Уже сделал!
![]() ![]() ![]() ![]()
На счет готовой SDK от производителя (nModbus) - там для моей работы есть некоторые ограничение или я плохо в этом разбираю, поэтому решил свой программку написать. Дальнейшим проект большой будет, а это программка просто для проверки ). Спасибо ! Кстати может какую нибудь литературу посоветуете по SDK ?
0
|
пофигист широкого профиля
4759 / 3196 / 860
Регистрация: 15.07.2013
Сообщений: 18,521
|
|
21.02.2015, 01:48 | 5 |
Какой-то, блин, трансвестициальный способ приема данных из СОМ-порта. С одной стороны используется асинхронная реакция на событие СОМ-порта EV_RXCHAR, а с другой - в обработчике этого события вызывается синхронная процедура ComPort.ReadStr...
0
|
![]() 1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
22.02.2015, 12:13 | 6 |
i87068 обмениватся по протоколу DCS, HEX-формат для него не обязателен, т.к. это текстовый формат. Модули, использующие модбас, называются как-то по-другому.
А вот использование штатных библиотек, пожалуй, самый верный путь, хотя для своих нужд я писал собственную поддержку линейки этих модулей ![]() ТС, зачем вы в коде перед отправкой копируете из строковой переменной в массив байт, чтобы потом тут же все отправить? Имхо, бесполезная фича, если только ваша строчка на в UTF8, а в простом однобайтном формате.
0
|
![]() |
||||||
22.02.2015, 12:55 | 7 | |||||
Voland_, если я и упоминал HEX, то явно указал про отображение дампа обмена в сниффере
![]() Например:
1
|
22.02.2015, 14:02 | 8 |
0
|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
|
25.02.2015, 10:45 [ТС] | 9 |
Здравствуйте! Как отправить биты в компорт.
![]() ![]() Спасибо большое заранее!
0
|
![]() 1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
|
|
25.02.2015, 11:21 | 10 |
1
|
![]() 1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
25.02.2015, 14:40 | 11 |
Gaint, насколько я помню, в дискретных выходах нет побитового управления (возможно, ошибаюсь). Чтобы изменить состояние какого-то одного канала, вы должны иметь предыдущее состояние (например, запросить его у модуля), затем изменить по назначению какой-либо бит и отправить новое состояние в модуль.
"биты в порт" никто не шлет. Вы отправляете команды смены состояния. ЗЫ: вы нашли описание команд i87068?
1
|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
|
26.02.2015, 10:27 [ТС] | 12 |
Вот что я хочу сказать. Например есть такая формула #AABBDD для i87068, где АА - адрес модуля а DD- номер каналов. Я сделал программку который отправляет ASCII код. Например если хочу включить первый канал отправляю этот код #400001 а если второй канал то #400002, но отключается первый канал, а если хочу включить первый и второй канал одновременно то надо отправить #400003 а если хочу одновременно включить первый и последний т.е. 8 канал то надо отправить #400081. При отправке #400000 отключает все каналы. Поэтому я хочу сделать по другому. Вот в этой литературе то что я хочу сделать http://www.delphikingdom.com/a... alogid=838 привожу пример кодов.
Проверка бита Для проверки бита используется операция AND и анализ результата на равенство нулю. if Value and (1 shl N) <> 0 then ... установлен if Value and (1 shl N) = 0 then ... не установлен Переключение бита function InvertBit(Src: Integer; bit: Integer): Integer; begin Result := Src xor (1 shl Bit); end;
0
|
![]() 1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||||||
26.02.2015, 10:56 | 13 | |||||
По какому "другому"? Приведенный Вами код 100% описывает те функции, которые я вам описал словами
![]() Value - это "предыдущее состояние", а Src xor (1 shl Bit) - это "изменить по назначению какой-либо бит". ... вам остается только откуда-то взять начальное состояние выходов модуля (либо установить их жестко при старте программы), и иметь возможность отправлять команды этому модулю при необходимости. Добавлено через 4 минуты сделайте вот такой командой формирование строки модулю:
1
|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
||||||
26.02.2015, 12:33 [ТС] | 14 | |||||
![]() ![]() Добавлено через 22 минуты Вот программа что мне тут добавить или изменить!!)
0
|
![]() 1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
26.02.2015, 13:07 | 15 |
вот еще, в чужих кишках разбираться. За "Спасибо" хлеба не купишь
![]() А решение уже рассосано выше. Учите и разберитесь в логических операциях над битами и байтами. Очень похоже, что именно этого вам и не хватает. ЗЫ: на будущее - пользуйтесь тегами форматирования текста, и тегами сокрытия "под кат" на форуме. Чтобы не потеряться в "простынях" обширных сообщений.
1
|
![]() |
|
26.02.2015, 15:05 | 16 |
2
|
26.02.2015, 15:05 | |
Помогаю со студенческими работами здесь
16
Работа с модулем ICP DAS I-8831 по Modbus RTU Сервер на контроллере ICP DAS i-8831-80 Проблемы с автозагрузкой программы в ICP DAS iPAC-8000E Ввод/вывод данных через com порт из модуля ICP DAS НЕ Самовосстанавливающиеся предохранители ICP-Nxx Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Строки и форматирование в C#
bytestream 27.02.2025
Строки в C# - это иммутабельные (неизменяемые) последовательности символов Unicode. Иммутабельность означает, что после создания строки её содержимое не может быть изменено. Любая операция,. . .
|
Числа и дата/время в C#
bytestream 27.02.2025
В C# есть большой набор встроенных типов для работы с числовыми значениями - от простых целочисленных типов до высокоточных десятичных чисел. При этом каждый тип имеет свои особенности использования. . .
|
Типы данных и объекты в C#
bytestream 27.02.2025
Язык C# предоставляет богатый набор встроенных типов данных, от простых числовых значений до сложных структур данных. При этом система типов в C# постоянно эволюционирует - с каждой новой версией. . .
|
Атрибуты в C#
bytestream 27.02.2025
Атрибуты в C# представляют собой инструмент для добавления метаданных к программному коду. Они позволяют связывать декларативную информацию с классами, методами, свойствами и другими элементами. . .
|
Интеграция браузера в приложение на Python
bytestream 27.02.2025
Интеграция браузера в Python-приложение открывает широкие возможности: от создания кастомизированных браузеров и веб-скрейперов до разработки сложных корпоративных приложений с веб-интерфейсом. . . .
|
Когда освобождать выделенную память в C
bytestream 27.02.2025
В языке C память - средство, требующее особой осторожности и внимания. Память в C делится на два основных типа: статическую и динамическую. Статическая память выделяется компилятором автоматически. . .
|
Самоучки не нужны.
Max Dark 27.02.2025
Самоучки не нужны.
Всем подавай диплом.
И всем плевать, на то что у самоучек может быть больше опыта и знаний, чем дипломированных "специалистов"
Умеешь в С++? - да - круто
Диплом есть . . .
|
Слышать.
Max Dark 27.02.2025
Я не знаю, как это описать.
Я не знаю, куда можно обратиться за помощью.
Если очень примерно.
Я слышу в шуме голоса.
Любой шум.
Любой посторонний звук.
Дождь, шелест пластиковых пакетов,. . .
|
Оптимизация и типичные ловушки в C#: как писать эффективный код
Wired 26.02.2025
Программирование на C# таит в себе множество неочевидных ловушек, способных существенно снизить производительность приложений. Я часто сталкиваюсь с кодом, где разработчики используют неподходящие. . .
|
Реализация паттерна Singleton на C#
Wired 26.02.2025
Паттерн Singleton - одно из самых простых и эффективных решений в объектно-ориентированном программировании, когда требуется обеспечить существование единственного экземпляра класса в системе. Этот. . .
|