ProductivityBlocks

Добро пожаловать в вики ProductivityBlocks!

Здесь вы найдете документацию по инструменту ProductivityBlocks, а также несколько руководств. У каждого блока есть страница с описанием и кратким описанием использования блока. Используйте панель навигации справа, чтобы найти нужную информацию. Ниже приведено краткое введение в программное обеспечение.


Начиная

ProductivityBlocks — это инструмент графического блочного программирования, который записывает код C++ в среду разработки Arduino IDE .

Каждый блок представляет собой часть программы, которая будет работать на процессорах Arduino.


Создание программы

Чтобы создать программу, используйте вкладки в левой части приложения, чтобы выбрать категорию блока:

Затем щелкните и перетащите нужный блок на основной холст. Блоки встают на место, если их перетащить достаточно близко к соединителю правильной формы.

Чтобы удалить блок с основного холста, перетащите его на вкладки в левой части экрана и отпустите.

Сохранение и загрузка программ

Используйте кнопки «Сохранить» или «Сохранить как», чтобы сохранить программу блока. Чтобы загрузить блочную программу, выберите «Открыть» и выберите файл «.apb», который вы хотите загрузить.

Примеры программ

Если вы установили ProductivityBlocks с помощью установщиков в выпусках , у вас должны быть примеры программ, расположенные в

…/Documents/Arduino/ProductivityBlocks/Examples


Загрузка программы

Примечание. Перед загрузкой или проверкой блочной программы проверьте настройки в Arduino IDE в разделе «Файл-> Настройки». Если установлен флажок «Сохранить при проверке или загрузке», кнопки «Проверить» и «Загрузить» перезапишут ваш текущий эскиз Arduino.

После создания блочной программы нажмите кнопку «Проверить», чтобы проверить сгенерированный код C++:

Когда программа будет готова, используйте кнопку «Загрузить», чтобы отправить программу на подключенную плату Arduino.

Клонирование блоков

Чтобы клонировать группу блоков, выберите корневой блок, который вы хотите клонировать, и щелкните правой кнопкой мыши. Выберите «Клонировать». Выбранный блок будет продублирован вместе со всеми блоками, прикрепленными к нему.


Примечания

  • Соблюдайте осторожность при клонировании большой группы блоков.
  • Если требуется только один блок, рекомендуется выбрать блок из вкладок блока, а не клонировать.

Удаление блоков

Чтобы удалить блок с холста, просто перетащите блок на левую панель и отпустите. Любые блоки, прикрепленные к нему, также будут удалены.

Блокировка комментариев


Добавление комментариев к блокам

Блокировка комментариев обеспечивает способ документирования программы блокировки текстом. Чтобы добавить комментарий к блоку, просто щелкните его правой кнопкой мыши и выберите «Добавить комментарий».

Удаление комментариев из блоков

Чтобы удалить существующий комментарий из блока, щелкните его правой кнопкой мыши и выберите «Удалить комментарий». Имейте в виду, что это навсегда удалит комментарий из программы.

Скрыть/показать блок комментариев

Чтобы скрыть окно комментария, выберите значок ‘?’ на закомментированном блоке. Это переключит видимость комментария. Чтобы отобразить скрытый комментарий, снова щелкните значок.

Изменение размера/перемещение окна комментария

Чтобы переместить окно комментария, щелкните и перетащите границу окна. Чтобы изменить размер окна комментария, щелкните и перетащите указатель мыши в правом нижнем углу.

Примечания

  • Блок комментариев отличается от блоков комментариев.
  • Комментарии к блоку сохраняются/загружаются вместе с блочной программой.

Всплывающие подсказки

Чтобы увидеть краткое описание каждого блока, наведите указатель мыши на нужный блок до появления текста.

Определения

  • П1АМ-100: Программируемый контроллер на базе Arduino, который подключается к модулям Productivity1000(см. ссылку).
  • Производительность1000 Модули (модули P1): Модули ввода/вывода промышленного класса(см. ссылку).
  • Arduino IDE: Средство разработки на C++, используемое для программирования микроконтроллеров Arduino(см. ссылку).
  • Щель: Положение модуля P1 слева направо в соответствии с P1AM-100 (от 1 до 15).
  • Точка: Разъем ввода/вывода на модуле P1 (пронумерован сверху вниз, начиная с 1).
  • Канал: Синоним слова «Точка». Чаще относится к аналоговым разъемам ввода/вывода.

Блоки кода C++


Описание

Эти блоки позволяют внедрить собственный код C++ в блочную программу.


Употребление

Используйте блоки ‘C++ Code Block’ и ‘C++ Code Line’ для написания кода C++ непосредственно в блочную программу. Когда ProductivityBlocks генерирует код в Arduino Sketch с помощью кнопок «проверить» или «загрузить», эти блоки помещают содержащийся в них текст в Sketch.

Приведенные выше блоки VAR используются для ссылки на переменные, созданные с помощью блоков кода C++:

Блок ‘C++ Declarations’ предоставляет способ размещения блоков кода над функциями ‘setup()’ и ‘loop()’ в Arduino Sketch. Здесь можно разместить только ‘C++ Code Block’ и ‘C++ Code Line’.

Использование вкладок Arduino

Среда IDE Arduino позволяет добавлять вкладки в Sketch. Поскольку ProductivityBlocks записывает текст на активную вкладку, для написания кода, который можно использовать с блоками кода, могут использоваться другие вкладки:


Примечания

  • Блоки кода C++ предназначены для пользователей, которые могут программировать с кодом C++. Пользователям, не имеющим опыта программирования, рекомендуется изучить основы программирования на C++ перед их использованием.

Основы блочного программирования

Существует специальный блок под названием Program , который представляет собой весь Arduino Sketch :

После размещения одного из этих блоков на основном холсте остальную часть программы можно создать, привязав другие блоки к его соединителям. Блоки, которые не прикреплены к нему, не будут генерировать текст.

Обратите внимание, что блочные программы должны иметь только один из этих специальных блоков на основном холсте, иначе они не смогут «проверить» или «загрузить».

Типы блоков

Блоки бывают четырех видов:

1. Блок программы:

Содержит программу C++ для загрузки на плату Arduino (как описано выше).

ОСТОРОЖНОСТЬ:

  • Если вы не используете модули P1, вы должны установить для параметра «Использовать модули P1» значение «false». В противном случае программный блок не запустится.
  • Если вы используете модули P1, убедитесь, что на них подается питание, иначе программа не запустится.

2. Командные блоки:

Процессы, которые необходимо выполнить в программе.

3. Функциональные блоки:

Процессы, которые возвращают значение для использования в программе.

4. Блоки данных:

Переменные и константы.

Типы данных

В ProductivityBlocks есть 5 различных основных типов данных. Каждый тип имеет переменный блок и постоянный блок, чтобы идти с ним. Дополнительные сведения о переменных и константах см. на странице « Переменные и константы ».

Категории блоков

  Блок Program Программа


Описание

Создает эскиз Arduino с функциями настройки и цикла.


Употребление

Используйте значение ‘true/false’, чтобы выбрать, будете ли вы использовать модули P1 в программе. Блоки, помещенные под крючок ‘setup’, завершат свои операции на этапе ‘setup’ программы Arduino. Блоки, помещенные под крючок ‘loop’, будут работать непрерывно во время фазы ‘loop’ программы Arduino.

ВНИМАНИЕ:Не выбирайте ‘true’ для ‘Использовать модули P1?’, если ваша программа не использует какие-либо модули P1 (см. Примечания ниже).


Примечания

  • Если ‘Use P1 Modules’ имеет значение ‘true’, этот блок попытается запустить обнаружение модуля P1. Этот процесс будет зависать бесконечно, если нет подключенных модулей P1 или если подключенные модули P1 не питаются к ним. Это делается для того, чтобы модули P1 были готовы для вашей программы, если вы собираетесь их использовать.
  • Если вы не собираетесь использовать модули P1, установите для параметра “Использовать модули P1” значение “false”.
  • На холсте ProductivityBlocks может быть только один программный блок. Если в программе ProductivityBlocks имеется более одного из этих блоков, «проверка» и «загрузка» будут завершаться ошибкой до тех пор, пока лишние блоки не будут удалены.

Вкладка Control “Управление”

if если


Описание

Выполняет набор команд только в том случае, если значение ‘condition’ равно ‘true/HIGH’.


Употребление

Поместите логическое значение в ‘условие’ и соедините нужные блоки под хуком ‘then’. Блоки, помещенные под хук ‘then’, будут запускаться только в том случае, если ‘условие’ имеет значение ‘true/HIGH’.


Примечания

  • «Условие» должно иметь логический блок, подключенный к нему, иначе программа не сможет «проверить» или «загрузить».

if/else если/иначе


Описание

Выполняет набор команд, когда значение ‘condition’ равно true/HIGH’, и выполняет другой набор команд, когда ‘condition’ имеет значение ‘false/LOW’.


Употребление

Поместите логическое значение в ‘условие’ и соедините нужные блоки под хуками ‘then’ и ‘else’. Блоки, помещенные под хук ‘then’, будут запускаться, если ‘условие’ ‘true/HIGH’. Блоки, помещенные под условие ‘else’, будут выполняться, если ‘условие’ имеет значение ‘false/LOW’.


Примечания

  • «Условие» должно иметь логический блок, подключенный к нему, иначе программа не сможет «проверить» или «загрузить».

While пока


Описание

Выполняет набор команд несколько раз, в то время как ‘условие’ имеет значение ‘true/HIGH’.


Употребление

Поместите логическое значение в ‘условие’ и соедините нужные блоки под хуком ‘commands’. Эти блоки будут выполняться по порядку многократно, если значение ‘condition’ не станет ‘false/LOW’. «Условие» проверяется перед каждым повторением. Если ‘условие’ ‘false/LOW’, программа выйдет из блока ‘while’. Размещение блока ‘break’ внутри ‘commands’ приведет к выходу программы из текущего блока ‘while’.


Примечания

  • Если ‘условие’ блока ‘while’ всегда ‘true/HIGH’, программа не может продолжить работу над блоком ‘while’ без блока ‘break’. Обязательно дважды проверьте свое «состояние» и используйте блок «break» по мере необходимости.

Do While Делайте пока


Описание

Выполняет набор команд несколько раз, в то время как ‘условие’ имеет значение ‘true/HIGH’.


Употребление

Поместите логическое значение в ‘условие’ и соедините нужные блоки под хуком ‘commands’. Эти блоки будут выполняться по порядку многократно, если значение ‘condition’ не станет ‘false/LOW’. «Условие» проверяется после каждого повтора. Если ‘условие’ имеет значение ‘false/LOW’, программа выйдет из блока ‘Do While’. Размещение блока ‘break’ внутри ‘commands’ приведет к тому, что программа выйдет из текущего блока ‘Do While’.


Примечания

  • Если «условие» блока «Do While» всегда «true/HIGH», программа не может продолжать работу над блоком «while» без блока «break». Обязательно дважды проверьте свое «состояние» и используйте блок «break» по мере необходимости.

Repeat Повторять


Описание

Выполните набор команд несколько раз в течение заданного количества раз.


Употребление

Поместите целое значение в сокет ‘times’ и подключите нужные блоки под хуком ‘commands’. Эти блоки будут работать по порядку многократно в течение заданного количества раз. Размещение блока ‘break’ внутри ‘commands’ приведет к выходу программы из текущего блока ‘Repeat’.


Примечания

  • К times  «временам» должен быть подключен блок, иначе программа не сможет «верифицировать» или «загружать».

Repeat with Index Повторить с индексом


Описание

Выполните набор команд несколько раз в течение заданного количества раз. Текущее количество повторов сохраняется в переменной.


Употребление

Поместите целое значение в сокет ‘times’ и подключите нужные блоки под хуком ‘commands’. Эти блоки будут работать по порядку многократно в течение заданного количества раз. Текущее количество повторов хранится в переменной, подключенной к ‘index’. Размещение блока ‘break’ внутри ‘commands’ приведет к выходу программы из текущего блока ‘Repeat with Index’.


Примечания

  • К times «временам» должен быть подключен блок, иначе программа не сможет «верифицировать» или «загружать».

Repeat for Range Повторить для диапазона


Описание

Выполните набор команд несколько раз, индексируя их по диапазону значений. Текущий индекс хранится в переменной. Значения ‘start’, ‘stop’ и ‘step’ управляют диапазоном, через который проходит ‘index’.


Употребление

Поместите целочисленные значения в сокеты ‘start’, ‘stop’ и ‘step’ и подключите нужные блоки под хук ‘commands’. Эти блоки будут работать по порядку многократно для каждого числа в диапазоне, определяемом «стартом», «стопом» и «шагом». Текущий индекс хранится в переменной, подключенной к ‘index’. Размещение блока ‘break’ внутри ‘commands’ приведет к выходу программы из текущего блока ‘Repeat with Index’.


Примечания

  • Блок ‘Repeat for Range’ будет разрешать любые числовые значения в сокетах ‘start’, ‘stop’ и ‘step’. Если значение ‘stop’ никогда не достигнуто, блок ‘Repeat for Range’ никогда не будет завершен. Обязательно дважды проверьте диапазон, описанный значениями ‘start’, ‘stop’ и ‘step’, прежде чем использовать этот блок.

Break ломать


Описание

Вырвитесь из блока, который повторяется.


Употребление

Размещение блока ‘break’ внутри ‘while’, ‘Do While’, ‘Repeats’ и других повторяющихся блоков приведет к тому, что программа выйдет из текущего повторяющегося блока. Когда программа сталкивается с блоком ‘break’ внутри повторяющегося блока, повторяющийся блок немедленно завершает работу, и программа продолжит работу над повторяющимся блоком.

Вкладка “Операторы”

Comparison Blocks Блоки сравнения


Описание

Эти блоки возвращают логическое значение true/false, сравнивающее два входа.


Употребление

Каждый блок сравнения сравнивает два значения одного типа данных. Каждый блок сравнения имеет раскрывающееся меню для выбора типа сравнения (см. «Операторы сравнения» в справочнике Arduino). Все блоки сравнения возвращают логическое значение (‘true/false’), представляющее результат сравнения.


Ссылка

  • Смотрите «Операторы сравнения» в справочнике Arduino для получения дополнительной информации.

Concatenate Strings Сцепление строк


Описание

Склейте две строковые константы или строковые переменные, чтобы создать новую строку.


Употребление

Возвращает новую строку, содержащую обе входные строки, склеенные вместе.


Примечания

  • Может быть использована любая комбинация строковых констант/строковых переменных.
  • Используйте экономно, чтобы повысить производительность.

Bitwise Operators Побитовые операторы


Описание

Выполнение выбранных побитовых операций с двумя числовыми значениями.


Употребление

Переместите биты числа влево/вправо или верните побитовое ‘и/или’ между двумя числовыми значениями.


Ссылка

  • Для получения дополнительной информации см. «Побитовые операторы» в справочнике Arduino.

Convert to String Конвертировать в строку


Описание

Создайте строку из числового или логического значения.


Употребление

Возвращает строку, представляющую входное число/логическое значение.


Примечания

  • Форматирование преобразованной строки по умолчанию является ‘base ten’ (см. String()).

‘Not’ Operator Оператор ‘Не’


Описание

Возьмем противоположность логическому значению ‘true/false/HIGH/LOW’.


Употребление

Возвращает противоположное логическому значению.


Ссылка

Compound Operators Составные операторы

Описание

Задайте переменную, равную результату операции, включающей себя и другое число.


Употребление

Поместите числовую переменную в сокет ‘переменная’ и еще одно числовое значение в сокет ‘value’. Используйте раскрывающийся список, чтобы выбрать нужную операцию.


Ссылка

Описание различных составных операций см. в разделе «Составные операторы» в справочнике Arduino.

Вкладка “Математика”

Arithmetic Operators Арифметические операторы


Описание

Выполняет основные математические операции над числовыми переменными и/или константами.


Употребление

Поместите два числовых значения в блок ‘Арифметический оператор’ и используйте раскрывающийся список для выбора нужной операции.


Ссылка

Описание различных операций см. в разделе «Арифметические операторы» в справочнике Arduino.

Compound Operators Составные операторы

Описание

Задайте переменную, равную результату операции, включающей себя и другое число.


Употребление

Поместите числовую переменную в сокет ‘переменная’ и еще одно числовое значение в сокет ‘value’. Используйте раскрывающийся список, чтобы выбрать нужную операцию.


Ссылка

Описание различных составных операций см. в разделе «Составные операторы» в справочнике Arduino.

abs


Описание

Верните абсолютное значение входных данных.


Ссылка

Описание функции ‘abs’ см. в разделе abs.

power


Описание

Поднимите число до возведенного в степень.


Ссылка

Описание функции ‘pow’ см. в разделе pow.

sqrt


Описание

Верните квадратный корень входных данных.


Ссылка

Описание функции ‘sqrt’ см. в разделе sqrt.

Sine синус


Описание

Верните синус входного угла.


Ссылка

Описание функции «синус» см. в разделе  sin.

Cosine косинус


Описание

Верните косинус входного угла.


Ссылка

Описание функции ‘cos’ см. в разделе cos.

tangent


Описание

Верните касательную входного угла.


Ссылка

Описание функции ‘tan’ см. в разделе tan.

Random случайный


Описание

Возвращает случайное число из диапазона целочисленных значений.


Употребление

Блок вернет случайное число между ‘min’ и ‘max’-1.


Ссылка

Описание «случайной» функции см. в разделе случайные.

Map карта


Описание

Масштабируйте «входные данные» из заданного диапазона в заданный выходной диапазон.


Употребление

‘значение’ — это значение, подлежащее масштабированию. Числа в разъемах «от» определяют диапазон входного «значения», а числа в сокетах «до» определяют диапазон выхода. Результатом является число в диапазоне ‘to’, которое соответствует ‘значению’ в диапазоне ‘from’.


Ссылка

Описание функции ‘map’ см. в разделе Map.

Constrain Константа


Описание

Ограничьте выходные данные значением в определенном диапазоне.


Употребление

Блок вернет значение между ‘lower’ и ‘higher’ на основе входного ‘value’.


Ссылка

Описание функции ‘constrain’ см. в разделе constrain.

Вкладка “Время”

Millis


Описание

Возвращает количество миллисекунд с момента начала выполнения программы.


Употребление

Выводом блока является число ‘Long Integer’, которое содержит количество миллисекунд с момента запуска программы.


Примечания

  • Предупреждение: выход этого блока будет переполнен (вернется к нулю), примерно через 50 дней.
  • Поместите результат этого блока в переменные ‘Long Integer’.

Ссылка

Дополнительные сведения о функции ‘millis’ см. в разделе millis.

Micros


Описание

Возвращает количество микросекунд с момента начала запуска программы.


Употребление

Вывод блока представляет собой число ‘Long Integer’, которое содержит количество микросекунд с момента начала программы.


Примечания

  • Предупреждение: выход этого блока переполнится (вернется к нулю) примерно через 70 минут.
  • Поместите результат этого блока в переменные ‘Long Integer’.

Ссылка

Дополнительные сведения о функции ‘millis’ см. в разделе millis.

Вкладка «Переменные и константы»

Типы данных

В ProductivityBlocks существует шесть типов:

Для каждого типа существует переменный блок (вверху слева) и постоянный блок (вверху справа). Блок переменной представляет переменную в программе и может иметь редактируемое имя. Константы не имеют имени, но их значение можно редактировать.

Каждый тип также имеет форму, связанную с ним. Переменные и постоянные блоки могут использоваться везде, где есть гнездо, соответствующее их форме:

Переменные создаются автоматически всякий раз, когда к программе подключается блок переменных с новым именем. Переменные, которые не заданы, будут иметь значение по умолчанию (приведено ниже). Чтобы задать значение переменной, используйте один из блоков ‘Set Variable’:

Значения по умолчанию

Переменные, которые не задаются в программе, будут иметь значения по умолчанию:

  • Integer: 0
  • Long: 0UL
  • Double: 0.0
  • Boolean: false
  • Character: ‘ ‘
  • String: “”

Вкладка “Съемный носитель”

Append to SD Добавить к SD


Описание

Добавление текста в файл на SD-карте. Файл будет создан, если он еще не существует.


Употребление

Входные данные ‘File’ указывают имя файла, к которому необходимо добавить. ‘Data’ — это строковые данные для добавления. Вход ‘CS’ указывает контакт выбора чипа для нужной SD-карты. Логическое значение, прикрепленное к ‘новой строке’, решает, будет ли операция добавления файла помещать новый символ строки в конце.


Ссылка

  • Для получения информации о выборе чипа SD-карты см. SDbegin.
  • Этот блок использует библиотеку Arduino SD.

Read from SD Чтение с SD


Описание

Найдите позицию в файле на SD-карте и прочитайте указанное количество содержимого.


Употребление

Входные данные ‘File’ указывают имя файла для чтения. Значение ‘Seek’ — это позиция в файле, с которой начинается чтение, а «Length» указывает, сколько символов нужно прочитать из этого местоположения. Вход ‘CS’ указывает контакт выбора чипа для нужной SD-карты.


Примечания

  • Во входных данных ‘File’ должен быть указан файл, существующий на SD-карте.
  • Значения ‘Seek’ и ‘Length’ должны быть положительными числами.

Ссылка

  • Для получения информации о выборе чипа SD-карты см. SDbegin.
  • Этот блок использует библиотеку Arduino SD.

Вкладка ввода/вывода

Blink Мигать


Описание

Включите/выключите светодиод (или выбранный цифровой выходной контакт).


Употребление

Используйте ‘pin #’, чтобы выбрать, какой контакт вы хотите мигнуть (по умолчанию используется светодиодный контакт процессора для модуля P1AM-100). «Время включения» и «время выключения» определяют, как долго светодиод будет оставаться включенным / выключенным (указано в миллисекундах).

Get Point Получить сигнал


Описание

Получение состояния входного контакта модуля Arduino.


Употребление

Используйте ‘pin #’, чтобы выбрать, из какого цифрового контакта извлекать входные данные. Блок Get Point возвращает логическое значение true/false, указывающее состояние цифрового контакта.

