Страница 653 из 1043 ПерваяПервая ... 153553603643651652653654655663703753 ... ПоследняяПоследняя
Показано с 6,521 по 6,530 из 10427

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

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

    По умолчанию

    Цитата Сообщение от DIPHENHYDRAMINE Посмотреть сообщение
    Ребята подскажите пж. как в ST это будет??

    Вложение 38892

    Так и будет, только задом на перёд
    Код:
    CLI_GI_0000:= BYTE_TO_WORD(PACK(
    	HMI_DI_80,
    	HMI_DI_81,
    	HMI_DI_82,
    	HMI_DI_83,
    	HMI_DI_84,
    	HMI_DI_85,
    	HMI_DI_86,
    	HMI_DI_87));
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  2. #6522
    Пользователь Аватар для DIPHENHYDRAMINE
    Регистрация
    14.01.2018
    Адрес
    Воскресенск
    Сообщений
    42

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Так и будет, только задом на перёд
    спасибо большое!

  3. #6523
    Пользователь Аватар для DIPHENHYDRAMINE
    Регистрация
    14.01.2018
    Адрес
    Воскресенск
    Сообщений
    42

    По умолчанию

    а так правильно будет?

    Код:
    CLI_GI_0000:= BYTE_TO_WORD(PACK(
     HMI_DI_0080,
     HMI_DI_0081,
     HMI_DI_0082,
     HMI_DI_0083,
     HMI_DI_0084,
     HMI_DI_0085,
     FALSE,
     FALSE));

  4. #6524
    Пользователь Аватар для DIPHENHYDRAMINE
    Регистрация
    14.01.2018
    Адрес
    Воскресенск
    Сообщений
    42

    По умолчанию

    Ребята ну подскажите еще раз пж. как в ST это реализовать??

    Вложение 38901

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

    По умолчанию

    Цитата Сообщение от DIPHENHYDRAMINE Посмотреть сообщение
    Ребята ну подскажите еще раз пж. как в ST это реализовать??

    Вложение 38901
    Я же Вам уже подсказывал, все точно так же, только задом на перёд

    Код:
    TON_01(IN:= Start, PT:=t#10s);
    MU16R_1_D0_006:= SEL(TON_01.Q, 0, 1000);
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  6. #6526

    По умолчанию

    Добрый день. Искал по форумам, но похожих тем не нашёл. Если было - извините.
    В связи с тем, что проекты всё чаще стали попадаться однотипные - решил перейти с LD на ST для оптимизации разработки. Потому как описывать руками по 50+ одинаковых действий для разных входов выходов очень геморно, и решил перейти на циклы.
    Первым делом решил загнать все отдельные переменные в массивы, для удобства. И понял что ни где не описано как реализовывать перебор адресов для цикла. Ну т.е. для массива можно указать порядковый номер как переменную типа INT и потом её просто увеличивать. А как в адрес вставить такую переменную не понятно.

    Вот как пример то, с чем я сейчас работаю - есть массив переменных типа BYTE для Modbus. Они прописаны в настройках ПЛК. И есть массив, куда я хочу их все собрать, что бы не обращаться к каждой переменной отдельно. Всего переменных 120, с %QB6.1.0 до %QB6.120.0, однако указать часть адреса как динамическую переменную не получается.
    Представлял что должно получится что-то вроде этого:

    HMI_Array: ARRAY [0..120] OF BYTE;
    n := INT;
    IF n<= 120 THEN
    HMI_Array[n] := %QB6.[n].0;
    n++;
    ELSE
    n := 0;
    END_IF

    Кто-то сталкивался с такими задачами? В какую сторону смотреть?
    Заранее спасибо

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

    По умолчанию

    Цитата Сообщение от Mr.Space Посмотреть сообщение
    Добрый день. Искал по форумам, но похожих тем не нашёл. Если было - извините.
    В связи с тем, что проекты всё чаще стали попадаться однотипные - решил перейти с LD на ST для оптимизации разработки. Потому как описывать руками по 50+ одинаковых действий для разных входов выходов очень геморно, и решил перейти на циклы.
    Первым делом решил загнать все отдельные переменные в массивы, для удобства. И понял что ни где не описано как реализовывать перебор адресов для цикла. Ну т.е. для массива можно указать порядковый номер как переменную типа INT и потом её просто увеличивать. А как в адрес вставить такую переменную не понятно.

    Вот как пример то, с чем я сейчас работаю - есть массив переменных типа BYTE для Modbus. Они прописаны в настройках ПЛК. И есть массив, куда я хочу их все собрать, что бы не обращаться к каждой переменной отдельно. Всего переменных 120, с %QB6.1.0 до %QB6.120.0, однако указать часть адреса как динамическую переменную не получается.
    Представлял что должно получится что-то вроде этого:

    HMI_Array: ARRAY [0..120] OF BYTE;
    n := INT;
    IF n<= 120 THEN
    HMI_Array[n] := %QB6.[n].0;
    n++;
    ELSE
    n := 0;
    END_IF

    Кто-то сталкивался с такими задачами? В какую сторону смотреть?
    Заранее спасибо
    а просто один массив равно другому сложно поставить?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

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

    По умолчанию

    Можно сделать и без копирования
    При объявлении массива HMI_Array использовать ключевое слово АТ с указанием адрес первого элемента 8bits
    Вложение 38903
    И работать с элементами массива HMI_Array
    Вложение 38904
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #6529

    По умолчанию

    Не знал что так можно объявлять. Спасибо))

  10. #6530

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    а просто один массив равно другому сложно поставить?
    Так тут как раз вопрос как быть, если одна часть это не массив, а просто кучка переменных в каком-то адресном диапазоне.
    Но мне уже ответили, что можно объявить массив указав начало адреса и количество элементов))

Страница 653 из 1043 ПерваяПервая ... 153553603643651652653654655663703753 ... ПоследняяПоследняя

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

Ваши права

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