Трубный блок

В первый раз, когда сервер каналов вызывает CreateNamedPipe функция, она использует nMaxInstances параметр, чтобы указать максимальное количество экземпляров канала, которые могут существовать одновременно. Сервер может позвонить CreateNamedPipe несколько раз для создания дополнительных экземпляров канала, пока не будет превышено максимальное количество экземпляров. Если функция завершается успешно, каждый вызов возвращает дескриптор серверной части экземпляра именованного канала.

Как только сервер каналов создаст экземпляр канала, клиент канала может подключиться к нему, вызвав метод Создать файл or CallNamedPipe функция. Если доступен экземпляр канала, Создать файл возвращает дескриптор клиентского конца экземпляра канала. Если экземпляры канала недоступны, клиент канала может использовать Вэйтамедпайп функция ожидания, пока канал не станет доступным.

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

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

  • Компания ReadFile и WriteFile функции могут использоваться как с каналами байтового, так и с сообщениями.
  • Компания ReadFileEx и WriteFileEx функции могут использоваться с каналами байтового типа или типа сообщений, если дескриптор канала был открыт для перекрывающихся операций.
  • Компания PeekNamedPipe Функция может использоваться для чтения без удаления содержимого канала байтового типа или канала сообщения. PeekNamedPipe также может возвращать дополнительную информацию об экземпляре канала.
  • Компания TransactNamedPipe Функцию можно использовать с дуплексными каналами типа сообщений, если дескриптор канала вызывающего процесса установлен в режим чтения сообщений. Функция записывает сообщение запроса и считывает ответное сообщение за одну операцию, повышая производительность сети.

Сервер канала не должен выполнять блокирующую операцию чтения до тех пор, пока клиент канала не будет запущен. В противном случае может возникнуть состояние гонки. Обычно это происходит, когда код инициализации, такой как библиотека времени выполнения C, должен заблокировать и проверить унаследованные дескрипторы.

Читайте также:
Мексиканский гамак в NOVICA

Когда клиент и сервер завершают использование экземпляра канала, сервер должен сначала вызвать FlushFileBuffers функция, чтобы гарантировать, что все байты или сообщения, записанные в канал, будут прочитаны клиентом. FlushFileBuffers не возвращается, пока клиент не прочитает все данные из канала. Затем сервер вызывает DisconnectNamedPipe функция, чтобы закрыть соединение с клиентом канала. Эта функция делает дескриптор клиента недействительным, если он еще не был закрыт. Любые непрочитанные данные в канале отбрасываются. После отключения клиента сервер вызывает CloseHandle функция, чтобы закрыть свой дескриптор экземпляра канала. В качестве альтернативы сервер может использовать ConnectNamedPipe чтобы новый клиент мог подключиться к этому экземпляру канала.

Процесс может получить информацию об именованном канале, вызвав метод GetNamedPipeInfo функция, которая возвращает тип канала, размер входного и выходного буферов и максимальное количество экземпляров канала, которое может быть создано. GetNamedPipeHandleState Функция сообщает о режимах чтения и ожидания дескриптора канала, текущем количестве экземпляров канала и дополнительной информации о каналах, которые взаимодействуют по сети. Сетнамедпайпхандлестате Функция устанавливает режим чтения и режим ожидания дескриптора канала. Для клиентов канала, взаимодействующих с удаленным сервером, функция также контролирует максимальное количество байтов для сбора или максимальное время ожидания перед передачей сообщения (при условии, что дескриптор клиента не был открыт с включенным режимом сквозной записи).

Трубный блок

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

  • Блок труб:
    • Является объектом, целью которого является изменение потока значений со строгими временными ограничениями.
    • Обычно имеет как входной, так и выходной потоки значений.

    В этой таблице представлены различные блоки труб в зависимости от их функций:

    Работает как генератор значений:

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

      Блок, которым может заканчиваться труба:

      • Преобразуйте входящие значения из пользовательских единиц в правильные системные единицы для целевых объектов.

      Моделирует физическую ось машины.

      Трубопроводная сеть — список блоков трубопроводов

      В этой таблице приведено описание каждого блока труб.

      Добавляет два потока данных.

      Моделирует физическую ось.

      Применяет таблицу кулачка (также называемую профилем кулачка) к входному потоку данных.

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

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

      Задержка потока данных в течение некоторых циклов.

      Применяет деривацию к потоку входных данных.

      Применяет передаточное отношение к потоку входных данных.

      Интегрирует поток входных данных.

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

      Применяет фазовое смещение ко входу.

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

      Вот несколько конкретных объяснений использования блоков труб:

      Дополнительную информацию см. в описании блоков труб.

      Моделирует связь от трубопроводной сети к физической оси.

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

      Используйте блок Adder с блоком Cam для динамического изменения расстояния, пройденного в течение каждого периода (или по модулю) движения.

      Компаратор

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

      В этом примере показано изменение перемещения смещения путем изменения амплитуды (или смещения) блока кулачковой трубы.

      В прикладной программе ПЛК функциональный блок Motion Library — Comparator используется для активизации блока компаратора, а функциональный блок Motion Library — Comparator — для проверки положения.

      • Затем, используя операторы условий в пользовательской программе, можно выполнить определенные действия (например, изменить расстояние перемещения смещения).
      • В другом примере показано использование блока Comparator Pipe Block для определения того, находится ли высокоскоростной вход в допустимом диапазоне положения.

      задержка

      Используйте блок Delay Pipe, чтобы задержать поток позиции через Pipe Network.

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

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

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

      Master

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

      • Генератор профиля в блоке Master имеет трапециевидную форму.
        • Если требуется профиль параболического типа, используйте трубный блок PMP.
        • Если мастером является внешний энкодер или другая ось, используйте блок Sampler Pipe.

        Pharser

        Используйте блок труб Phaser, чтобы:

        • Выполните динамическую настройку фазы внутри Pipe Network.
        • Фазовое опережение или фазовая задержка положения, необходимые для синхронизации различных элементов движения на машине.

        Пробоотборник

        Используйте блок трубы пробоотборника, чтобы:

        • Считайте внешний энкодер как входной сигнал в Pipe Network.
        • Непосредственно считывайте фактическое положение другой оси.

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

        Синхронизатор

        Используйте блок Synchronizer Pipe для синхронизации двух осей.

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

        Вызывать

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

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

        Измените информационный поток с позиции на скорость

        Использовать Convertor Блок трубопровода, чтобы изменить поток информации в трубопроводной сети с положения на скорость.

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

        Рисунок 5-9: Измените режим блока преобразователя на SPEED (не режим POSITION).

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: