Форум » » Разъём I/O как реле » Ответить

Разъём I/O как реле

Серый: Не хватает реле для выполнения задачи. Можно ли использовать I/O как реле?

Ответов - 10

Igor: Если только найти перекидное промежуточное реле с катушкой на 5VDC. Versiport будет управлять промежуточным реле, которое будет коммутировать оконечную нагрузку.

Игорь K.: Не нужно на выход I/o вешать обмотку реле, даже самого миниатюрного. Используйте классические решения, маломощные транзисторы, например КТ315 В качестве усилителей тока, что найдёте.

Серый Кот: Решили отдельный модуль с реле сделать. Еще такая беда - на I/O изначально "повесили" замкнутое устройство. Т.е. изначально сенсор должен выдавать сигнал. При размыкании выполняется степпер. Однако, при отправке программы в процессор и рестарта процессор программа начинает работать раньше, чем реагирует I/O и начинает выполняться степпер. Как можно сделать задержку выполнения программы после запуска процессора?


Вячеслав: Если на simpl+ , то в блоке MAIN опишите типа: Function Main() { // TODO: Add code here // Initialize declared global and local variables/arrays as needed. WaitForInitializationComplete(); delay(10000); //10c InitFunction(); //Пользовательская функция обработки состояния I/O // If you are reading any Input or Output variables, uncomment // the WaitForInitializationComplete statement above and read // them afterwards. Input/Output variables will not have // their correct values set until after the logic processor // runs and propagates the values to them. }

Серый Кот: Нет, без Simpl+. Можно как-то без него?

Серый Кот: Судя по Вашему коду обработка I/O начнётся через 10 сек., но она и так с задержкой идёт, а мне надо сразу ДО выполнения кода. Чтобы Built-in Digital I/O уже был с сигналом. Вот такая конструкция : https://gyazo.com/cb042cf63455324df63028b682b5d088 Изначально Mikrik должен быть в 1, соответственно Mikrik_Invers в 0 и Степпер не выполняется. Но IO не успевает подготовиться, код начинается раньше и Mikrik оказывается в 0 (хотя он сразу замкнут).

Вячеслав: Дак я вроде и предложил игнорировать в течении 10с любые состояния Mikrik поступающие на вход s+ модуля. А через 10с выполнить функцию, которая посмотрит на текущее состояние I/O (Mikrik) и запустит Ваш степпер или не запустит его (по выходу s+ модуля). Function InitFunction() { if(INPUT_mikrik=0){pulse(1,OUTPUT_START_STEPPER);} }

Серый Кот: Это я понял. Но, если игнорировать состояния, то Mikrik изначально будет 0, а надо 1 ) Мне как раз надо, чтобы он сразу был 1, до выполнения остальных действий ) Или неправильно что-то понимаю? В том и дело, что хоть игнорируй, хоть не игнорируй - его состояние 0. Позже модуль в своё рабочее состояние приходит, нежели начинается программа. Надо всю программу как-то заигнорить при запуске хотя бы на секунду. Процессор DIN-AP3

Courag1k: Можно проще. Добавить модуль One shot. На вход "1". Задержку те же 10 сек. После с выхода отправить на NOT. И потом на OR где вторым входом будет сигнал с микротика. Таким образом по выходу всей этой конструкции будет "1" только когда с микротика придет "1" и пройдет 10 секунд после старта системы. Время можно выбрать нужное вам.

Серый Кот: Courag1k, понял идею, но вот что забыл сказать. По сигналу Микрика 0 срабатывает ещё один Степпер, который должен срабатывать только после срабатывания первого, который на 1. Таким образом получается, что при перезапуске срабатывает не 1й (на 1), а 2й (на 0), потому что модуль задерживается и сразу 1 не выдаёт. Потому, какие задержки на сам модуль не ставь, смысла нет. Просто думал, что есть способ вообще задержку выполнения ВСЕЙ логики сделать. Ну, заложено так производителем, типа, сначала инициализация устройств, а только потом логика. В Вашем предложении Степпер, который работает на 0 не будет ждать и сработает сразу. В общем, ладно. Спасибо. Courag1k, идею понял, не обязательно со входа брать, можно вообще с этого сигнала. Буду "костылять"



полная версия страницы