0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
||||||
1 | ||||||
Обмен с I-87068 (ICP DAS)20.02.2015, 14:07. Показов 1949. Ответов 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 Работа с модулем ICP DAS I-8831 по Modbus RTU |
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
|
пофигист широкого профиля
4755 / 3190 / 861
Регистрация: 15.07.2013
Сообщений: 18,462
|
|
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, то явно указал про отображение дампа обмена в сниффере . Что до Modbus, то речь о библиотеке nModbus из набора SDK Utility and Software Develop Toolkit for 7000/8000/87000 I/O modules (with DCON protocol) http://www.icpdas.com/download/7000/7000.htm. Среди прочего там же DCON_DLL.
Например:
1
|
Voland_
|
22.02.2015, 14:02
#8
|
0
|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
|
25.02.2015, 10:45 [ТС] | 9 |
Здравствуйте! Как отправить биты в компорт. У меня модуль i-87068 и RS-485. Хочу отправить биты в компорт чтобы управлять по отдельности и независимо от друг друга каналы модуля!??? Вот нашел статью но так как я новичок трудно разобраться без пост. помощи. Работаю с библиотекой ComPort. http://www.delphikingdom.com/a... alogid=838
Спасибо большое заранее!
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 | |
26.02.2015, 15:05 | |
Помогаю со студенческими работами здесь
16
Сервер на контроллере ICP DAS i-8831-80 Проблемы с автозагрузкой программы в ICP DAS iPAC-8000E Ввод/вывод данных через com порт из модуля ICP DAS НЕ Самовосстанавливающиеся предохранители ICP-Nxx Подать звуковой сигнал через контроллеры ICP CON I7188EA Das Experiment Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |