Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 29

Тема: St программирование

  1. #1

    По умолчанию St программирование

    всем, доброе время суток, при такой записи

    If (a=false) Then
    Elsif (b=false) Then
    Elsif (c=true) Then
    Elsif (d=false) Then X:=avaria;
    End_if;

    компилятор пишет: введите хотябы одно выражение.

    что это значит и если есть возможность выложите примеры программ на St, буду очень признателен.

    Ps можно ли так записать If A=o B=0 C=1 D=0 Then X:=avaria
    Elsif A=1 B=1 C=1 D=0 Then X:=avaria
    Elsif A=1 B=0 Then X:=vihod
    Elsif A=0 B=1 Then X:=vhod ..?

  2. #2

    По умолчанию

    между Then
    Elsif

    должен быть оператор, хотя бы ";"

    P.S. Для комплексных условий: If (A=0)&&(B=0)&&(C=1)&&(D=0) Then

  3. #3

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    между Then
    If (A=0)&&(B=0)&&(C=1)&&(D=0) Then

    Теперь выглядит так

    VAR_OUTPUT
    X: WORD;

    VAR
    AVARIA: WORD;
    VIESD: WORD;

    тело

    IF(A=0)&&(B=0)&&(C=1)&&(D=0) THEN X:=AVARIA;
    ELSIF (A=1)&&(B=O) THEN X:=VIESD;
    END_IF

    ошибки: 1.Должно быть Then перд &..?
    2.Нельзя использовать константу как выход..?

  4. #4
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Нет операнда&-есть AND
    Вместо a=false - корректнее писать NOT a

  5. #5

    По умолчанию

    по поводу второй ошибки, как мне взависимости от условия передавать ны выход Avaria или Viesd или т.п. (and я не могу ставить, это же логическое и, а мне надо чтобы учитывались состояния каждого входа)..?
    Изображения Изображения
    • Тип файла: gif sig.GIF (5.9 Кб, Просмотров: 56)
    Последний раз редактировалось TouchS; 16.02.2010 в 11:54.

  6. #6

    По умолчанию

    rontrol.x - это на ST и будет выход блока. То есть вы пытаетесь результату записать результат.
    Просто поставьте еще одну переменную.

  7. #7

    По умолчанию

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    rontrol.x - это на ST и будет выход блока. То есть вы пытаетесь результату записать результат.
    Просто поставьте еще одну переменную.
    Спасибо с этим разобрался.

    сейчас программа выглядит так:

    VAR_OUTPUT
    X:WORD;
    END_VAR
    VAR
    AVARIA: WORD;
    VIESD:WORD;
    VESD: WORD;
    END_VAR

    тело

    IF(A=0)AND(B=0)AND (C=1)AND(D=0) THEN X:=AVARIA;
    END_IF
    IF(A=1)AND(B=1)AND (C=1)AND(D=0) THEN X:=AVARIA;
    END_IF
    IF(A=1)AND(B=1)AND (C=0)AND(D=1) THEN X:=AVARIA;
    END_IF
    IF (A=1)AND(B=0) THEN X:=VIESD;
    END_IF
    IF (A=1)AND(B=0) THEN X:=VESD;
    END_IF

    STATUS Глобальная переменная типа WORD, в режиме эмуляции так и остается STATUS т.е. на вых не подаются значения X. На входе в режиме эмуляции вручную меняю значения..?
    Изображения Изображения
    • Тип файла: gif sig.GIF (2.3 Кб, Просмотров: 26)

  8. #8

    По умолчанию

    1. а где объявление входных переменных.
    2. зачем вы присваиваете х значения других переменных?
    выкладывайте всю программу целиком.

  9. #9

    По умолчанию

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    1. а где объявление входных переменных.
    2. зачем вы присваиваете х значения других переменных?
    выкладывайте всю программу целиком.
    1 Входные переменные это состояния входов на ПЛК 0 или 1
    2 программы пока нет целой, я только начинаю осваивать CoDeSys, но есть задача, пока хочу понять принцип, мне надо чтобы в зависимости от состояний входов в БД записывалось авария такая-то или такая-то или то или иное действие выполнено и столько то раз, т.е. для начала как мне получить на выходе блока КОНТРОЛ переменную типа WORD..?

  10. #10

    По умолчанию

    Отладьте сначала блок как программу (как PLC_PRG).
    If ... then
    x:=0;
    end_if;
    if... then
    x:=1;
    end_if;
    ...

    Убедитесь, что блок работает. И уже потом подключайте его в программе, сделав из предыдущей программы ФБ.

Страница 1 из 3 123 ПоследняяПоследняя

Ваши права

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