Страница 837 из 1040 ПерваяПервая ... 337737787827835836837838839847887937 ... ПоследняяПоследняя
Показано с 8,361 по 8,370 из 10399

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

  1. #8361

    По умолчанию

    Пишу программу на языке ST для ПЛК110-24.60.Р-М[М02] в CODESYS V2.3.9.14. Этот мой первый проект на подобном контроллере. До этого всегда писал программы для M221 (TWIDO).
    Подскажите, можно ли в CODOSYS сформировать символ (идентификатор) для отдельного бита слова (%MWi). Чтобы в программе не писать типа "TMP.1:=TRUE", а записывать через идентификатор, например, "Р1:=TRUE;" Где P1 это идентификатор TMP.1

  2. #8362

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    Пишу программу на языке ST для ПЛК110-24.60.Р-М[М02] в CODESYS V2.3.9.14. Этот мой первый проект на подобном контроллере. До этого всегда писал программы для M221 (TWIDO).
    Подскажите, можно ли в CODOSYS сформировать символ (идентификатор) для отдельного бита слова (%MWi). Чтобы в программе не писать типа "TMP.1:=TRUE", а записывать через идентификатор, например, "Р1:=TRUE;" Где P1 это идентификатор TMP.1
    Можно и лучше давать имена всем переменным, в том числе и в конфигурации. Например регистру WORD, даете имя Mask, тогда обращение к битам этой маски будет Mask.0, Mask.1.....Mask.15. И присваивать Mask.0:=TRUE; Mask.1:=FALSE;
    Если вам надо, можете присвоить имя каждому биту, например Mask.0:=Avariya1; Mask.1:=Avariya2; и т. д.
    и уже присваивать Avariya1:=TRUE; Avariya2:=FALSE;
    Последний раз редактировалось kondor3000; 15.01.2022 в 13:23.

  3. #8363
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,066

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    Пишу программу на языке ST для ПЛК110-24.60.Р-М[М02] в CODESYS V2.3.9.14. Этот мой первый проект на подобном контроллере. До этого всегда писал программы для M221 (TWIDO).
    Подскажите, можно ли в CODOSYS сформировать символ (идентификатор) для отдельного бита слова (%MWi). Чтобы в программе не писать типа "TMP.1:=TRUE", а записывать через идентификатор, например, "Р1:=TRUE;" Где P1 это идентификатор TMP.1
    Cамое близкое к описанному вами - см. в п. 10.11 (раздел "Битовая адресация через глобальные константы"):
    http://www.kipshop.ru/CoDeSys/steps/codesys_v23_ru.pdf

  4. #8364

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Можно и лучше давать имена всем переменным, в том числе и в конфигурации. Например регистру WORD, даете имя Mask, тогда обращение к битам этой маски будет Mask.0, Mask.1.....Mask.15. И присваивать Mask.0:=TRUE; Mask.1:=FALSE;
    Если вам надо, можете присвоить имя каждому биту, например Mask.0:=Avariya1; Mask.1:=Avariya2; и т. д.
    и уже присваивать Avariya1:=TRUE; Avariya2:=FALSE;
    Спасибо. но я немного не понял:
    "..., например Mask.0:=Avariya1; Mask.1:=Avariya2; и т. д.
    и уже присваивать Avariya1:=TRUE; Avariya2:=FALSE;"
    Как это работает? А как объявить Avariya1?

    Представьте, я управляю автооператорами в гальванике. У автооператора два движения: вертикальное и горизонтальное. Более того, скорости могут быть разные. Имеется слово %MW1:
    %MW1.0 - FW min скорость;
    %MW1.1 - RV min скорость;
    %MW1.2 - горизонтальная Mах скорость;
    %MW1.3 - UP min скорость;
    %MW1.4 - DOWN min скорость;
    %MW1.5 - вертикальная Max скорость;
    ...
    ...
    и так расписываю до конца слова по двум автооператорам.

    И когда пишешь большую программу, бывает тяжело понять, что означает %MW1.4. А если бы была возможность %MW1.4 поставить в соответствие, например, Down_AO1, то это было бы информативнее.
    Да и сбрасывать сразу 16 бит записью %MW1:=0 быстрее и компактнее.

  5. #8365

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Cамое близкое к описанному вами - см. в п. 10.11 (раздел "Битовая адресация через глобальные константы"):
    http://www.kipshop.ru/CoDeSys/steps/codesys_v23_ru.pdf
    Спасибо, но что-то не нахожу ответ для себя в разделе "Битовая адресация через глобальные константы". Наверно, сказывается, что я новичок в CODESYS.

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

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    Спасибо, но что-то не нахожу ответ для себя в разделе "Битовая адресация через глобальные константы". Наверно, сказывается, что я новичок в CODESYS.
    всё сводится к тому что замените обезличенные .0, .1 и т.д. на TMP.Down_AO и т.п.
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  7. #8367

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    Спасибо. но я немного не понял:
    "..., например Mask.0:=Avariya1; Mask.1:=Avariya2; и т. д.
    и уже присваивать Avariya1:=TRUE; Avariya2:=FALSE;"
    Как это работает? А как объявить Avariya1?


    Да и сбрасывать сразу 16 бит записью %MW1:=0 быстрее и компактнее.
    Да просто объявить
    Avariya1: BOOL;
    Avariya2: BOOL;
    Mask: WORD;
    А вот так выглядит имя Mask в конфигурации( она глобальная) и объявление битов в глобальных переменных 1 Биты маски.jpg
    Последний раз редактировалось kondor3000; 15.01.2022 в 15:12.

  8. #8368

    По умолчанию

    Всем спасибо! Сейчас попробую. Не ожидал, что так быстро на мои вопросы будут отвечать.

  9. #8369

    По умолчанию

    Меня интересуют реальные адреса рабочих слов. У меня в проекте с моей программой будет общаться внешний компьютер через зарезервированные слова. Так я работал с контроллерами M221 (Шнайдер Электрик).
    В чем принципиальная разница:
    А. Объявляю в секции Global Variables MW_77 AT %MW77: INT; и работаю с переменной MW_77. Например, MW_77:=1;
    В. Без объявления работаю %MW77:=1;

  10. #8370

    По умолчанию

    Цитата Сообщение от vsa Посмотреть сообщение
    Меня интересуют реальные адреса рабочих слов. У меня в проекте с моей программой будет общаться внешний компьютер через зарезервированные слова. Так я работал с контроллерами M221 (Шнайдер Электрик).
    В чем принципиальная разница:
    А. Объявляю в секции Global Variables MW_77 AT %MW77: INT; и работаю с переменной MW_77. Например, MW_77:=1;
    В. Без объявления работаю %MW77:=1;
    Я вам выше скрин выложил, по именам обращаться и понятнее и информативнее, %QB12.0.7.0 это и непонятно и не рекомендовано к применению.

    Представьте, вы забыли вписать в начале 2 переменных, вы их добавляете и у вас все переменные проекта меняют адреса. А если переменных больше 1000, вам месяц проект переписывать придётся. А по именам вы как обращались к Mask1, так и будете обращаться.
    Последний раз редактировалось kondor3000; 15.01.2022 в 15:44.

Страница 837 из 1040 ПерваяПервая ... 337737787827835836837838839847887937 ... ПоследняяПоследняя

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

Ваши права

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