Страница 480 из 716 ПерваяПервая ... 380430470478479480481482490530580 ... ПоследняяПоследняя
Показано с 4,791 по 4,800 из 7153

Тема: CODESYS V3.5. Вопросы и ответы

  1. #4791

  2. #4792

    По умолчанию

    Привет.
    Все мы знаем как при помощи элемента "Список тестов" можно изменить надписи на граф.примитивах с одного языка на другой. Это в CodeSys заложено из коробки.
    Но как в программе поменять значения символьных строк при смене языка системы?
    Например, при английском языке системы строка myString должна быть равна "Eat more of those French buns!", а при украинском эта же строка должна быть равна "З'їж ще цих французьких булок". Мне нужна такая строка (разная в зависимости от языка системы), чтобы выкидывать ее на сервер.
    Конечно, это можно реализовать через код:

    IF VisuElems.CURRENTLANGUAGE = 'eng' THEN
    myString := "Eat more of those French buns!";
    ELSIF VisuElems.CURRENTLANGUAGE = 'ukr' THEN
    myString := "З'їж ще цих французьких булок";
    END_IF

    Но такой подход мне не очень нравится, хотелось чтоб все было именно в таблице "Список текстов". Тогда при добавлении нового языка, всё правилось бы в одном месте кода. Т.е. будет системный подход к добавления новой локализации.

    Суть: Есть ли решение менять значение string в зависимости от выбранного языка системы, но делать это при помощи "Список тестов", а не кодом?
    Спасибо.

  3. #4793

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Привет.
    Все мы знаем как при помощи элемента "Список тестов" можно изменить надписи на граф.примитивах с одного языка на другой. Это в CodeSys заложено из коробки.
    Но как в программе поменять значения символьных строк при смене языка системы?
    Например, при английском языке системы строка myString должна быть равна "Eat more of those French buns!", а при украинском эта же строка должна быть равна "З'їж ще цих французьких булок". Мне нужна такая строка (разная в зависимости от языка системы), чтобы выкидывать ее на сервер.
    Конечно, это можно реализовать через код:

    IF VisuElems.CURRENTLANGUAGE = 'eng' THEN
    myString := "Eat more of those French buns!";
    ELSIF VisuElems.CURRENTLANGUAGE = 'ukr' THEN
    myString := "З'їж ще цих французьких булок";
    END_IF

    Но такой подход мне не очень нравится, хотелось чтоб все было именно в таблице "Список текстов". Тогда при добавлении нового языка, всё правилось бы в одном месте кода. Т.е. будет системный подход к добавления новой локализации.

    Суть: Есть ли решение менять значение string в зависимости от выбранного языка системы, но делать это при помощи "Список тестов", а не кодом?
    Спасибо.
    Возможно помогут функции DynamicTextGetText/DynamicTextGetTextW из библиотеки CmpDynamicText.

  4. #4794

    По умолчанию

    Привет.
    Подскажите, что эта за запись?
    Можно ли так делать? Или не стоит.
    Спасибо.

    Counter_LO AT %MB0: BYTE;
    Counter_HI AT %MB1: BYTE;
    Counter AT %MW0: WORD;

  5. #4795

  6. #4796

    По умолчанию

    Спасибо. Понял.

    Но конкретно в этих трех строчках что происходит?

    Counter_LO AT %MB0: BYTE;
    Counter_HI AT %MB1: BYTE;
    Counter AT %MW0: WORD;


    В работающей программе я вижу, что создали переменную 16 бит. Далее перебирают эти биты. Засовывают их через сеть в прибор ввода-вывода на 16 выходов (двумя кусками по 8 бит).
    Однако в проекте в присоединённом устройстве во вкладке "Соотнесение входов/выходов" нету переменных %MB0 или %MB1. Там соотнесено как %QX0.0 ... %QX0.7 и %QX1.0 ... %QX1.7.
    Вопрос:
    1. Как MB попадает в QX ?
    2. Как MW0 соответствует MB0 и MB1.
    Спасибо.

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

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    с этим надо что то делать, прочтите раздел 5.4 как правильный пример выглядит на 27 странице
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  8. #4798

    По умолчанию

    Т.е. Mx это типа переменная ляжет в память?
    Допустим, MW0 - это word по адресу 0 ?
    А MB15 - это byte по адресу 15 ?

    Тогда MB4 попадет (мапится) частично на MW3 ? Так?

  9. #4799

    По умолчанию

    А как насчет скорости работы программы?
    Применение таких вот %X дает прирост в скорости?

  10. #4800

    По умолчанию

    Да, возможно пока есть глобальные непонятки с работой CoDeSys.
    Все пройдет (с).

Страница 480 из 716 ПерваяПервая ... 380430470478479480481482490530580 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 3271
    Последнее сообщение: Вчера, 12:27
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 826
    Последнее сообщение: 30.04.2024, 20:16
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 245
    Последнее сообщение: 02.10.2022, 11:34
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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