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

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

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

    По умолчанию

    Цитата Сообщение от 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/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП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
    Адрес
    Минск
    Сообщений
    4,187

    По умолчанию

    Цитата Сообщение от 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/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП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
    Banned
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    Цитата Сообщение от 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

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

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

    По умолчанию

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

  9. #6529

    По умолчанию

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

  10. #6530

    По умолчанию

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

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

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

Ваши права

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