Страница 32 из 1052 ПерваяПервая ... 22303132333442821325321032 ... ПоследняяПоследняя
Показано с 311 по 320 из 10512

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

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

    По умолчанию

    Motor3:BOOL := 2;
    Вы присваиваете булевой переменной двойку, а она (переменная) может иметь два состояния, с единицей и нулем еще как то можно, но что Вы двойкой получите, задумайтесь
    Можете написать структуру с вашими моторами размером с Ваш MDVV, объявить её глобально, а затем использовать команду SysMemCpy(ADR(MDVV),ADR(STRU),2), а в программе использовать STRU.красивое_имя_мотора := что_то_там_булевое

  2. #312

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Вы присваиваете булевой переменной двойку, а она (переменная) может иметь два состояния, с единицей и нулем еще как то можно, но что Вы двойкой получите, задумайтесь
    Упс. Невнимательность. Скопировал выше и не изменил тип данных. Но если все же правильно объявить (SINT), то данный вариант имеет право на жизнь?
    Можете написать структуру с вашими моторами размером с Ваш MDVV, объявить её глобально, а затем использовать команду SysMemCpy(ADR(MDVV),ADR(STRU),2), а в программе использовать STRU.красивое_имя_мотора := что_то_там_булевое
    C памятью и структурами еще только разбираюсь. Т.е. правильнее будет воспользоваться структурами?
    Я понимаю, что мой проект занимает всего 1% данных и пока на скорость исполнения выбор метода не сильно повлияет, но хочется для себя уяснить как более изящно написать код, без лишнего Г$%ноКода.
    Спасибо.

  3. #313

    По умолчанию

    У меня аналогично реализован обмен с панелью, есть регистр HMI_Data. И далее я каждый его бит присваиваю другим битовым переменным.
    Inputs_G1:=HMI_Data.0;
    Inputs_G2:=HMI_Data.1;
    Inputs_G3:=HMI_Data.2;
    Inputs_G1:=HMI_Data.3;
    Но смущает, что при каждом цикле будут тупо присваиваться значения...

  4. #314

    По умолчанию

    Уважаемый capzap попробовал использовать структуру, не получилось. Нужна помощь
    (*Создал структуру MV110DN*)
    TYPE MV110DN
    STRUCT
    Motor0: BOOL ;
    Motor1: BOOL ;
    -------//------------
    Motor31: BOOL ;
    END_STRUCT
    END_TYPE

    (*Объявил*)
    VAR_GLOBAL
    MDVV:MV110DN;
    END_VAR
    (*Копирую из MV110_32DN в MDVV - 4 байта (DWORD)*)
    SysMemCpy(ADR(MDVV),ADR(MV110_32DN),4);

    (* Запускаю исполнение *)
    (* Изменяю данные в MV110_32DN, они копируются почему то в mdvv.Motor0 *)
    (* и при значении выше 7 (т.к. bool занимает byte без прямой адресации, естественно выдает ошибку INVALID:16#*)
    mdvv.Motor0;
    mdvv.Motor1;
    mdvv.Motor2;
    mdvv.Motor3;

    В чем моя ошибка?

  5. #315

    По умолчанию

    А можно просто взять библиотеку Util.lib в которой есть блоки Pack и Unpack...

  6. #316

    По умолчанию

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    А можно просто взять библиотеку Util.lib в которой есть блоки Pack и Unpack...
    А смысл, тем более в ST? Я то же самое действие делаю присваиванием.

  7. #317

    По умолчанию

    А по опыту, Вы как именуете/используете переменные? Присваиванием или по типу MDVV.0, MDVV.1?
    Структурой в принципе удобно, в плане того, что при вводе точки после названия, CodeSys сам предлагает выбор элементов структуры. Только вот что-то не получается...

  8. #318

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    SysMemCpy в эмуляторе неработает
    Я в ПЛК сразу зашиваю. Как у Вас сделал, в Value значение копируется. Только вот как сделать так как на картинке Box и значения bitacces я не понял.

  9. #319

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    там где вы читали про глобальные константы, вторым примером должно идти использование директив
    Имеется ввиду директива Pragma? Все испробовал, так и не понял как ею воспользоваться
    Только добился:
    "Неизвестная директива (pragma) '<имя>' проигнорирована!"
    Данная директива ‘pragma’ не поддерживается компилятором. См. "Директивы компилятора".

    Скажите пожалуйста, в какую сторону рыть.

  10. #320
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,268

    По умолчанию

    Почему не работает ?
    ЗЫ
    Остальные моторы кончилиcь

Страница 32 из 1052 ПерваяПервая ... 22303132333442821325321032 ... ПоследняяПоследняя

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

Ваши права

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