Страница 639 из 785 ПерваяПервая ... 139539589629637638639640641649689739 ... ПоследняяПоследняя
Показано с 6,381 по 6,390 из 7848

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #6381
    Пользователь Аватар для Dimooon
    Регистрация
    04.05.2013
    Адрес
    Казахстан,Рудный
    Сообщений
    553

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Ну, можно как-то так
    Спасибо, в понедельник испытаю

  2. #6382
    Пользователь Аватар для Dimooon
    Регистрация
    04.05.2013
    Адрес
    Казахстан,Рудный
    Сообщений
    553

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Dimooon
    Ну, можно как-то так
    Все отлично, только не могли бы Вы дописать- если с1,с2, с3, с4, с5=0, то надо пропускать эти входы. некоторые насосы могут быть не в работе

  3. #6383
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    81

    По умолчанию

    Dimooon
    тогда, так можно
    Код:

    FUNCTION_BLOCK pump
    VAR_INPUT
    c1: BYTE:=1; (* первый в очереди*)
    c2: BYTE:=2; (* второй в очереди*)
    c3: BYTE:=3; (* третий в очереди*)
    c4: BYTE:=4; (* четвертый в очереди*)
    c5: BYTE:=5; (* пятый в очереди*)
    bs: BOOL; (*сигнал на переключение (по заднему фронту)*)
    END_VAR
    VAR_OUTPUT
    p1, p2, p3, p4, p5: BOOL; (* насосы *)
    END_VAR
    VAR
    ft1: F_TRIG;
    pm: ARRAY[0..4] OF BYTE;
    nm: BYTE;
    a: BYTE:=0;
    b: BYTE:=1;
    num: BYTE;
    END_VAR

    num:=0;
    IF c1 > 0 THEN
    pm[num]:=SHL(b,c1-1);
    num:=num+1;
    END_IF;
    IF c2 > 0 THEN
    pm[num]:=SHL(b,c2-1);
    num:=num+1;
    END_IF;
    IF c3 > 0 THEN
    pm[num]:=SHL(b,c3-1);
    num:=num+1;
    END_IF;
    IF c4 >0 THEN
    pm[num]:=SHL(b,c4-1);
    num:=num+1;
    END_IF;
    IF c5 > 0 THEN
    pm[num]:=SHL(b,c5-1);
    num:=num+1;
    END_IF;

    ft1(clk:=bs);
    IF ft1.Q AND num > 0 THEN
    nm:=(nm+1) MOD num;
    END_IF;

    a:=31 AND pm[nm];
    p1:=a.0;
    p2:=a.1;
    p3:=a.2;
    p4:=a.3;
    p5:=a.4;

  4. #6384
    Пользователь Аватар для Dimooon
    Регистрация
    04.05.2013
    Адрес
    Казахстан,Рудный
    Сообщений
    553

    По умолчанию

    Dimensy, нужен вход сброса, последний выход висит в true- мешает работать. Какой- то обнулятор после всего цикла нужен.
    Capzap, пробовал FIFO - вроде прилетает один сигнал на считывание с R_TRIG, а он разряжает весь буфер. И светится, что пустой. Хотя в эмуляции работает как надо. Пробовал сам написать на CFC - моск чуть не взорвался. Спасите, кто может

  5. #6385
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,650

    По умолчанию

    Цитата Сообщение от Dimooon Посмотреть сообщение
    Dimensy, нужен вход сброса, последний выход висит в true- мешает работать. Какой- то обнулятор после всего цикла нужен.
    Capzap, пробовал FIFO - вроде прилетает один сигнал на считывание с R_TRIG, а он разряжает весь буфер. И светится, что пустой. Хотя в эмуляции работает как надо. Пробовал сам написать на CFC - моск чуть не взорвался. Спасите, кто может
    http://www.owen.ru/forum/showthread....l=1#post221238
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

  6. #6386
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    81

    По умолчанию

    Цитата Сообщение от Dimooon Посмотреть сообщение
    Dimensy, нужен вход сброса, последний выход висит в true- мешает работать. Какой- то обнулятор после всего цикла нужен.
    Т.е., блок должен отработать один круг и все, на второй не идти?

  7. #6387
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    81

    По умолчанию

    Dimooon
    Добавил вход пуск / стоп-резет
    код:

    FUNCTION_BLOCK pump
    VAR_INPUT
    c1: BYTE:=1; (* первый в очереди*)
    c2: BYTE:=2; (* второй в очереди*)
    c3: BYTE:=3; (* третий в очереди*)
    c4: BYTE:=4; (* четвертый в очереди*)
    c5: BYTE:=5; (* пятый в очереди*)
    bSR: BOOL; (* 1 - старт, 0 - стоп/резет *)
    bs: BOOL; (*сигнал на переключение (по заднему фронту)*)
    END_VAR
    VAR_OUTPUT
    p1, p2, p3, p4, p5: BOOL; (* насосы *)
    END_VAR
    VAR
    ft1: F_TRIG;
    rt1: R_TRIG;
    pm: ARRAY[0..5] OF BYTE;
    nm: BYTE;
    a: BYTE:=0;
    b: BYTE:=1;
    num: BYTE;
    END_VAR

    num:=0;
    IF c1 > 0 THEN
    num:=num+1;
    pm[num]:=SHL(b,c1-1);
    END_IF;
    IF c2 > 0 THEN
    num:=num+1;
    pm[num]:=SHL(b,c2-1);
    END_IF;
    IF c3 > 0 THEN
    num:=num+1;
    pm[num]:=SHL(b,c3-1);
    END_IF;
    IF c4 >0 THEN
    num:=num+1;
    pm[num]:=SHL(b,c4-1);
    END_IF;
    IF c5 > 0 THEN
    num:=num+1;
    pm[num]:=SHL(b,c5-1);
    END_IF;

    IF NOT bSR THEN nm:=0; END_IF; (* стоп / резет*)
    rt1(CLK:=bSR);
    IF rt1.Q THEN nm:=1; END_IF; (* старт*)

    ft1(clk:=bs);
    IF ft1.Q AND num > 0 AND bSR THEN
    nm:=(nm+1);
    IF nm > num THEN nm:=1; END_IF;
    END_IF;

    a:=31 AND pm[nm];
    p1:=a.0;
    p2:=a.1;
    p3:=a.2;
    p4:=a.3;
    p5:=a.4;

  8. #6388
    Пользователь Аватар для Dimooon
    Регистрация
    04.05.2013
    Адрес
    Казахстан,Рудный
    Сообщений
    553

    По умолчанию

    Спасибо большое. Да. Отработать должен один круг, потом порядок может поменяться

  9. #6389

    По умолчанию

    Здравствуйте. Как онлайн подключиться к ПЛК/СПК, менять программу... есть ли такая возможность?

  10. #6390

    По умолчанию

    Добрый день!

    Помогите с выводом графика.

    Безымянный.jpg

Страница 639 из 785 ПерваяПервая ... 139539589629637638639640641649689739 ... ПоследняяПоследняя

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •