Страница 36 из 66 ПерваяПервая ... 26343536373846 ... ПоследняяПоследняя
Показано с 351 по 360 из 658

Тема: Функциональные блоки на языке ST

  1. #351
    Пользователь
    Регистрация
    01.11.2022
    Адрес
    <7924127@mail.ru> Минск
    Сообщений
    508

    По умолчанию

    Цитата Сообщение от RV9WFJ Посмотреть сообщение
    ST в ПЛК160 и ПР205 и сейчас несоизмеримы.
    А я их и не соизмеряю.
    Для решения задачи хватает возможностей ST ПР20x.
    Ранее это делал ПЛК110, потом ПЛК160. Там ещё визуализация есть.
    А ПРxxx имели функцию, и выход надо было разбирать и собирать из 4-х байт побитно.
    Сейчас ST выдаёт сколько угодно переменных.
    И задачи (наши) для ПЛК выполняются на ПР.

    Цитата Сообщение от RV9WFJ Посмотреть сообщение
    Я уже почти всю библиотеку Standart переписал и половину Util.
    Это интересно. Если не жалко поделитесь.
    Я считаю, что можно сложные задачи писать только на ST.
    А все "квадратики" для простых задач.
    Не спорю, есть решения и сложнейшие. Кому как.

    Цитата Сообщение от RV9WFJ Посмотреть сообщение
    А в Вашем случае я бы поставил один ПЛК210 и WEB панель (наверно даже не Овен) и спал бы спокойно.
    Всё уже больше года работает.
    Просто избавляемся от глючного ПЛК160...
    И один ПР205 связан с облаком и формирует отчёт.

    Точнее, будет формировать, но как этот "Архив" работает из доки толком не понять,
    а примеров нет для ПР205...
    А облако с ходу с карточки не смогли оплатить.

  2. #352
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,998

    По умолчанию

    Цитата Сообщение от ПавелП Посмотреть сообщение
    Это интересно. Если не жалко поделитесь.
    Я считаю, что можно сложные задачи писать только на ST.
    А все "квадратики" для простых задач.
    Не спорю, есть решения и сложнейшие. Кому как.
    В чем сложность?
    Открываете кодесисовские библиотеки как проекты и копируете тексты ФБ
    Захват-01.png

    Захват-02.png

    Только Standard.LIB нужно иметь "специфическую"
    Вложения Вложения
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #353
    Пользователь
    Регистрация
    01.11.2022
    Адрес
    <7924127@mail.ru> Минск
    Сообщений
    508

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    В чем сложность?
    Открываете кодесисовские библиотеки как проекты и копируете тексты ФБ
    Я в курсе.


    Цитата Сообщение от petera Посмотреть сообщение
    Только Standard.LIB нужно иметь "специфическую"
    Сообщение от RV9WFJ
    Я уже почти всю библиотеку Standart переписал и половину Util.

    Только вы же не только переписали, но и проверили в работе!
    Я иду тем же путём, но стандартных обычно не хватает.
    Беру исходники, и перерабатываю под свои задачи.

    Вы с архивом под ПР205 случайно не работали?

  4. #354

    По умолчанию

    Цитата Сообщение от ПавелП Посмотреть сообщение
    Точнее, будет формировать, но как этот "Архив" работает из доки толком не понять,
    а примеров нет для ПР205...
    А с чего вы взяли что в ПР есть полноценные архивы?
    Может эта функция и заложена на далекое будущее)
    Но сейчас -
    " В архиве сохраняются следующие данные:
    • состояние батареи;
    • статус прибора (служебная информация для обращения в сервисный центр и в группу
    технической поддержки)."

  5. #355
    Пользователь
    Регистрация
    01.11.2022
    Адрес
    <7924127@mail.ru> Минск
    Сообщений
    508

    По умолчанию

    Цитата Сообщение от Samel Посмотреть сообщение
    А с чего вы взяли что в ПР есть полноценные архивы?
    Может эта функция и заложена на далекое будущее)
    Но сейчас -
    " В архиве сохраняются следующие данные:
    • состояние батареи;
    • статус прибора (служебная информация для обращения в сервисный центр и в группу
    технической поддержки)."
    Т.е. - это лог батареи, ГРОМКО названный архивом...

    - Кол-во архивов 50 шт.
    - Размер архива 2048 байт.
    - Последний индекс архива - это в который будет запись.

    А индекс "побегать" по массиву?

  6. #356

    По умолчанию

    Архивация доступна для сетевых переменных. Для этого есть параметр "Архивировать значение".
    Снимок экрана 2023-11-24 114216.png
    Выгрузить архив можно, например, при помощи Owen Configurator в формате .csv.
    Снимок экрана 2023-11-24 115010.png
    Инженер по продукту | ПР и Owen Logic
    email: k.korolev@owen.ru

  7. #357
    Пользователь
    Регистрация
    01.11.2022
    Адрес
    <7924127@mail.ru> Минск
    Сообщений
    508

    По умолчанию

    Цитата Сообщение от Королев Кирилл Посмотреть сообщение
    Архивация доступна для сетевых переменных. Для этого есть параметр "Архивировать значение".
    Снимок экрана 2023-11-24 114216.png
    Выгрузить архив можно, например, при помощи Owen Configurator в формате .csv.
    Снимок экрана 2023-11-24 115010.png
    Ура! Работает! Спасибо!

    Только вот как по событию писать?
    Желательно редактировать архив как массив.

    Архив-индекс на форум 24-11-2023.png

    А индекс "побегать" по массиву?
    Выбрать массив?

    Или индекс [50*2048] - это адрес всей памяти?

    // ----------------------------------------------------------------

    Пришло время писать статистику.
    Что понятно из OL настроек "про архив":
    1. Период архивирования: от 10 до 3600 секунд. задаю 12
    Получаю 01м54c до 02м05с - при каждой перезаписи программы в ПР205 получается разная длительность.
    Т.е. через 12 сек, пишется в 2048 байт. Будет больше переменных назначено - не запишутся.

    2. Количество архивов: 10-50
    3. Размер архива: 200-2048 байт
    Т.е. записей до 50, длинной до 2048 байт.

    4. Последний индекс архива: 0-65535
    В какой из архивов от 0 до 50 последний раз записалось.

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

    Как с этим всем работать, как с линейной областью памяти?
    Естественно, не так часто, чтоб не "протереть до дыр".

    ПР205 Руководство по эксплуатации 1-ru-110672-1.9.pdf
    Максимальное количество файлов архива 300 шт. стр. 11
    Последний раз редактировалось ПавелП; 06.12.2023 в 00:32.

  8. #358

    По умолчанию

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

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

    По умолчанию

    Цитата Сообщение от Gribnick Посмотреть сообщение
    Хочу спросить, в языке ST я еще новичек, а возможно ли написать фунциональный блок, который будет в определенной последовательности активировать выхода (на пневмоцилиндры), при этом контролируя все получаемыми входными сигналами (с датчиков положения). Важно написать определенную последовательность. И при этом зациклить выполнение блока, с остановкой по входному сигналу.
    можно, также как это делалось бы на известном Вам языке программирования
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #360
    Пользователь
    Регистрация
    01.11.2022
    Адрес
    <7924127@mail.ru> Минск
    Сообщений
    508

    По умолчанию

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

    Например, управление техпроцессом из шести вариантов прогонки электродвигателей.

    Код:
       IF   kSTART=1  AND  STEP=98  THEN  STEP:=40;               END_IF  (* ПЕРЕзапуск для пров на КЗ [Pк]*)
    
       IF   kSTART=1  AND  STEP=99  THEN  STEP:= 0;  OutX0;       END_IF  (* запуск очередной после полного прохода          *)
    
       IF   kSTART=1  AND  STEP=0   THEN  STEP:=10;  D00:=0; OutSVz1:=1;            (* СТАРТ общий *)
            v500:=s500a; v500:=v500*1000; vADC:=sADCa; vADC:=vADC*1000; v2000:=s2000a; v2000:=v2000*1000; (*  индексировать  *)
            v380:=s380a; v380:=v380*1000; v100:=s100a; v100:=v100*1000;     END_IF  (* и прописать в секундах *)
    (* IF   kSTART=1  AND  D01 <>0  THEN  STEP:=D01;    D01:=0;             END_IF ( * выход из паузы *)
    
    
    (* IF   kPAUSE = 1 AND STEP <>0            THEN  D01:=STEP; STEP:=10;   END_IF     вход  в  паузу *)
    (* IF   InR = 1   THEN   nw:=0; Out10:=0;  ELSE   nw:=1;    Out10:=1;   END_IF *)
    (* IF   InR = 1   THEN        при моделировании Alarm и Stop отключать             останов по Alarm и STOP - вкл AlarmSV *)
    
    
       IF   kAlarm=0 OR kSTOP=0   THEN     STEP:=0;  OutX0; D00:=0; D01:=0; END_IF  (* STOP любой *)
       IF   D00=3                 THEN     ZUMo:=100;       SVzt:=1000;     END_IF  (* звук START цикла *)
    
    
     CASE   STEP  OF           (* Out1P1 Out2P1 Out3P1 Out4P1 Красный *)
     10:    IF   D00 =  1   THEN  OutX0; Out5P1:=1; Out1P1:=0;   END_IF   (* все выходы выключить 5 ИНДИКАЦИЯ зел включить *)
    (*ADC*) IF   D00 =  10  THEN  ADC4v:=0;Out9:= 1;    END_IF   (* обмотка 1-я пара *)
            IF   D00 = vADC/2     THEN    Out10:= 1;    END_IF   (* обмотка 2-я пара *)
            IF   D00 > vADC       THEN    Out10:= 0;    END_IF   (* Отключить *)
            IF   D00 > vADC+100   THEN    Out9 := 0;    END_IF   DSS:=(vADC+2000)-D00; (* обратный счёт, откинуть три нуля *)
            IF   D00 > vADC+2000  THEN     STEP:=20;    D00:=0;  (* OutX0; *)        END_IF   D00:=D00+1; (* тик программы *)
    
    
     20:    IF   D00 =  1   THEN  OutX0; Out6P1:= 1;    END_IF   (* все выходы выключить    ИНДИКАЦИЯ включить *)
    (*500*) IF   D00 =  100       THEN    Out12:= 1;    END_IF   (* Включить  *)
            IF   D00 =  200       THEN    Out9 := 1;    END_IF   (* Включить  *)
            IF   D00 > v500       THEN    Out9 := 0;    END_IF   (* Отключить *)
            IF   D00 > v500+100   THEN    Out12:= 0;    END_IF   DSS:=(v500+1000)-D00;  D00:=D00+1;
            IF   D00 > v500+1000  THEN     STEP:=30;    D00:=0;  OutX0;              END_IF  (* Out2P1:=1; *)
    
    
     30:    IF   D00 =  1   THEN  OutX0; Out7P1:= 1;    END_IF   (* 380v измерения  все выходы выключить *)
    (*380*) IF   D00 =  100       THEN    Out12:= 1;    END_IF   (* Включить  *)
            IF   D00 =  200       THEN    Out11:= 1;    END_IF   (* Включить  *)
            IF   D00 =  300       THEN    Out9 := 1;    END_IF   (* Включить  *)
            IF   D00 > v380       THEN    Out9 := 0;    END_IF   (* Отключить *)
            IF   D00 > v380+100   THEN Out11:=Out12:=0; END_IF   DSS:=(v380+1000)-D00;  D00:=D00+1;
            IF   D00 > v380+1200  THEN     STEP:=40;    D00:=0;  OutX0;  FazA100:=FazB100:=FazC100:=0; (* обнулить перед переходом *)  END_IF  (* Out3P1:=1; *)
    
    
     40:    IF   D00 =  1   THEN  OutX0; Out8P1:= 1;  STEP:=98;  END_IF (* КЗ ротора - ждать фиксации вала   TACK1_Motor1.STEP=20 OR TACK1_Motor1.STEP=6 *)
    (*100*) IF   D00 =  100       THEN    Out11:= 1;    END_IF   (* Включить  *)
            IF   D00 =  200       THEN    Out9 := 1;    END_IF   (* Включить  *)
            IF   D00 > v100       THEN    Out9 := 0;    END_IF   (* Отключить *)
            IF   D00 > v100+100   THEN    Out11:= 0;    END_IF   DSS:=(v100+2000)-D00;  D00:=D00+1;
            IF   D00 > v100+2000  THEN     STEP:=50;    D00:=0;  OutX0;              END_IF  (* Out4P1:=1; *)
    
    
     50:    IF   D00 =  2000      THEN    Out9 := 0;    END_IF   (* 2000 вольт *)
    (*2000*)IF   D00 > v2000      THEN    Out9 := 0;    END_IF   DSS:=(v2000+1000)-D00; D00:=D00+1;
            IF   D00 > v2000+1000 THEN     STEP:=99;    D00:=0;  OutX0;              END_IF
    
    
     90:    IF   D00 =  0         THEN             ;    END_IF   (* обрыв обмотки  *)
     91:    IF   D00 =  0         THEN             ;    END_IF   (* заглушка *)
     92:    IF   D00 =  0         THEN             ;    END_IF   (* заглушка *)
    
    
     98:    IF   D00 =  0         THEN             ;    END_IF   (* Pк - зажать вал *)
     99:    IF   D00 =  0         THEN             ;    END_IF   (* СЛЕДУЮЩИЙ - проверка завершена успешно *)
    
    
     END_CASE      IF  InR=0  THEN  ZUMv:=100;          END_IF   (* звук от Reset *)
    
    
       IF  ZUMo<>0 OR ZUMo>0  THEN  ZUMo:=ZUMo-1;  ZUM0   :=1;  ELSE   ZUM0   :=0;  END_IF   (* отсчёт длительности звука утробного   *)
       IF  ZUMv<>0 OR ZUMv>0  THEN  ZUMv:=ZUMv-1;  OutZUM :=1;  ELSE   OutZUM :=0;  END_IF   (* отсчёт длительности звука внешнего    *)
       IF  SVzt<>0 OR SVzt>0  THEN  SVzt:=SVzt-1;  OutSVz1:=1;  ELSE   OutSVz1:=0;  END_IF   (* отсчёт длительности светового сигнала *)
    Это пример рабочего кода под ПЛК160, который сейчас перенесён на ПР205.

    Укажите сколько датчиков, примерный алгоритм, и под какой ПЛК или ПР.
    Это очень просто, поэтому попробую накидать вам вариант.

Страница 36 из 66 ПерваяПервая ... 26343536373846 ... ПоследняяПоследняя

Похожие темы

  1. ПЛК73 (Функциональные кнопки)
    от necro в разделе ПЛК63/73
    Ответов: 8
    Последнее сообщение: 18.05.2022, 10:03
  2. Функциональные блоки
    от ribamuka в разделе СПК2xx (архив)
    Ответов: 4
    Последнее сообщение: 08.04.2018, 15:01
  3. Функциональные блоки насосов в CoDeSys
    от Алексей Ермолаев в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 28.03.2017, 13:50
  4. Функциональные блоки- где искать?
    от Xops в разделе ПЛК1хх
    Ответов: 16
    Последнее сообщение: 01.03.2016, 11:07
  5. СПК функциональные клавиши
    от Lyohin в разделе Трёп (Курилка)
    Ответов: 0
    Последнее сообщение: 30.03.2015, 15:10

Ваши права

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