Set Point Заданное значение


Описание

Установите состояние цифрового контакта на модуле Arduino.


Употребление

Используйте пин-код #, чтобы выбрать, какой цифровой пин-код установить. «Значение» — это желаемое состояние.

Get Analog Получить аналоговый


Описание

Извлеките значение аналогового контакта.


Употребление

Используйте ‘Pin #’, чтобы выбрать, из какого аналогового контакта извлекать входные данные. Этот блок возвращает целое значение выбранного входного контакта.

Set Analog Задать аналоговый


Описание

Задайте значение аналогового контакта.


Употребление

Используйте ‘Pin #’, чтобы выбрать, какой аналоговый контакт установить. ‘Значение’ — это требуемое заданное значение.

Toggle Digital Переключатель цифровой


Описание

Переключите состояние входного контакта модуля Arduino.


Употребление

Используйте ‘pin #’, чтобы выбрать, какой цифровой контакт включить/выключить. Если состояние контакта ‘HIGH/true’, этот блок установит для него значение ‘LOW/false’ и наоборот.

Get Point (Pullup) Получить точку (подтягивание)


Описание

Извлеките состояние входного контакта на модуле Arduino и установите его в режим «подтягивания».


Употребление

Используйте ‘pin #’, чтобы выбрать, из какого цифрового контакта извлекать входные данные. «Get Point (Pullup)» переводит контакт в режим «pullup», поэтому блок возвращает «HIGH», когда контакт не включен, и «LOW», когда контакт включен.


Ссылка

Вкладка Serial COM

Serial Start Последовательный запуск


Описание

Установите скорость передачи данных и начните обмен данными через последовательный порт.


Употребление

Используется для начала связи через выбранный последовательный порт. Используйте вход ‘baud’ для управления скоростью и вход ‘config’ для выбора требуемой последовательной настройки.


Ссылка

  • Дополнительные сведения см. в разделе Serial.begin.

Serial Print Последовательная печать


Описание

Вывод данных через последовательный порт.


Употребление

В зависимости от желаемого типа данных выберите соответствующий блок «Печать». Верхний вход ‘Строка’, ‘Число’, ‘Символ’ и т.д. — данные для печати. Логическое значение «новой строки» определяет, будет ли последовательный порт печатать новый символ строки в конце данных. Используйте ‘port’, чтобы выбрать, с какого последовательного порта печатать.


Ссылка

  • Дополнительные сведения см. в разделе Serial.print.

Serial Print Последовательная печать, готовность печати


Описание

Логическое значение, указывающее, готов ли данный последовательный порт.


Употребление

Используйте ‘port’, чтобы выбрать, какой порт проверять. Логическое значение указывает, готов ли порт к использованию для чтения/записи.


Ссылка

  • Для получения дополнительной информации см. if(Serial).

Serial End Отключение/сброс последовательных соединений на указанном порту


Описание

Отключение/сброс последовательных соединений на указанном порту.


Употребление

Используйте ‘port’, чтобы выбрать, какой последовательный порт отключить/сбросить.


Ссылка

  • Для получения дополнительной информации см. Serial.end.

Serial Flush Дождитесь завершения передачи данных


Описание

Дождитесь завершения передачи данных с указанного последовательного порта.


Употребление

Используйте этот блок, чтобы заставить программу ждать завершения передачи данных на указанном последовательном порту.


Ссылка

  • Дополнительные сведения см. в разделе Serial.flush.

Serial Read Последовательное чтение


Описание

Чтение с последовательного порта.


Употребление

Используйте значение ‘port’, чтобы выбрать порт для чтения. Блок вернет первый байт входящих последовательных данных, если эти данные доступны.


Ссылка

  • Для получения дополнительной информации см. Serial.read.

Serial Read String Чтение строки


Описание

Чтение с последовательного порта и возврат результата в виде строки.


Употребление

Используйте значение ‘port’, чтобы выбрать порт для чтения. Блок вернет строку, содержащую доступные последовательные данные.


Ссылка

  • Дополнительные сведения см. в разделе Serial.readString.

Serial Peek Серийный обзор


Описание

Посмотрите, чтобы увидеть следующий байт данных, доступных с последовательного порта.


Употребление

Используйте значение ‘port’, чтобы выбрать порт для просмотра. Блок вернет первый байт входящих последовательных данных, если эти данные доступны, но не удалит этот байт из последовательного буфера. Это позволяет проверять и обрабатывать следующий байт данных перед сохранением их значения в блоке Read.


Ссылка

  • Для получения дополнительной информации см. Serial.peek.

Serial Available Серийный обзор


Описание

Посмотрите, чтобы увидеть следующий байт данных, доступных с последовательного порта.


Употребление

Используйте значение ‘port’, чтобы выбрать порт для просмотра. Блок вернет первый байт входящих последовательных данных, если эти данные доступны, но не удалит этот байт из последовательного буфера. Это позволяет проверять и обрабатывать следующий байт данных перед сохранением их значения в блоке Read.


Ссылка

  • Для получения дополнительной информации см. Serial.peek.

Serial Available for Write Последовательный порт доступен для записи


Описание

Получите количество байтов (символов), доступных для записи в последовательном буфере.


Употребление

Используйте значение ‘port’, чтобы выбрать порт для проверки. Блок вернет количество байтов (символов), доступных для записи в последовательный буфер, и не заблокирует никаких операций записи.


Ссылка

Serial Find Поиск


Описание

Считывание данных из последовательного буфера до тех пор, пока не будет найден целевой символ.


Употребление

Используйте значение ‘port’, чтобы выбрать порт для чтения. Значение ‘target’ — это символ, который нужно найти в буфере. Блок возвращает ‘true/false’ в зависимости от того, найден ли ‘target’.


Ссылка

  • Для получения дополнительной информации см. Serial.find.

Serial Parse Int Последовательный синтаксический анализ Int


Описание

Получите следующее допустимое целое число в последовательном буфере.


Употребление

Используйте значение ‘port’, чтобы выбрать порт для чтения. Блок вернет первое допустимое целое число из последовательного входного буфера (если только время ожидания не истекло). ‘lookahead’ указывает, как выполнять синтаксический анализ, в то время как ‘ignore’ является символом, который следует игнорировать при синтаксическом анализе. Для получения информации о значениях ‘lookahead’ смотрите ссылку ниже.


Ссылка

  • Дополнительные сведения см. в разделе Serial.parseInt.

Serial Parse Float Последовательный синтаксический анализ Float


Описание

Получите следующее допустимое число с плавающей запятой в последовательном буфере.


Употребление

Используйте значение ‘port’, чтобы выбрать порт для чтения. Блок вернет первое допустимое число с плавающей запятой из последовательного входного буфера (если только время ожидания не истекло). ‘lookahead’ указывает, как выполнять синтаксический анализ, в то время как ‘ignore’ является символом, который следует игнорировать при синтаксическом анализе. Дополнительные сведения о значениях ‘lookahead’ см. в разделе Serial.parseFloat.


Примечания

  • При хранении выходных данных этого блока в переменной используйте тип переменной ‘Double’ (см. Переменные и константы))

Ссылка

Serial Set Timeout Установка Тайм-аута


Описание

Установите максимальное количество миллисекунд для ожидания последовательных данных на указанном порту.


Употребление

Используйте значение ‘port’ для выбора порта для настройки. Входные данные ‘time (msec)’ — это желаемое количество миллисекунд, которое нужно ждать.


Ссылка

  • Дополнительные сведения см. в разделе Serial.setTimeout.

Serial Event Последовательное событие


Описание

Функция, вызываемая при наличии данных.


Употребление

Используется для ответа при наличии последовательных данных. Поместите блоки, предназначенные для обработки последовательных данных, в этот блок, и они будут работать, когда последовательные данные станут доступными.


Примечания

  • Этот блок применяется только к последовательному порту по умолчанию (в большинстве случаев к последовательному порту USB).

Ссылка

  • Дополнительные сведения см. в разделе serialEvent.

C++ Code Blocks

Блоки кода C++


Описание

Эти блоки позволяют внедрить собственный код C++ в блочную программу.


Употребление

Используйте блоки ‘C++ Code Block’ и ‘C++ Code Line’ для написания кода C++ непосредственно в блочную программу. Когда ProductivityBlocks генерирует код в Arduino Sketch с помощью кнопок «проверить» или «загрузить», эти блоки помещают содержащийся в них текст в Sketch.

Приведенные выше блоки VAR используются для ссылки на переменные, созданные с помощью блоков кода C++:

Блок ‘C++ Declarations’ предоставляет способ размещения блоков кода над функциями ‘setup()’ и ‘loop()’ в Arduino Sketch. Здесь можно разместить только ‘C++ Code Block’ и ‘C++ Code Line’.

Использование вкладок Arduino

Среда IDE Arduino позволяет добавлять вкладки в Sketch. Поскольку ProductivityBlocks записывает текст на активную вкладку, для написания кода, который можно использовать с блоками кода, могут использоваться другие вкладки:


Примечания

  • Блоки кода C++ предназначены для пользователей, которые могут программировать с кодом C++. Пользователям, не имеющим опыта программирования, рекомендуется изучить основы программирования на C++ перед их использованием.

Вкладка “Настройка P1”

Начало работы

ProductivityBlocks – это графический инструмент программирования блоков, который пишет код C++ в Arduino IDE.

Каждый блок представляет собой часть программы, которая будет работать на процессорах Arduino.


Создание программы

Чтобы создать программу, используйте вкладки в левой части приложения, чтобы выбрать категорию блоков:

Затем щелкните и перетащите нужный блок на основной холст. Блоки защелкиваются на месте при перетаскивании достаточно близко к соединителю правильной формы.

Чтобы удалить блок с основного холста, перетащите его на вкладки в левой части экрана и отпустите.

Сохранение и загрузка программ

Используйте кнопки «Сохранить» или «Сохранить как», чтобы сохранить блочную программу. Чтобы загрузить блочную программу, выберите «Открыть» и выберите файл «.apb», который вы хотите загрузить.

Примеры программ

Если вы установили ProductivityBlocks с помощью установщика в выпусках,у вас должны быть примеры программ, расположенные в

…/Documents/Arduino/ProductivityBlocks/Examples


Загрузка программы

Заметка: Перед загрузкой или проверкой блочной программы проверьте настройки в Arduino IDE в разделе «>файлы». Если установлен флажок «Сохранить при проверке или загрузке», кнопки «Подтвердить» и «Загрузить» перезапишут ваш текущий Arduino Sketch.

После создания блочной программы нажмите кнопку ‘Verify’, чтобы проверить сгенерированный C++ код:

Когда программа будет готова, используйте кнопку «Загрузить», чтобы нажать программу на подключенную плату Arduino.


Основы блочного программирования

Существует специальный бок под названием Program, который представляет собой целый Arduino Sketch:

После размещения одного из этих блоков на основном холсте остальная часть программы может быть создана путем прикрепления других блоков к ее разъемам. Блоки, которые не прикреплены к нему, не будут генерировать текст.

