Страница 958 из 1045 ПерваяПервая ... 4588589089489569579589599609681008 ... ПоследняяПоследняя
Показано с 9,571 по 9,580 из 10441

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

  1. #9571

    По умолчанию

    я пробовал через RETAIN и VAR RETAIN PERSISTENT ну или я может что то не так делаю или не понимаю, но после сброса питания(даже записав перед этим значение) на плк он устанавливает переменную в 0

  2. #9572

    По умолчанию

    PROGRAM PLC_PRG
    VAR_INPUT
    PUSK: BOOL:=TRUE;
    END_VAR
    VAR
    time_ton: TIME:=T#1s;
    TON1: TON;

    result: BOOL;
    fileName: STRING := 'myFile';
    mode: STRING := 'w';
    state: INT:=0;
    in_ton: BOOL;
    cycle: INT;
    OUT_flag: BOOL;
    PULSE: BOOL:=TRUE;
    END_VAR
    VAR RETAIN PERSISTENT
    counter:INT ;
    END_VAR


    IF PUSK=TRUE THEN
    cycle:=counter;
    PUSK:=FALSE;
    END_IF

    CASE state OF
    0: IF PULSE=TRUE THEN

    in_ton:=TRUE;
    state:=10;
    END_IF
    10:
    IF in_ton=TRUE THEN
    cycle:=cycle+1;
    state:=20;
    END_IF
    20:
    TON1(IN:=in_ton, PT:= time_ton, Q=>OUT_flag);
    state:=30;
    30:
    in_ton:=FALSE;
    OUT_flag:=FALSE;
    state:=40;
    40:
    IF PULSE=FALSE THEN
    counter:=cycle;
    ELSE
    state:=0;
    END_IF
    END_CASE
    вот такой тестовый код написал для проверки и пробы

  3. #9573

    По умолчанию

    Цитата Сообщение от kakTyc2000 Посмотреть сообщение
    я пробовал через RETAIN и VAR RETAIN PERSISTENT ну или я может что то не так делаю или не понимаю, но после сброса питания(даже записав перед этим значение) на плк он устанавливает переменную в 0
    Какой у вас ПЛК? Если старый, меняйте аккумулятор.

  4. #9574

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Какой у вас ПЛК? Если старый, меняйте аккумулятор.
    плк160м2 новый, ему максимум пол года, на retain можно делать наработку часов который будет писать в течении года?, f (EEPROM или FRAM) так зависят от аккума? я в том плане что тоже будут сбрасываться из за отключения питания

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

    По умолчанию

    Цитата Сообщение от kakTyc2000 Посмотреть сообщение
    PROGRAM PLC_PRG
    VAR_INPUT
    PUSK: BOOL:=TRUE;
    END_VAR
    VAR
    time_ton: TIME:=T#1s;
    TON1: TON;

    result: BOOL;
    fileName: STRING := 'myFile';
    mode: STRING := 'w';
    state: INT:=0;
    in_ton: BOOL;
    cycle: INT;
    OUT_flag: BOOL;
    PULSE: BOOL:=TRUE;
    END_VAR
    VAR RETAIN PERSISTENT
    counter:INT ;
    END_VAR


    IF PUSK=TRUE THEN
    cycle:=counter;
    PUSK:=FALSE;
    END_IF

    CASE state OF
    0: IF PULSE=TRUE THEN

    in_ton:=TRUE;
    state:=10;
    END_IF
    10:
    IF in_ton=TRUE THEN
    cycle:=cycle+1;
    state:=20;
    END_IF
    20:
    TON1(IN:=in_ton, PT:= time_ton, Q=>OUT_flag);
    state:=30;
    30:
    in_ton:=FALSE;
    OUT_flag:=FALSE;
    state:=40;
    40:
    IF PULSE=FALSE THEN
    counter:=cycle;
    ELSE
    state:=0;
    END_IF
    END_CASE
    вот такой тестовый код написал для проверки и пробы
    Сюда
    40:
    IF PULSE=FALSE THEN
    counter:=cycle;

    ELSE
    state:=0;
    END_IF
    Программа никогда не заходит, т.к. PULSE ВСЕГДА TRUE
    и соответственно
    counter:=cycle; не выполняется
    и counter всегда остается равным 0
    Последний раз редактировалось petera; 12.04.2023 в 11:19.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Сюда
    40:
    IF PULSE=FALSE THEN
    counter:=cycle;

    ELSE
    state:=0;
    END_IF
    Программа никогда не заходит, т.к. PULSE ВСЕГДА TRUE
    и соответственно
    counter:=cycle; не выполняется
    и counter всегда остается равным 0
    Смотри кино:


    ЗЫ.
    Там уже и циклы стали отрицательными
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  7. #9577

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Сюда
    40:
    IF PULSE=FALSE THEN
    counter:=cycle;

    ELSE
    state:=0;
    END_IF
    Программа никогда не заходит, т.к. PULSE ВСЕГДА TRUE
    и соответственно
    counter:=cycle; не выполняется
    и counter всегда остается равным 0
    да, но я подключил кнопку которая изменяет PULSE и он нормально записывает, даже разорвав соединение он хорошо показывает что counter присвоена переменная которая была cycle, я так сделал что бы не записывал каждый цикл и не убить память, а записывал когда я изменю PULSE

  8. #9578

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Смотри кино:


    ЗЫ.
    Там уже и циклы стали отрицательными
    ого, но у меня положительные, хорошо я на всякий случай исправлю у себя, чтобы такого не было

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

    По умолчанию

    Цитата Сообщение от kakTyc2000 Посмотреть сообщение
    да, но я подключил кнопку которая изменяет PULSE и он нормально записывает, даже разорвав соединение он хорошо показывает что counter присвоена переменная которая была cycle, я так сделал что бы не записывал каждый цикл и не убить память, а записывал когда я изменю PULSE
    Из всего этого нужно всего лишь
    Код:
    PROGRAM PLC_PRG
    VAR
    	TON1: TON:=(PT:=T#1s);
    	OUT_flag: BOOL;
    END_VAR
    
    VAR RETAIN
    	cycle: UDINT;
    END_VAR
    
    TON1(IN:=NOT OUT_flag, Q=>OUT_flag );
    cycle:= cycle + BOOL_TO_INT(OUT_flag);
    Память убить нельзя, т.к. RETAIN переменные физически записываются в момент выключения питания
    Последний раз редактировалось petera; 12.04.2023 в 11:49.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  10. #9580

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Смотри кино:


    ЗЫ.
    Там уже и циклы стали отрицательными
    просто вопрос, почему в codyses 2.3 при эмуляции он нормально ведет счет раз в секунду, а при подключённом плк он cycle считает по +10....+30(тут я неопытен и не понимаю)

Страница 958 из 1045 ПерваяПервая ... 4588589089489569579589599609681008 ... ПоследняяПоследняя

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

Ваши права

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