Добрый день.
Хотел бы позадовать некоторые вопросы:
1. При попытке создать более 4х параллельных потоков, появляется ошибка "Количество процессов слишком мало. Повысьте максимальное количество процессов в окне основной программы!". Что с этим делать?
2. В программе есть возможность разветвления сигнала на несколько операторов. Как при этом программа обрабатывает конфликты? Простой пример, если мы сигнал с 2х констант направим на 1й вход оператора сложения, с какой из этих констант будет складываться сигнал, подаваемый на 2й второй вход оператора? От чего это зависит?
3. Как работать с пошаговой отладкой если в программе несколько подпрограмм и несколько независимых потоков? Приходится после каждого нажатия искать где остановилась программа. И вообще, есть где-нибудь описание как производить отладку программ в ROBO Pro?
Вопросы по ROBO Pro (контроллер TXT).
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Вопросы по ROBO Pro (контроллер TXT).
Привет!
Сразу видно - автор поста работает с РОБО Про (РП) на серьезном уровне. До параллельных процессов редко кто добирается. Попробую поделиться своим опытом. Отвечаю на вопросы по исходному порядку:
1. Максимальное количество параллельных процессов в пользовательских проектах задается в окне настроек проекта в поле со странным названием "Минимальное число процессов". Увеличьте значение и тогда все заработает: 2. Тут, определенно, использование функции РП недокументированным способом. Какой смысл в объединении нескольких потоков данных, которые идут от констант? В вашем случае на вход сумматора будет передано значение из объекта "константа", который был создан самым последним. Например, на картинке ниже константа со значением 3 была вставлена в блок-схему самой последней. Поэтому в результате в переменную b было записано значение 13, которое поступило с выхода сумматора. 3. Каких либо специальных инструментальных средств для отладки многопоточных программ нет. В вашем случае я могу посоветовать отлаживать подпрограммы и потоки по отдельности и затем подключать их в проект.
Сразу видно - автор поста работает с РОБО Про (РП) на серьезном уровне. До параллельных процессов редко кто добирается. Попробую поделиться своим опытом. Отвечаю на вопросы по исходному порядку:
1. Максимальное количество параллельных процессов в пользовательских проектах задается в окне настроек проекта в поле со странным названием "Минимальное число процессов". Увеличьте значение и тогда все заработает: 2. Тут, определенно, использование функции РП недокументированным способом. Какой смысл в объединении нескольких потоков данных, которые идут от констант? В вашем случае на вход сумматора будет передано значение из объекта "константа", который был создан самым последним. Например, на картинке ниже константа со значением 3 была вставлена в блок-схему самой последней. Поэтому в результате в переменную b было записано значение 13, которое поступило с выхода сумматора. 3. Каких либо специальных инструментальных средств для отладки многопоточных программ нет. В вашем случае я могу посоветовать отлаживать подпрограммы и потоки по отдельности и затем подключать их в проект.
Re: Вопросы по ROBO Pro (контроллер TXT).
По п.2 смысла подавать разные константы на вход конечно никакого нет. Я этот пример использовал для простоты описания. На самом деле меня интересовало будет ли работать схема, когда мы из одного процесса передаем данные в другой параллельный процесс последовательно то из одной части программы то из другой.
В данном случае тоже будут передаваться данные от последнего вставленного блока? Или все же это будет зависеть от того, какой блок программы был выполнен последним?
В данном случае тоже будут передаваться данные от последнего вставленного блока? Или все же это будет зависеть от того, какой блок программы был выполнен последним?
- Вложения
-
- primer1.png (10.68 КБ) 13762 просмотра
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Вопросы по ROBO Pro (контроллер TXT).
В вашей схеме данные будут передаваться на вход сумматора в момент исполнения блока "=". Следовательно после запуска левого потока управления сначала на вход сумматора поступит 0, а затем через 1 с будет передано значение 1. Потом все повторится через 1 секунду.