Обратите внимание, что блочные программы должны иметь только один из этих специальных блоков в основном холсте, иначе он не сможет «проверить» или «загрузить».

Типы блоков

Существует четыре различных типа блоков:

1. Программный блок:

Содержит программу C++, загружаемую на плату Arduino (как описано выше).

ОСТОРОЖНОСТЬ:

  • Если вы не используете модули P1, вы должны установить для параметра ‘Использовать модули P1’ значение ‘false’. В противном случае блок Program не будет запущен.
  • Если вы используете модули P1, убедитесь, что они имеют питание, иначе программа не будет запущена.

2. Командные блоки:

Процессы, выполняемые в программе.

3. Функциональные блоки:

Процессы, возвращающие значение, используемое в программе.

4. Блоки данных:

Переменные и константы.

Типы данных

В ProductivityBlocks существует 5 различных основных типов данных. Каждый тип имеет блок переменных и постоянный блок для перехода. Для получения дополнительной информации о переменных и константах см. страницу Переменные и константы.

Примечания по использованию:

  • При выборе кнопок «Проверить» или «Загрузить» ProductivityBlocks будет записывать текст на активную вкладку в Arduino IDE.
  • При использовании нескольких экземпляров интегрированной среды разработки Arduino (с несколькими открытыми окнами) каждое окно может иметь отдельный экземпляр ProductivityBlocks, работающий с ним. Обратите на это внимание при открытии ProductivityBlocks для каждого окна Arduino IDE, чтобы отслеживать это сопряжение.

Полезные ссылки:

P1AM CPU Tab

 Вкладка процессора P1AM

Print FW Version Версия для печати FW


Описание

Распечатайте версию встроенного ПО процессора P1AM.


Употребление

Используйте этот блок для печати текущей версии встроенного ПО на последовательном мониторе.


Примечания

  • Чтобы использовать этот блок, в вашем программном блоке должно быть установлено значение «Использовать модули P1» в значение «true».

Set PCU LED

 Установить PCU LED


Описание

Включите/выключите светодиод P1AM-CPU.


Употребление

«Заданное значение» — это значение, на которое будет установлено состояние индикатора ЦП. ‘true/HIGH’ включит светодиод, а ‘false/LOW’ выключит светодиод.

P1 Module Config

 Вкладка “Конфигурация модуля P1”

Read Status Статус чтения


Описание

Получение байта состояния из модуля P1.


Употребление

Возвращает целое число (8 бит/байт), содержащее ‘Byte Number’ состояния модуля P1 в ‘slot’.


Примечания

  • Чтобы использовать этот блок, в вашем программном блоке должно быть установлено значение «Использовать модули P1» в значение «true».

P1 Module Configuration Конфигурация модуля P1


Описание

Настройте параметры модуля аналогового ввода P1.


Употребление

Модули аналогового ввода P1 могут быть сконфигурированы с требуемыми настройками перед их использованием для считывания аналоговых входных данных. В зависимости от конфигурируемого модуля для управления параметрами аналогового канала используются различные блоки конфигурации модуля.

Параметры справа от каждого блока конфигурации должны быть заполнены одним байтом данных, который соответствует желаемому параметру. Чтобы настроить модуль, просто выберите нужные значения из выпадающих меню:


Примечания

  • Чтобы использовать эти блоки, в вашем программном блоке должно быть установлено значение «Использовать модули P1» в значение «true».
  • Эти блоки должны использоваться в разделе setup «установка» вашей программы.
  • Блоки конфигурации модуля (на фото выше) должны использоваться один раз для каждого аналогового модуля ввода в вашей программе.
  • P1-08ADL-1, P1-08ADL-2, P1-04ADL-1 и P1-04ADL-2 настроены с помощью блока «Настройка P1-AD».

Ссылка

Для получения дополнительной информации о настройках аналогового модуля P1 см. документацию P1AM здесь. Каждый модуль имеет свою собственную документацию для своих конфигурационных данных.

 Вкладка ввода/вывода P1

P1 Module Blink Module Мигание модуля P1


Описание

Создайте базовую программу, которая мигает цифровым выходом дискретного выходного модуля P1.


Употребление

Выберите «Слот» модуля и нужный вывод «Точка», чтобы мигнуть. «Время включения» и «время выключения» дают продолжительность, в течение которой выходные данные будут оставаться включенными / выключенными.


Примечания

  • Чтобы использовать этот блок, в вашем программном блоке должно быть установлено значение «Использовать модули P1» в значение «true».

Get Points Получайте баллы


Описание

Одновременно извлекайте все точки ввода из модуля цифрового ввода P1. Все точки ввода упакованы в двоичные цифры целого числа.


Употребление

Используйте ‘Slot’, чтобы выбрать, из какого модуля цифрового ввода P1 извлекать входные данные. Вывод блока ‘Get Points’ представляет собой целое число, двоичные цифры которого являются значениями входных точек (начиная с точки 1).


Примечания

  • Этот блок будет работать только с модулями цифрового ввода P1.
  • Чтобы использовать этот блок, в вашем программном блоке должно быть установлено значение «Использовать модули P1» в значение «true».

Set Points Заданные точки


Описание

Одновременная установка всех выходных точек на цифровом выходном модуле P1. Требуемые заданные значения точек содержатся в двоичных цифрах целого числа.


Употребление

Используйте «Слот», чтобы выбрать, какой модуль цифрового вывода P1 установить. ‘Value’ – это целое число, двоичные цифры которого будут записаны (по порядку) в выходные точки модуля цифрового облака P1.


Примечания

  • Этот блок будет работать только с модулями цифрового вывода P1.
  • Чтобы использовать этот блок, в вашем программном блоке должно быть установлено значение «Использовать модули P1» в значение «true».

Get Point Получить балл


Описание

Получение состояния точки ввода в модуле цифрового ввода P1.


Употребление

Используйте ‘Slot’, чтобы выбрать, из какого модуля цифрового ввода P1 извлекать входные данные. ‘Точка’ выбирает, какую точку считывать из модуля цифрового ввода P1.


Примечания

  • Этот блок будет работать только с модулями цифрового ввода P1.
  • Чтобы использовать этот блок, в вашем программном блоке должно быть установлено значение «Использовать модули P1» в значение «true».

Set Point Заданное значение


Описание

Задайте состояние выходной точки на цифровом выходном модуле P1.


Употребление

Используйте «Слот», чтобы выбрать, какой модуль цифрового вывода P1 установить. ‘Точка’ является желаемой выходной точкой модуля цифрового выхода P1. Для выбранной точки вывода устанавливается значение ‘Value’.


Примечания

  • Этот блок будет работать только с модулями цифрового вывода P1.
  • Чтобы использовать этот блок, в вашем программном блоке должно быть установлено значение «Использовать модули P1» в значение «true».

Get Analog Получить аналоговый


Описание

Получение значения точки ввода из аналогового модуля ввода P1.


Употребление

Используйте ‘Slot’, чтобы выбрать, из какого аналогового модуля ввода P1 извлекать входные данные. ‘Точка’ – это желаемая аналоговая входная точка/канал аналогового входного модуля P1. Этот блок возвращает значение выбранной точки/канала ввода.


Примечания

  • Этот блок будет работать только с аналоговыми модулями ввода P1.
  • Чтобы использовать этот блок, в вашем программном блоке должно быть установлено значение «Использовать модули P1» в значение «true».

Set Analog Набор аналоговых


Описание

Задайте значение точки/канала аналогового выходного модуля P1.


Употребление

Используйте ‘Slot’, чтобы выбрать, какой аналоговый выходной модуль P1 установить. ‘Точка’ – это желаемая аналоговая выходная точка/канал аналогового выходного модуля P1. ‘Значение’ — это требуемое заданное значение.


Примечания

  • Этот блок будет работать только с аналоговыми выходными модулями P1.
  • Чтобы использовать этот блок, в вашем программном блоке должно быть установлено значение «Использовать модули P1» в значение «true».

Read Temperature Считывание температуры


Описание

Получение значения входной температурной точки из аналогового температурного модуля P1.


Употребление

Используйте ‘Slot’, чтобы выбрать, из какого аналогового температурного модуля P1 извлекать входные данные. ‘Точка’ – это желаемая аналоговая входная точка/канал аналогового температурного модуля P1. Этот блок возвращает значение температуры выбранной входной точки/канала.


Примечания

  • Этот блок будет работать только с аналоговыми модулями ввода P1.
  • Чтобы использовать этот блок, в вашем программном блоке должно быть установлено значение «Использовать модули P1» в значение «true».
  • Чтобы считывать температуру в правильных устройствах, сначала должен быть настроен температурный модуль P1. См. раздел ‘Конфигурация модуля P1’.

Вкладка P1 HSC

P1 HSC Module Модуль P1 HSC


Описание

Создайте новый объект ‘P1_HSC_Module’ в заданном слоте.


Употребление

Используется для создания и инициализации объекта ‘P1_HSC_Module’, используя ‘slot’ для указания номера слота. Значение ‘HSC’ будет новой именованной переменной, содержащей объект ‘P1_HSC_Module’.


Примечания

  • «P1_HSC_Module» — это особый тип данных в ProductivityBlocks с уникальной формой.
  • Каждая переменная ‘P1_HSC_Module’ содержит два канала и другие данные для программирования физического модуля P1-02HSC с использованием процессора P1AM-100.
  • Перед использованием переменной ‘P1_HSC_Module’ для настройки или чтения модуля P1-02HSC используйте команду Настройка каналов.

Configure Channels Настройка каналов


Описание

Настройка каналов объектной переменной ‘P1_HSC_Module’. Этот блок обновляет конфигурацию канала подключенного модуля P1-02HSC.


Употребление

Используется для инициализации каналов физического модуля P1-02HSC. Поместите нужную переменную ‘P1_HSC_Module’ во входные данные ‘HSC’, чтобы указать, какой модуль необходимо настроить. После того, как вы создали переменные ‘P1_HSC_Channel’ с нужными настройками, поместите их во входы ‘Chan 1’ или ‘Chan 2’, чтобы настроить оба канала модуля P1-02HSC.


Примечания

  • Этот блок необходимо использовать для придания физическому модулю P1-02HSC его конфигурации перед запуском.

Read Inputs Чтение входных данных


Описание

Считывание 8-битного состояния всех входных данных переменной ‘P1_HSC_Module’ или чтение 4-битного состояния четырех входов переменной ‘P1_HSC_Channel’.


Употребление

Используется для считывания всех битов входного состояния (растровых по порядку) переменной ‘P1_HSC_Module’. Эти блоки возвращают целое число, биты которого содержат состояние входных данных модуля. Значение ‘HSC’ указывает, какой модуль считывать, а значение ‘Channel’ указывает, какой канал.

Битовые сопоставления:

Входы считывания (HSC):

битценность
бит 1
бит 2
бит 3
бит 43ИН
бит 5
бит 6
бит 7
бит 84ИН

Входы чтения (канал):

битканал 1канал 2
бит 1
бит 2
бит 3
бит 43ИН4ИН

Примечания

  • Эти блоки могут использоваться независимо друг от друга.
  • Второй блок считывает только биты состояния одного «канала», в то время как первый считывает биты состояния обоих каналов.

