2 / 2 / 1
Регистрация: 10.11.2016
Сообщений: 94
|
||||||
1 | ||||||
Блок управления и rs 23210.11.2016, 12:20. Показов 2517. Ответов 13
Метки нет Все метки)
(
Доброго времени суток, форумчане. Сразу перейду к делу, есть блок управления двумя фотоприемниками и затворами, нужно программно обеспечить проведение эксперимента с использованием этих устройств, есть код на c# нужно переписать на c++, либо написать подобный, чем я и занялся.
Вступление: Удаленный компьютер (PC) всегда мастер (master) на линии, устройство (УС) всегда раб (slave). Обмен данными происходит в пакетном режиме. Начало пакета это байт 0x55. Первый байт – байт статуса пакета, распределение битов в этом байте: биты 0 – 4 это адрес устройства (0x00..0x01F; 0..31), биты 5 и 6 длина данных (бит 0x20 и бит 0x40): 0b00 – один байт 0b01 – двухбайтовое число (целое) 0b10 – резервный параметр 0b11 – четырехбайтовое число (плавающее) бит 7 (0x80) определяет тип операции 1- чтение из прибора, 0 - запись в прибор Второй и Третий байт – 16 разрядный адрес данных в приборе. Второй байт - старший байт адреса, Третий байт – младший байт адреса. Байты 4, 5, 6, 7 – байты данных. Для байтовых операций данные – это байт 7. Для двухбайтовых операций – байты 6-7. Байт 8 это последний байт – контрольная сумма. Контрольная сумма это сумма байтов с первого по 8. Для вычисления контрольной суммы байты складываются как беззнаковые 8 битные числа (unsigned char). Если тип операции – запись, то устройство (SLAVE) игнорирует байты данных. Если тип операции чтение, то устройство (SLAVE) отправляет тот же пакет, только данные другие. Поскольку PC всегда мастер, то обмен данными происходит только по команде со стороны PC. Прибор в ответ отправляет такой же пакет. Суть проблемы: 1) Serial port не отвечает на пакеты, или отвечает на предыдущие спустя несколько пакетов. Пример: Чтобы ввести устройство в режим "измерение" (идет считывание с фотоприемников, моргают затворы) нужно записать задержки в мс (в пределах 1 секунды) на 3 стадии работы: stad1 - задержка на стадию 1 (время когда оба затвора открыты) это 2 байта (unsigned int) по адресу 0xDF stad2 - задержка на стадию 2 (затвор 2 - закрыт; затвор 1 - открыт) это 2 байта (unsigned int) по адресу 0xE1 stad3 - задержка на стадию 3 (оба затвора закрыты) это 2 байта (unsigned int) по адресу 0xE3 Как я это реализовал:
Как исправить? (пробовал считывать командой com1->read(result, 9); толку нету, так же пробовал использовать функцию com1->waitForBytesWritten(100); после каждой записи, ситуация не поменялась) Могу скинуть исходники на c# (там все работает как надо) и свои исходники если необходимо Буду благодарен за любую помощь.
0
|
10.11.2016, 12:20 | |
Ответы с готовыми решениями:
13
Алгоритм или протокол управления эл.двигателем по RS-232 rusEfi - блок управления двигателем Блок управления шаговым двигателем. Блок управления микропрограммной структурой |
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,421
|
|
10.11.2016, 14:32 | 2 |
Krounis, что скрывает строчка com1->write(zad1) и как вы собственно принимаете данные?
0
|
2 / 2 / 1
Регистрация: 10.11.2016
Сообщений: 94
|
|||||||||||
10.11.2016, 15:04 [ТС] | 3 | ||||||||||
vxg, com1->write(zad1) это запись в компорт байта первой задержки, принимать данные не обязательно, этими командами я даю понять устройству, что сейчас будет проходить запись/считывание данных с фотоприемников, при том что два затвора будут открываться и закрываться в определенные моменты. А вообще прием данных далее буду осуществлять:
P.S.
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,421
|
|
10.11.2016, 15:38 | 4 |
Krounis, попробуйте понизить скорость обмена. какие таймауты ставит QSerialPort не смотрели?
0
|
2 / 2 / 1
Регистрация: 10.11.2016
Сообщений: 94
|
|
10.11.2016, 16:10 [ТС] | 5 |
vxg, а как их посмотреть/поменять?
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,421
|
|
10.11.2016, 18:48 | 6 |
Krounis, если бы речь шла о winapi я бы сказал а в qt не знаю в свойствах объекта смотреть надо очевидно
0
|
2 / 2 / 1
Регистрация: 10.11.2016
Сообщений: 94
|
|
10.11.2016, 19:29 [ТС] | 7 |
vxg, хорошо, спасибо попробую, как я понимаю таймауты надо уменьшить?
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,421
|
|
11.11.2016, 06:22 | 8 |
Krounis, я думаю что они наоборот могут быть очень малыми
0
|
2 / 2 / 1
Регистрация: 10.11.2016
Сообщений: 94
|
|
12.11.2016, 08:48 [ТС] | 9 |
vxg, не нашел как настроить тайм-ауты((
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,421
|
|
12.11.2016, 17:58 | 10 |
Krounis, попробуйте для пробы кинуть запрос через winapi
0
|
2 / 2 / 1
Регистрация: 10.11.2016
Сообщений: 94
|
|
13.11.2016, 18:51 [ТС] | 11 |
vxg, а это как?)
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,421
|
||||||
14.11.2016, 11:18 | 12 | |||||
Krounis, примерно так
0
|
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
|
|
18.11.2016, 13:16 | 13 |
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,421
|
|
18.11.2016, 13:48 | 14 |
седьмой, да
0
|
18.11.2016, 13:48 | |
18.11.2016, 13:48 | |
Помогаю со студенческими работами здесь
14
Блок управления ШД с тремя обмотками Беспроводной блок управления нагрузками 220В Блок управления подкачивающего насоса котла Блок управления автоматическим открыванием ворот Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
|||||
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
|
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
|
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
|
Параллельное программирование: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование
Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
|
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
|
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке
В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
|
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
|
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins
В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
|
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang
Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
|
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
|
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
|
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
|