Ссылка

P1 HSC Channel Канал P1 HSC


Описание

Создайте новый объект ‘P1_HSC_Channel’ в заданном слоте.


Употребление

Используется для создания и инициализации объекта ‘P1_HSC_Channel’, используя ‘slot’ для указания номера слота. Значение ‘Channel’ будет новой именованной переменной, содержащей объект ‘P1_HSC_Channel’. Используйте ‘channel’, чтобы указать, какой канал создаваемого модуля. Остальные аргументы используются для указания конфигурации канала.


Примечания

  • «P1_HSC_Channel» — это особый тип данных в ProductivityBlocks с уникальной формой.
  • Каждая переменная ‘P1_HSC_Channel’ используется для программирования физического модуля P1-02HSC с использованием процессора P1AM-100.
  • Перед использованием переменной ‘P1_HSC_Channel’ для настройки или чтения модуля P1-02HSC используйте настройка каналов.

Read Position Читать позицию


Описание

Считывание положения канала на модуле P1-02HSC.


Употребление

Используйте ‘Channel’, чтобы указать, какую переменную ‘P1_HSC_Channel’ читать. Этот блок возвращает целое число, задающее текущее положение указанного канала.


Примечания

  • Этот блок можно использовать с блоком Get Channel при использовании переменной ‘P1_HSC_Module’.

Set Position Установить позицию


Описание

Установка положения канала на модуле P1-02HSC.


Употребление

Используйте ‘Channel’, чтобы указать, какую переменную ‘P1_HSC_Channel’ задать. Этот блок задает текущее положение указанного канала на значение ‘counts’.


Примечания

  • Этот блок можно использовать с блоком Get Channel при использовании переменной ‘P1_HSC_Module’.

Set Rollover Position Установка положения ролловера


Описание

Установка положения опрокидывания канала на модуле P1-02HSC.


Употребление

Используйте ‘Channel’, чтобы указать, какую переменную ‘P1_HSC_Channel’ задать. Этот блок задает положение, в котором указанный канал будет переворачиваться (сбрасываться до 0). Используйте значение ‘counts’, чтобы указать, куда нужно перейти.


Примечания

  • Этот блок можно использовать с блоком Get Channel при использовании переменной ‘P1_HSC_Module’.

Set ZReset Value Задать значение ZReset


Описание

Установите положение ‘ZReset’ канала на модуле P1-02HSC.


Употребление

Используйте ‘Channel’, чтобы указать, какую переменную ‘P1_HSC_Channel’ задать. Этот блок задает положение, в котором указанный канал будет Z-Reset. Используйте значение ‘counts’, чтобы указать, где сбросить.


Примечания

  • Этот блок можно использовать с блоком Get Channel при использовании переменной ‘P1_HSC_Module’.

Read Alerts Чтение оповещений


Описание

Считывание бита оповещения для канала модуля P1-02HSC.


Употребление

Используйте ‘Channel’, чтобы указать, какую переменную ‘P1_HSC_Channel’ задать. Этот блок возвращает состояние бита оповещения для указанного канала.


Примечания

P1 PWM Tab P1 ШИМ вкладка

Configure P1-PWM Настройка P1-PWM


Описание

Настройте каналы модуля P1 PWM.


Употребление

Каждый канал модуля P1 PWM может быть настроен на желаемые настройки перед использованием. Параметры ‘Channel’ справа от блока должны быть заполнены одним байтом данных, который соответствует желаемой настройке. Чтобы выбрать соответствующие значения параметров, пожалуйста, ознакомьтесь с документацией, найденной здесь. https://facts-engineering.github.io/modules/P1-04PWM/P1-04PWM.html

Используйте таблицу с надписью “Данные конфигурации модуля”.


Ссылка

Для получения информации о настройках P1-PWM, пожалуйста, обратитесь к документации P1AM здесь.

Write PWM Запись ШИМ


Описание

Запишите частоту и рабочий цикл канала модуля P1-PWM.


Употребление

Используется для установки значения частоты и рабочего цикла модуля P1-PWM в нужном слоте. Заданные значения задаются параметрами Frequency’ and Duty (‘Частота’ и ‘Duty’). Используйте ‘Slot’, чтобы указать, в каком слоте существует ШИМ, и используйте ‘Point’, чтобы указать, какой канал.


Примечания

  • Обязательно настройте модуль P1-PWM перед установкой частоты/рабочего цикла.

Write PWM Frequency Частота записи ШИМ


Описание

Запишите частоту канала модуля P1-PWM.


Употребление

Используется для установки значения частоты и рабочего цикла модуля P1-PWM в нужном слоте. Заданное значение задается ‘Частота’. Используйте ‘Slot’, чтобы указать, в каком слоте существует ШИМ, и используйте ‘Point’, чтобы указать, какой канал.


Примечания

  • Обязательно настройте модуль P1-PWM перед установкой частоты.

Write PWM Duty Cycle Рабочий цикл записи ШИМ


Описание

Запишите рабочий цикл канала модуля P1-PWM.


Употребление

Используется для установки рабочего цикла модуля P1-PWM в нужном слоте. Заданное значение задается значением ‘Duty’. Используйте ‘Slot’, чтобы указать, в каком слоте существует ШИМ, и используйте ‘Point’, чтобы указать, какой канал.


Примечания

  • Обязательно настройте модуль P1-PWM перед установкой рабочего цикла.

Write PWM Dir Запись ШИМ-ре


Описание

Задайте направление (DIR) канала модуля P1-PWM.


Употребление

Используется для задания направления модуля P1-PWM в нужном слоте. Направление задается на значение ‘DIR’. Используйте ‘Slot’, чтобы указать, в каком слоте существует ШИМ, и используйте ‘Point’, чтобы указать, какой канал.

Примечания

  • Обязательно настройте модуль P1-PWM перед настройкой DIR.

Comments Tab Вкладка “Комментарии”

Comment Комментарий


Описание

Прокомментируйте блочную программу.


Употребление

Используется для документирования блочной программы. Каждый блок также создает комментарий C++.

Spacer Проставка


Описание

Создание пространств в блочной программе для разделения блоков.


Употребление

Поместите их в блочную программу, чтобы создать разделение между разделами блочной программы.


Примечания

  • Эти блоки не влияют на генерацию кода C++.

Примечания по использованию:

  • При выборе кнопок «проверить» или «загрузить» ProductivityBlocks запишет текст на активную вкладку в Arduino IDE .
  • При использовании нескольких экземпляров Arduino IDE (с несколькими открытыми окнами) в каждом окне может работать отдельный экземпляр ProductivityBlocks. Обратите внимание на это, когда вы открываете ProductivityBlocks для каждого окна Arduino IDE, чтобы вы могли отслеживать это сопряжение.

https://facts-engineering.github.io/

Обзор и установка

ProductivityOpen P1AM-100 — это платформа автоматизации, совместимая с модулями ввода-вывода серии Productivity1000, платами серии P1AM и платами формата Arduino MKR. Его можно запрограммировать с помощью Arduino IDE. На плате используется микроконтроллер SAMD21G18, такой как Arduino MKRZERO и другие подобные платы.

Установите Arduino IDE версии 1.8.7 или выше. Рекомендуем актуальную версию на сайте Arduino . После того, как вы установили Arduino IDE, вам нужно будет следовать одному из методов установки библиотеки и инструкциям по установке менеджера плат, чтобы начать работу с P1AM-100.

Этот процесс установки потребует подключения к Интернету на всем протяжении. Если вам нужен альтернативный метод установки для компьютеров, не подключенных к Интернету или имеющих другие ограничения, следуйте инструкциям по этой ссылке.

Установка библиотеки P1AM-100

Установить из менеджера библиотек

  • В Arduino IDE перейдите к 

Эскиз > Включить библиотеку > Управление библиотеками

  • Введите P1AM в поле поиска
  • Нажмите кнопку установки в окне библиотеки P1AM.

*** ИЛИ ***

Установить из архива

Эскиз > Включить библиотеку > Добавить библиотеку .ZIP

  • Перейдите к загруженному ZIP-файлу в открывшемся окне.

Установка менеджера досок

  • Запустите Arduino IDE и выберите 

Файл > Настройки

  • Входить 

https://raw.githubusercontent.com/facts-engineering/facts-engineering.github.io/master/package_productivity-P1AM-boardmanagermodule_index.json

в поле « Дополнительные URL-адреса диспетчера плат ». Вы можете добавить несколько URL-адресов, разделяя их запятыми.

  • Откройте диспетчер досок из 

Инструменты > Доска > Менеджер досок

  • Введите P1AM в поле поиска и установите платформу P1AM -100.
  • Выбирать 

Инструменты > Плата > П1АМ-100

  • Перейти к 

Инструменты > Порт

 и выберите COM-порт для вашего P1AM-100

Ссылка на менеджера досок:

https://raw.githubusercontent.com/facts-engineering/facts-engineering.github.io/master/package_productivity-P1AM-boardmanagermodule_index.json

Установка драйвера

Для пользователей Windows необходимо установить драйвер устройства для P1AM-100. Для Windows 10 рекомендуется установить его.

П1АМ-100

ProductivityOpen P1AM-100 — это платформа автоматизации, совместимая с модулями ввода-вывода серии Productivity1000, платами серии P1AM и платами формата Arduino MKR. Его можно запрограммировать с помощью Arduino IDE. На плате используется микроконтроллер SAMD21G18, такой как Arduino MKRZERO и другие подобные платы.

Модули серии Productivity1000 предлагают несколько типов ввода-вывода промышленного класса:

  • Аналоговые и температурные входы
  • Аналоговые выходы
  • Дискретные входы
  • Дискретные выходы и реле
  • Специальные модули

Модули серии Productivity1000 можно приобрести в интернет- магазине AutomationDirect.

Совместимые функции

Ниже приведены несколько функций, которые используются для связи с базовым контроллером. Просмотрите примеры, включенные в библиотеку P1AM, и исходный код, чтобы лучше понять эти функции. Если вам нужны функции для взаимодействия с модулями, перейдите на страницу вашего модуля на боковой панели.

Базовый контроллер

P1AM-100 и сопутствующая библиотека обеспечивают подключение к схеме базового контроллера. Это позволяет обмениваться данными с модулями ввода-вывода серии Productivity1000. При использовании базового контроллера необходимо обеспечить внешнее питание 24 В или использовать блок питания серии P1000.

Контакты базового контроллера

P1AM-100 использует SPI для связи с базовым контроллером. Из-за этого возможно, что контакты 8, 9 и 10 могут использоваться совместно с другими устройствами SPI. Однако A3 и A4 нельзя использовать для любого другого устройства при использовании модулей повышения производительности.

ШтырьФункция
8МОСИ
9КЛК
10МИСО
А3КС
А4ПОДТВЕРЖДЕНИЕ

Примечание: вызов AnalogRead(A3) или AnalogRead(A4) после P1.init() переопределит контакты CS и ACK и прекратит надлежащую работу базового контроллера.

Контрольный таймер базового контроллера

Базовый контроллер имеет настраиваемый сторожевой таймер, который можно использовать для сброса модулей SAMD21 и/или P1000 в базе. Если базовый контроллер не получит сообщение от SAMD21 в течение настроенного периода времени, сторожевой таймер сработает и примет меры. Это может быть полезно, если ваша программа сталкивается с непредвиденным условием. Ознакомьтесь с примерами сторожевого таймера для получения дополнительной информации о том, как использовать эту функцию.

Функции и индикаторы ЦП

Переключить переключатель

Тумблер можно использовать как обычный цифровой вход. Сам по себе он не изменяет никакого поведения, поэтому убедитесь, что вы написали код, который включает все желаемые функции. На него можно ссылаться с помощью 31 или SWITCH_BUILTIN. Установите его как ввод с помощью pinMode() и прочитайте с помощью digitalRead().

pinMode(SWITCH_BUILTIN,INPUT); //Set Swtich to be a digital input

Serial.println(digitalRead(SWITCH_BUILTIN); //Read and print out state of switch. 1 is up and 0 is down.

карта microSD

Слот для карты microSD можно использовать для чтения и записи файлов. Это может быть полезно для регистрации ошибок и сохранения любых показаний. Контакт CS — 28 или SDCARD_SS_PIN. Используйте примеры в Arduino IDE, чтобы узнать, как использовать эту функцию.

Светодиод питания

Когда этот светодиод горит, это означает, что питание SAMD21G18 подается через: USB, внешнее напряжение 24 В, контакт VIN на разъеме или источник питания серии P1000.

Базовый светодиод

Когда этот светодиод горит, это указывает на то, что на базовый контроллер подается питание, и он был инициализирован вызовом P1.init().
Примечание. Для питания базового контроллера и модулей необходимо использовать внешний источник питания 24 В или блок питания серии P1000.

Желтый светодиод

Этот светодиод является управляемым пользователем светодиодом, подобным тем, которые находятся на платах Arduino. На него можно ссылаться, используя LED_BUILTIN или 32. Им можно управлять с помощью функции digitalWrite().

pinMode(LED_BUILTIN, OUTPUT); //Set LED to be a digital output

digitalWrite(LED_BUILTIN, HIGH); // Turn the LED on

delay(1000); // Wait 1 second

digitalWrite(LED_BUILTIN, LOW); // Turn the LED off

delay(1000); // Wait 1 second

РТК

P1AM-100 содержит встроенный RTC (часы реального времени), работающий на кристалле с частотой 32,768 кГц. RTC — это часы, которые отслеживают текущее время и могут использоваться для программирования действий в определенное время. Чтобы использовать функцию RTC, загрузите библиотеку RTCZero из диспетчера библиотек Arduino и ознакомьтесь с их примерами. Для получения более подробной информации см. их справочник по API.

Кнопка сброса

Однократное нажатие кнопки сброса можно использовать для ручного сброса выполнения кода, базового контроллера и всех модулей серии P1000.

Быстрое двойное нажатие на кнопку сброса переведет плату в режим загрузчика. Этот режим обозначается «дышащим» желтым светодиодом. Этот режим можно использовать для восстановления платы, в которой возникла серьезная ошибка из-за плохого кода. В этом состоянии COM-порт изменится, поэтому необходимо выбрать новый COM-порт в меню инструментов и повторно загрузить свой код.

Контакты расширения MKR

ФункцияПины
GPIOА0-А6, 0-14
Аналоговый входА0-А6
Аналоговый выходА0
ШИМ0-8, 10, А3, А4
Прерывать0, 1, 4-8, А1, А2
СПИ8, 9, 10
I2C11, 12
UART13, 14
Выход питания 5В
ВинВход регулируемого питания 5 В
ВККВыход питания 3,3 В
ЗАЗЕМЛЕНИЕЗемля
RSTПерезагрузить
АрефСсылка на аналоговый вход

Примечание. Контакты A3, A4 и 8-10 используются для основного контроллера.
Не превышайте суммарный ток 46 мА от контактов 0, 1 и 4–10.
Не превышайте 3,3 В на любом контакте ввода/вывода.
Не превышайте 7 мА на любом контакте ввода/вывода.
Не подавайте питание на 5V или VCC

Питание P1AM-100



Системные расходные материалы

Питание P1AM-100 может осуществляться несколькими способами. Когда внешнее питание 24 В или источник питания серии P1000 подключено и включено, питание от USB и VIN отключается, но линии данных по-прежнему доступны для программирования и мониторинга в обычном режиме. Кроме того, если подключены только VIN и USB, питание от USB отключается. ВНИМАНИЕ: НЕ ПОДКЛЮЧАЙТЕ ВНЕШНИЙ ИСТОЧНИК ПИТАНИЯ 24 В И ИСТОЧНИК ПИТАНИЯ СЕРИИ P1000 ОДНОВРЕМЕННО.

Источники питания серии P1000 обеспечивают фильтрацию помех, гальваническую изоляцию и простое подключение к системам P1AM. Существуют модели с входным питанием как переменного, так и постоянного тока. Блоки питания можно купить здесь.

Бюджеты мощности

Важно оценить вашу систему и определить, сколько энергии ей потребуется. Если вы используете какие-либо модули серии Productivity1000, вы должны выделить 1,25 Вт для каждого слота от внешнего источника питания 24 В или серии P1000. Если вы используете какие-либо экраны или устройства, подключенные к разъему MKR, вам следует обратиться к таблице ниже, чтобы убедиться, что вы находитесь в пределах надлежащей спецификации. В зависимости от используемого источника питания контакты VCC (3,3 В) и 5 ​​В будут иметь разные пределы тока. Кроме того, они имеют комбинированный предел общей мощности.

Конфигурации питания системы
ИсточникМодули P1000Щиты P1AMМКР Щиты
USBИкс
ВИНИкс
Поставка серии P1000Икс
Внешний 24В
Ограничения мощности заголовка MKR
Источник питания3,3 ВМаксимальная комбинированная мощность
USB330 мА500 мА1,65 Вт
VIN (контактный разъем)600 мА3,3 Вт
Питание серии P1000
ИЛИ внешнее 24 В
850 мА1,28 А4,25 Вт

Справочник по API P1AM

Функция:

uint8_t P1.init();

Назначение:
Инициализирует связь P1AM с модулями P1. Эта функция должна вызываться до вызова любых других функций доступа к модулю P1.

Параметры:
Нет.

Возвращаемые значения:
0–15 — количество найденных модулей P1, подключенных к P1AM.

Функция:

uint32_t P1.readDiscrete(uint8_t slot, uint8_t channel = 0);

Назначение:
Считывает значения для модуля дискретного ввода. Чтобы прочитать обратно значение для определенного дискретного входа, укажите номер канала в переменной «channel». Чтобы прочитать целочисленное значение для всех дискретных входов в этом модуле, укажите значение 0 в переменной «channel».

Параметры:

  • uint8_t slot — номер слота от 1 до 15 модуля дискретного ввода, который вы хотите считать.
  • Канал uint8_t — конкретная точка модуля дискретного ввода, которую вы хотите считать. Задайте значение 0, чтобы считать все дискретные входные точки в целочисленном формате.

Возвращаемые значения:
32-битное значение, указывающее 1 или 0 для конкретной запрошенной точки или целочисленное значение всех точек модуля (когда «канал» = 0).

Функция:

void P1.writeDiscrete(uint32_t data, uint8_t slot, uint8_t channel = 0);

Назначение:
Записывает значения в модули дискретного вывода. Для записи в определенную точку установите для переменной «данные» значение 0 или 1 и укажите дискретное значение выходной точки в переменной «канал». Для одновременной записи во все точки дискретного вывода укажите целочисленное значение в переменной «data» и установите переменную «channel» в 0.

Параметры:

  • uint32_t data — значение для записи в точку дискретного вывода (0 или 1) или весь модуль (целочисленное значение).
  • uint8_t slot — номер слота модуля дискретного вывода, в который вы хотите произвести запись.
  • Канал uint8_t — конкретная точка модуля дискретного вывода, в которую вы хотите произвести запись. Задайте значение 0 для записи во все дискретные выходные точки в целочисленном формате.

Возвращаемые значения:
нет.

Функция:

int P1.readAnalog(uint8_t slot, uint8_t channel);

Назначение:
Считывает исходное немасштабированное целочисленное значение из модуля аналогового ввода.

Параметры:

  • uint8_t slot — номер слота модуля аналогового ввода, который вы хотите считать. Допустимый диапазон: 1–15.
  • uint8_t channel — конкретный канал модуля аналогового ввода, который вы хотите считать. Каналы начинаются с 1.

Возвращаемые значения:
32-битное значение для указанного канала. Для 12-битных аналоговых модулей это будет значение от 0 до 4095. Для 16-битных аналоговых модулей это будет значение от 0 до 65535 или от -32768 до 32767.

Функция:

float P1.readTemperature(uint8_t slot, uint8_t channel);

Назначение:
Считывает необработанное, немасштабированное значение с плавающей запятой из модуля ввода температуры.

Параметры:

  • uint8_t slot — номер слота модуля ввода температуры, который вы хотите считать. Допустимый диапазон: 1–15.
  • Канал uint8_t — конкретный канал модуля ввода температуры, который вы хотите прочитать. Каналы начинаются с 1.

Возвращаемые значения:
32-битное значение с плавающей запятой для указанного канала. Значение будет в градусах для конфигураций температуры и милливольтах для конфигураций напряжения.

Функция:

void P1.writeAnalog(uint32_t data, uint8_t slot, uint8_t channel);

Назначение:
Запись в один канал аналогового вывода.

Параметры:

  • uint32_t data — 32-битное значение, которое будет записано в указанный модуль аналогового вывода. Если модуль является 12-битным, записываемый диапазон должен быть от 0 до 4095. Если модуль является 16-битным, записываемый диапазон должен быть от 0 до 65535.
  • uint8_t slot — номер слота модуля аналогового вывода, в который вы хотите произвести запись. Допустимый диапазон: 1–15.
  • uint8_t channel — конкретный канал модуля аналогового вывода, на который вы хотите производить запись. Каналы начинаются с 1.

Возвращаемые значения:
нет.

Функция:

void P1.readBlockData(char *buf, uint16_t len, uint16_t offset, uint8_t type);

Назначение:
Эта функция дает возможность читать из многих модулей одновременно. Это расширенная функция, которая требует вычислений размеров данных модуля для указания смещений и длин в образе данных базового контроллера. Эта функция не возвращает запрошенные значения, а вместо этого помещает их в массив «buf». Максимальный объем данных, который может быть запрошен при одном чтении, составляет 1200 байт. Если в базовом контроллере содержится более 1200 байт данных, вам придется сместиться к следующему блоку данных в базовом контроллере.

Параметры:

  • char *buf — Массив данных, содержащий значения, запрошенные из буфера данных базового контроллера.
  • uint16_t len ​​— этот параметр указывает длину извлекаемых данных.
  • uint16_t offset — указывает начальный байт данных буфера базового контроллера для начала чтения.
  • uint8_t type — данные в базовом контроллере разделены на разные блоки для разных типов данных. Необходимо указать тип данных для чтения: DISCRETE_IN_BLOCK, ANALOG_IN_BLOCK, DISCRETE_OUT_BLOCK, ANALOG_OUT_BLOCK, STATUS_IN_BLOCK.

Возвращаемые значения:
нет.

Функция:

void P1.writeBlockData(char *buf, uint16_t len, uint16_t offset, uint8_t type);

Назначение:
Эта функция дает возможность записи во многие модули одновременно. Это расширенная функция, которая требует вычислений размеров данных модуля для указания смещений и длин в образе данных базового контроллера. Максимальный объем данных, который может быть запрошен за одну запись, составляет 1200 байт. Если в базовом контроллере содержится более 1200 байт данных, вам придется сместиться к следующему блоку данных в базовом контроллере.

Параметры:

  • char *buf — Массив данных, содержащий значения, записываемые в буфер данных базового контроллера.
  • uint16_t len ​​— этот параметр указывает длину записываемых данных.
  • uint16_t offset — указывает начальный байт в данных буфера базового контроллера, с которого начинается запись.
  • uint8_t type — данные в базовом контроллере разделены на разные блоки для разных типов данных. Вы должны указать, в какой тип данных записывать: DISCRETE_IN_BLOCK, ANALOG_IN_BLOCK, DISCRETE_OUT_BLOCK, ANALOG_OUT_BLOCK, STATUS_IN_BLOCK.

Возвращаемые значения:
нет.

Функция:

void P1.writePWM(float duty, uint32_t freq, uint8_t slot, uint8_t channel);

Назначение:
Эта функция управляет модулем широтно-импульсной модуляции P1-04PWM. Для каждого канала можно установить коэффициент заполнения и частоту.

Параметры:

  • Плавающая загрузка — значение с плавающей запятой в диапазоне от 0,00 до 100,00 может быть отправлено на каждый канал для рабочего цикла.
  • uint32_t freq — этот параметр определяет частоту от 0 до 20 000 для каждого канала.
  • uint8_t slot — указывает номер слота P1-04PWM, в который вы хотите производить запись. Допустимый диапазон: 1–15.
  • Канал uint8_t — указывает канал P1-04PWM, на который вы хотите записать. Каналы начинаются с 1.

Возвращаемые значения:
нет.

Функция:

void P1.writePWMDuty(float duty, uint8_t slot, uint8_t channel);

Назначение:
Эта функция позволяет изменить рабочий цикл модуля P1-04PWM при работе на текущей частоте. Чтобы изменить как коэффициент заполнения, так и частоту, используйте вместо этого функцию P1.writePWM.

Параметры:

  • Плавающая загрузка — значение с плавающей запятой в диапазоне от 0,00 до 100,00 может быть отправлено на каждый канал для рабочего цикла.
  • uint8_t slot — указывает номер слота P1-04PWM, в который вы хотите производить запись. Допустимый диапазон: 1–15.
  • Канал uint8_t — указывает канал P1-04PWM, на который вы хотите записать. Каналы начинаются с 1.

Возвращаемые значения:
нет.

Функция:

void P1.writePWMFreq(uint32_t freq, uint8_t slot, uint8_t channel);

Назначение:
Эта функция позволяет изменять частоту модуля P1-04PWM во время работы с текущим рабочим циклом. Чтобы изменить как коэффициент заполнения, так и частоту, используйте вместо этого функцию P1.writePWM.

Параметры:

  • uint32_t freq — этот параметр определяет частоту от 0 до 20 000 для каждого канала.
  • uint8_t slot — указывает номер слота P1-04PWM, в который вы хотите производить запись. Допустимый диапазон: 1–15.
  • Канал uint8_t — указывает канал P1-04PWM, на который вы хотите записать. Каналы начинаются с 1.

Возвращаемые значения:
нет.

Функция:

void P1.writePWMDir(bool data, uint8_t slot, uint8_t channel);

Назначение:
Эта функция устанавливает для канала, сконфигурированного на P1-04PWM для DIR, высокий или низкий уровень. Обычно это используется в сочетании с другим набором каналов для ШИМ, подключенным к контроллеру шагового двигателя для изменения направления.

Параметры:

  • bool data — это значение устанавливает канал, сконфигурированный как DIR, как низкий (0) или высокий (1).
  • uint8_t slot — указывает номер слота P1-04PWM, в который вы хотите производить запись. Допустимый диапазон: 1–15.
  • Канал uint8_t — указывает канал P1-04PWM, на который вы хотите записать. Каналы начинаются с 1.

Возвращаемые значения:
нет.

Функция:

uint8_t P1.printModules();

Назначение:
Эта функция выводит на последовательный монитор модули P1, обнаруженные P1AM.

Параметры:
Нет.

Возвращаемые значения:
Функция возвращает целочисленное значение, отображающее количество найденных модулей.

Функция:

uint8_t P1.checkUnderRange(uint8_t slot, uint8_t channel = 0);

Назначение:
Эта функция возвращает состояние Under-Range от модуля аналогового ввода. Можно запросить статус для определенного канала или можно запросить байт состояния для всего модуля (канал = 0). Обратитесь к документации по конкретному модулю, чтобы узнать, поддерживает ли он этот элемент состояния.

Параметры:

  • uint8_t slot — номер слота модуля аналогового ввода, который вы хотите считать. Допустимый диапазон: 1–15.
  • uint8_t channel — конкретный канал модуля аналогового ввода, который вы хотите считать. Установите этот параметр на 0, чтобы прочитать статус для всех каналов. Допустимый диапазон: 0–4.

Возвращаемые значения: Возвращается
8-битное целое число. Значение будет 0 или 1 для определенных запросов канала. Если запрашивается состояние всего модуля (канал = 0), каждый бит байта будет соответствовать состоянию нижнего предела диапазона для этого канала (младший значащий бит — канал 1).

Функция:

uint8_t P1.checkOverRange(uint8_t slot, uint8_t channel = 0);

Назначение:
Эта функция возвращает статус Over-Range от модуля аналогового ввода. Можно запросить статус для определенного канала или можно запросить байт состояния для всего модуля (канал = 0). Обратитесь к документации по конкретному модулю, чтобы узнать, поддерживает ли он этот элемент состояния.

Параметры:

  • uint8_t slot — номер слота модуля аналогового ввода, который вы хотите считать. Допустимый диапазон: 1–15.
  • uint8_t channel — конкретный канал модуля аналогового ввода, который вы хотите считать. Установите этот параметр на 0, чтобы прочитать статус для всех каналов. Допустимый диапазон: 0–4.

Возвращаемые значения: Возвращается
8-битное целое число. Значение будет 0 или 1 для определенных запросов канала. Если запрашивается состояние всего модуля (канал = 0), каждый бит байта будет соответствовать статусу превышения диапазона для этого канала (младший значащий бит — канал 1).

Функция:

uint8_t P1.checkBurnout(uint8_t slot, uint8_t channel = 0);

Назначение:
Эта функция возвращает статус перегорания из модуля аналогового ввода. Можно запросить статус для определенного канала или можно запросить байт состояния для всего модуля (канал = 0). Обратитесь к документации по конкретному модулю, чтобы узнать, поддерживает ли он этот элемент состояния.

Параметры:

  • uint8_t slot — номер слота модуля аналогового ввода, который вы хотите считать. Допустимый диапазон: 1–15.
  • uint8_t channel — конкретный канал модуля аналогового ввода, который вы хотите считать. Установите этот параметр на 0, чтобы прочитать статус для всех каналов. Допустимый диапазон: 0–4.

Возвращаемые значения: Возвращается
8-битное целое число. Значение будет 0 или 1 для определенных запросов канала. Если запрашивается состояние всего модуля (канал = 0), каждый бит байта будет соответствовать состоянию выгорания для этого канала (младший значащий бит — канал 1).

Функция:

uint8_t P1.check24V(uint8_t slot);

Назначение:
Эта функция возвращает состояние 24 В пост. тока от модуля. Обратитесь к документации по конкретному модулю, чтобы узнать, поддерживает ли он этот элемент состояния.

Параметры:

  • uint8_t slot — номер слота модуля, который вы хотите прочитать. Допустимый диапазон: 1–15.

Возвращаемые значения: Возвращается
8-битное целое число. Значение будет равно 0, если присутствует 24 В постоянного тока, или 1, если 24 В постоянного тока отсутствует.

Функция:

char P1.readStatus(int byteNum, int slot);

Назначение:
Эта функция возвращает один байт состояния из определенного модуля.

Параметры:

  • int byteNum — начальное байтовое смещение (смещение начинается с 0) байта состояния, которое вы хотите прочитать. Подробную информацию о байтах состояния см. в документации модуля.
  • int slot — номер слота модуля, который вы хотите прочитать. Допустимый диапазон: 1–15.

Возвращаемые значения:
значение байта состояния возвращается в виде символа.

Функция:

void P1.readStatus(char buf[], uint8_t slot);

Назначение:
Эта функция возвращает все значения байтов состояния из определенного модуля. Данные не возвращаются из функции, а сохраняются в массиве «buf».

Параметры:

  • char buf[ ] — в этом массиве хранятся значения байтов состояния, считанные из модуля.
  • uint8_t slot — номер слота модуля, который вы хотите прочитать. Допустимый диапазон: 1–15.

Возвращаемые значения:
нет.

Функция:

bool P1.configureModule(char cfgData[], uint8_t slot);

Назначение:
Эта функция позволяет настроить параметры модулей P1. Каждый модуль может иметь различную конфигурацию, поэтому обратитесь к документации по конкретному модулю за подробной разбивкой этих данных. Эта функция чаще используется для приложений с динамическими данными конфигурации. Для более статических настроек конфигурации используйте следующую функцию (функция перегрузки), в которой определен постоянный массив символов.

Параметры:

  • char cfgData[ ] — в этом байтовом массиве хранятся данные конфигурации, отправляемые в модуль.
  • uint8_t slot — номер слота модуля, который вы хотите настроить. Допустимый диапазон: 1–15.

Возвращаемые значения:
при успешном изменении конфигурации возвращается логическое значение 1.

Функция:

bool P1.configureModule(const char cfgData[], uint8_t slot);

Назначение:
Эта функция позволяет настроить параметры модулей P1. Каждый модуль может иметь различную конфигурацию, поэтому обратитесь к документации по конкретному модулю за подробной разбивкой этих данных. 

Параметры:

  • const char cfgData[ ] — этот постоянный массив байтов — это место, где хранятся данные конфигурации, отправляемые в модуль.
  • uint8_t slot — номер слота модуля, который вы хотите настроить. Допустимый диапазон: 1–15.

Возвращаемые значения:
при успешном изменении конфигурации возвращается логическое значение 1.

Функция:

void P1.readModuleConfig(char cfgData[], uint8_t slot);

Назначение:
Эта функция позволяет прочитать текущую конфигурацию указанного модуля. Каждый модуль может иметь различную конфигурацию, поэтому обратитесь к документации по конкретному модулю за подробной разбивкой этих данных. 

Параметры:

  • char cfgData[ ] — этот байтовый массив — это место, где будут храниться текущие данные конфигурации указанного модуля.
  • uint8_t slot — номер слота модуля, из которого вы хотите прочитать конфигурацию. Допустимый диапазон: 1–15.

Возвращаемые значения:
нет.

Функция:

void P1.configWD(uint16_t milliseconds, uint8_t toggle);

Назначение:
Эта функция настраивает значение сторожевого таймера в миллисекундах и параметр поведения сторожевого таймера, определяемый параметром «toggle». Значение 1 в параметре «toggle» приведет к сбросу ЦП через 5000 миллисекунд. Значение 0 останавливает ЦП до тех пор, пока не произойдет отключение питания. Чтобы использовать сторожевой таймер, его необходимо сначала настроить с помощью функции «P1.configWD()». Чтобы запустить сторожевой таймер, необходимо вызвать «P1.startWD()». Если функция «P1.petWD()» или базового контроллера не вызывается с большей скоростью, чем период времени, указанный в функции «P1.configWD()», сработает сторожевой таймер. Чтобы остановить сторожевой таймер, используйте функцию «P1.stopWD()».

Параметры:

  • uint16_t миллисекунды — это значение сторожевого таймера в миллисекундах.
  • uint8_t toggle — это значение определяет поведение ЦП при срабатывании сторожевого таймера. Подробности смотрите в разделе о целях выше.

Возвращаемые значения:
нет.

Функция:

void P1.startWD();

Назначение:
Эта функция запускает сторожевой таймер. См. назначение функции «P1.configWD()» для получения более подробной информации об использовании функции сторожевого таймера.

Параметры:
Нет.

Возвращаемые значения:
нет.

Функция:

void P1.stopWD();

Назначение:
Эта функция останавливает сторожевой таймер. См. назначение функции «P1.configWD()» для получения более подробной информации об использовании функции сторожевого таймера.

Параметры:
Нет.

Возвращаемые значения:
нет.

Функция:

void P1.petWD();

Назначение:
Эта функция используется для предотвращения истечения времени ожидания сторожевого таймера, если функции ввода/вывода P1 вызываются недостаточно часто. См. назначение функции «P1.configWD()» для получения более подробной информации об использовании функции сторожевого таймера.

Параметры:
Нет.

Возвращаемые значения:
нет.

Функция:

uint32_t P1.getFwVersion();

Назначение:
Эта функция используется для получения версии прошивки базового контроллера P1. Формат возвращаемого значения (в байтах) — XYZZ.

Параметры:
Нет.

Возвращаемые значения:
для версии микропрограммы возвращается 32-битное целое число.

Функция:

bool P1.isBaseActive();

Назначение:
Эта функция проверяет, активен ли контроллер P1 Base. Чтобы активировать базовый контроллер P1, вызовите функцию «P1.init()».

Параметры:
Нет.

Возвращаемые значения:
Логическое значение 1 возвращается, если базовый контроллер P1 активен.

Функция:

uint8_t P1.checkConnection(uint8_t numberOfModules = 0);

Назначение:
Эта функция проверяет, не пропал ли какой-либо из модулей P1. Если переменная «numberOfModules» содержит значение слота, функция вернет либо 0 (если все в порядке, либо значение первого номера слота слева, вызвавшего проблему. Например: если модулей всего 3 и значение 4 было помещено в переменную «numberOfModules», результатом будет «4». То же самое произойдет, если значение 5 будет помещено в переменную «numberOfModules», поскольку слот 3 является последним хорошим слотом. значение 0 передается в переменную «numberOfModules», функция вернет количество модулей, найденных в последней функции init (). В приведенном выше примере результаты будут 1, 2, 3, 0, если отправить значение 0 в переменной «numberOfModules», когда модулей 3.

Параметры:

  • uint8_t numberOfModules — передает номер слота модуля для проверки. Отправка значения 0 возвращает количество модулей, найденных при последнем запуске функции init().

Возвращаемые значения: возвращается
8-битное значение, которое указывает либо 0, если номер слота, переданный функции, правильный, либо номер слота, в котором обнаружена проблема, если есть проблема, либо количество модулей, найденных при последней инициализации ( ) функция, если в функцию передается значение 0. См. объяснение цели выше.

Функция:

uint16_t P1.rollCall(const char* moduleNames[], uint8_t numberOfModules);

Цель:
Отправить массив ожидаемых имен модулей P1 для проверки подключенных модулей P1. Имена модулей должны быть добавлены в массив moduleNames в том же порядке, что и модули (слева направо).

Параметры:

  • const char* moduleNames[ ] — массив имен модулей P1. Пример: {“P1-08SIM”, “P1-08TRS”}
  • uint8_t numberOfModules — количество ожидаемых модулей.

Возвращаемые значения:
16-битное значение, закодированное в двоичном формате, где каждый бит от LSB до MSB указывает на состояние ошибки (1) или отсутствия ошибки (0) для соответствующего номера слота. Значение 0 указывает на отсутствие ошибок.

Функция:

void P1.enableBaseController(bool state);

Назначение:
Отключает базовый контроллер во время нормальной работы и выключает модули. ПРИМЕЧАНИЕ. Чтобы повторно включить базовый контроллер, вызовите функцию P1.init(). Вызов P1.enableBaseController(true) НЕ приведет к повторной инициализации базового контроллера.

Параметры:

  • bool state — значение false отключает базовый контроллер.

Возвращаемые значения:
нет.

Ярлыки каналов

Приведенные ниже функции ведут себя так же, как и описанные выше, но позволяют использовать более описательную метку вместо значений «slot» и «channel», используя структуру channelLabel . Это позволяет вам перемещать устройства ввода-вывода и требовать изменения только в одном месте, а не в нескольких.

Пример:

Вместо выполнения P1.readDiscrete(1, 2); вы можете выполнить ту же функцию, что и P1.readDiscrete(highLevelSensor_1); со следующим кодом:

channelLabel highLevelSensor_1 = {1,2}; //Create Label for sensor at slot 1 channel 2

bool sensorState = P1.readDiscrete(highLevelSensor_1); //read the sensor

Функции, которые поддерживают эту структуру:

  • uint32_t P1.readDiscrete(channelLabel label);
  • void P1.writeDiscrete(uint32_t data, channelLabel label);
  • int P1.readAnalog(channelLabel label);
  • float P1.readTemperature(channelLabel label);
  • void P1.writeAnalog(uint32_t data, channelLabel label);
  • void P1.writePWM(float duty, uint32_t freq, channelLabel label);
  • void P1.writePWMDuty(float duty, channelLabel label);
  • void P1.writePWMFreq(uint32_t freq, channelLabel label);
  • void P1.writePWMDir(bool data, channelLabel label);
  • uint8_t P1.checkUnderRange(channelLabel label);
  • uint8_t P1.checkOverRange(channelLabel label);
  • uint8_t P1.checkBurnout(channelLabel label);

ProductivityOpen P1AM-100 — это платформа автоматизации, совместимая с модулями ввода/вывода серии Productivity 1000, щитами серии P1AM и экранами формата Arduino MKR. Его можно запрограммировать с помощью Arduino IDE. Плата использует микроконтроллер SAMD21G18, как Arduino MKRZERO и другие подобные платы.

Подробную информацию о семействе P1AM и модулях Productivity 1000 можно найти на справочной странице здесь: Документация P1AM-100

Модули серии «Производительность» предлагают несколько типов вводов/выводов промышленного класса

  • Аналоговые и температурные входы
  • Аналоговые выходы
  • Дискретные входы
  • Дискретные выходы и реле
  • Специализированные модули

Библиотека P1AM предоставляет простой интерфейс для управления модулями P1000

P1.writeDiscrete(HIGH, 1, 2);  //Turn slot 1 channel 2 on

float temperature = P1.readTemperature(2, 3);  //Return temperature read from slot 2 channel 3

P1AM-100 можно приобрести в интернет-магазине Automation Direct

Модули производительности серии 1000 можно приобрести в интернет-магазине Automation Direct

Установка P1AM-100

Установите среду IDE Arduino версии 1.8.7 или более поздней. Мы рекомендуем текущую версию на сайте Arduino. После установки Arduino IDE вам нужно будет следовать одному из методов установки библиотеки и инструкциям по установке менеджера плат, чтобы начать работу с P1AM-100

Установка библиотеки P1AM-100

Установка из диспетчера библиотек

  • В Arduino IDE перейдите в Sketch > Include Library > Manage Libraries
  • Введите P1AM в поле поиска
  • Нажмите кнопку установки в окне библиотеки P1AM

ИЛИ

Установка из Zip

  • Нажмите зеленую кнопку с надписью Клонировать или загрузить на этой странице репозитория
  • Выберите Загрузить ZIP
  • В Arduino IDE перейдите в Sketch > Include Library > Add .ZIP Library
  • Перейдите к ZIP-файлу, который вы загрузили в открывшемся окне

Установка менеджера плат

  • Запустите Arduino и выберите File > Preferences
  • Введите в поле Дополнительные URL-адреса менеджера платы. Вы можете добавить несколько URL-адресов, разделяя их запятыми.
  • https://raw.githubusercontent.com/facts-engineering/facts-engineering.github.io/master/package_productivity-P1AM-boardmanagermodule_index.json
  • Откройте менеджер досок из Tools > Board > Boards Manager
  • Введите P1AM в поле поиска и установите платформу P1AM-100
  • Выбирать Tools > Board > P1AM-100
  • Перейдите и выберите COM-порт, к которому подключен P1AM-100Tools > Port

Ссылка на менеджера досок: 

https://raw.githubusercontent.com/facts-engineering/facts-engineering.github.io/master/package_productivity-P1AM-boardmanagermodule_index.json

Установка драйвера

Для пользователей Windows необходимо установить драйвер устройства для установщика драйверов P1AM-100 Download здесь

Начало работы

Библиотека P1AM-100 содержит примеры, которые помогут вам начать работу. Примеры можно найти в Arduino IDE в разделе File > Examples > P1AM-100

Категория Basic содержит лучшие примеры для начала работы с библиотекой и модулями P1000. Другие категории содержат примеры, которые дополнительно исследуют функциональность P1AM-100.

Базовый контроллер

Базовый контроллер P1AM — это микросхема, которая направляет связь между модулями SAMD21 и P1000. Для питания базового контроллера и модулей требуется блок питания серии P1000 или внешний блок питания 24 В. Связь с SAMD21 основана на SPI и использует 5 контактов. Контакты 8, 9 и 10 можно использовать совместно с другими устройствами SPI. A3 и A4 не должны использоваться на любом экране, если используется функциональность базового контроллера P1AM-100

ПинФункция
8МОСИ
9CLK
10МИСО
А3КС
А4АК

Щиты

P1AM-100 использует пины формата Arduino MKR. Контакты устойчивы только к 3,3 В, поэтому не подавайте сигналы 5 В.

Промышленные защитные экраны для P1AM-100 можно приобрести в Automation Direct здесь.

Пожалуйста, прочитайте раздел Базовый контроллер выше, чтобы определить, будет ли ваша распиновка щита работать правильно. Например, Arduino MKR RGB Shield не совместим с P1AM-100, поскольку он использует контакты A3 и A4.

Презентация

Ссылка на библиотеку

Сылка на документацию

Ссылка на ProductivityBlocks 

Ссылка на форум

Форум