Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 22

Тема: Вопросы по языку ST

  1. #11

    По умолчанию

    petera, по Вашему методу, сделал так:
    K1 : INT := 0;
    K2 : INT := 1;
    H1 : INT := 2;
    H2 : INT := 3;

    На попытки прописать вместо номера бита эти константы (типа IF Dout.K1 THEN) выдаёт ошибки "Для битового доступа требуется литерал или символьная целочисленная константа

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

    По умолчанию

    Цитата Сообщение от gs_62 Посмотреть сообщение
    petera, по Вашему методу, сделал так:
    K1 : INT := 0;
    K2 : INT := 1;
    H1 : INT := 2;
    H2 : INT := 3;

    На попытки прописать вместо номера бита эти константы (типа IF Dout.K1 THEN) выдаёт ошибки "Для битового доступа требуется литерал или символьная целочисленная константа
    Нужно ОБЯЗАТЕЛЬНО разрешить замену констант
    Захват-2.png

    ЗЫ.
    Вот с ошибкой
    Захват-1.png

    А так - без ошибок
    Захват-22.png
    Последний раз редактировалось petera; 23.02.2017 в 00:59.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #13

    По умолчанию

    Чудеса какие-то... Я не нашёл в КДС3.5 где эти опции генератора кода. Но после закрытия КДС, и открытия проекта снова, почему-то всё заработало.

    Вообще, у меня ощущение что КДС3.5 - глубоко глючная система.
    Я немного повозился с 2.3, первый же работающий проект для ПЛК110 сделал за 2 дня. Никаких с ним проблем не было. А этот - глюк на глюке

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

    По умолчанию

    Цитата Сообщение от gs_62 Посмотреть сообщение
    Чудеса какие-то... Я не нашёл в КДС3.5 где эти опции генератора кода. Но после закрытия КДС, и открытия проекта снова, почему-то всё заработало.

    Вообще, у меня ощущение что КДС3.5 - глубоко глючная система.
    Я немного повозился с 2.3, первый же работающий проект для ПЛК110 сделал за 2 дня. Никаких с ним проблем не было. А этот - глюк на глюке
    Я в КДС3 не работаю, но...
    Замена констант, я полагаю, задается здесь
    Захват-1.png

    Хотя в справке про необходимость этой опции, в отличии от КДС2, ничего не сказано
    Захват-2.png
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #15

    По умолчанию

    Цитата Сообщение от gs_62 Посмотреть сообщение
    Чудеса какие-то... Я не нашёл в КДС3.5 где эти опции генератора кода.
    Настройка находится в меню: Проект -> Установки проекта -> Опции компиляции (по умолчанию она включена и нет необходимости ее включать).

    project settings.png
    replace constants.png

    Цитата Сообщение от gs_62 Посмотреть сообщение
    Но после закрытия КДС, и открытия проекта снова, почему-то всё заработало.
    Вероятнее всего можно было обойтись и без закрытия проекта выполнив команду меню
    Компиляция -> Очистить все

    clean all.png

    Это действие помогает в случаях, когда CODESYS не смог определить самостоятельно изменение проекта, которое затрагивает весь проект в целом.
    В случаях, когда CODESYS детектирует такие изменения Вы увидите сообщение о том, что вносимое изменение повлечет за собой невозможность "горячего обновления проекта" и CODESYS все сделает сам.

    Цитата Сообщение от gs_62 Посмотреть сообщение
    Вообще, у меня ощущение что КДС3.5 - глубоко глючная система.
    Я немного повозился с 2.3, первый же работающий проект для ПЛК110 сделал за 2 дня. Никаких с ним проблем не было. А этот - глюк на глюке
    CODESYS 3.5 не без проблем, но вряд ли его можно назвать "глубоко глючной системой".
    3S активно совершенствуют как среду разработки так и среду исполнения и каждые пол-года выпускают большое (и раз в месяц малые) обновление, которое увеличивает стабильность работы и решают возникшие проблемы.

    Про глюки пишите, либо посоветуем как обойти, либо будем регистрировать как баг в 3S.


    P.S. Для того, чтобы не натыкаться на "глюки" среды разработки CODESYS 3.5, которые были устранены рекомендую использовать последнюю из доступных версий среды разработки.
    О том, как это делать "правильно" я писал вот в этом сообщении (под спойлером "правильный подход")

  6. #16

    По умолчанию

    Нашёл опцию 'Замена констант'. Она была включена. Видимо глюк был от того что при переходе на новые переменные (я их менял по всему проекту через поиск-замену) выскочило около 400 ошибок, после чего у КДС слегка "снесло крышу".

    По теме. Всё-равно хотелось бы писать только имя бита (без имён переменных с именем бита через точку).
    С модбасовскими каналами у меня так и есть - чистые имена бит, а если надо обработать всё скопом, то обращаюсь к адресу, типа %QW1.

    Я кажется понял о чём намекал 'приборист' - для организации своего регистра флагов - создать в модбасе ненужный кaнaл, сделать его работу по триггеру который никогда не включать, проименовать биты и работать с ними по отдельности и скопом. Но не будет ли тут тормозов?
    Последний раз редактировалось gs_62; 23.02.2017 в 11:49.

  7. #17

    По умолчанию

    Цитата Сообщение от gs_62 Посмотреть сообщение
    По теме. Всё-равно хотелось бы писать только имя бита (без имён переменных с именем бита через точку).
    С модбасовскими каналами у меня так и есть - чистые имена бит, а если надо обработать всё скопом, то обращаюсь к адресу, типа %QW1.

    Я кажется понял о чём намекал 'приборист' - для организации своего регистра флагов - создать в модбасе ненужный кaнaл, сделать его работу по триггеру который никогда не включать, проименовать биты и работать с ними по отдельности и скопом. Но не будет ли тут тормозов?
    Тормозов не должно быть.
    Но этот вариант мне не нравится поскольку каналы modbus не для этого предназначены и тому, кто Ваш проект будет сопровождать Ваше решение будет не очевидно.

    Если уж есть необходимость работать с именованными битами - объявите столько переменных типа BOOL, сколько нужно, а перед выдачей результата - просто пакуйте их в переменную необходимого типа.
    Так Вам и не придется писать имя переменной, и решение будет очевидным и сопровождаемым.

  8. #18

    По умолчанию

    у меня был нестандартный протокол, где приходилось циклом перебирать все биты нескольких байт. Я для этого сделал функцию типа IsClear(Byte,Bit), где внутри функции bit через CASE заменил обычными цифрами. Всё компилировалось и внутри цикла for мог написать такую конструкцию
    ...
    IF IsClear(by,i) THEN
    ...
    По сути обращение к биту через переменную, хотя и смотрится по-индуски. Решения лучше пока не нашел.

  9. #19

    По умолчанию

    Цитата Сообщение от slonegd Посмотреть сообщение
    у меня был нестандартный протокол, где приходилось циклом перебирать все биты нескольких байт. Я для этого сделал функцию типа IsClear(Byte,Bit), где внутри функции bit через CASE заменил обычными цифрами. Всё компилировалось и внутри цикла for мог написать такую конструкцию
    ...
    IF IsClear(by,i) THEN
    ...
    По сути обращение к биту через переменную, хотя и смотрится по-индуски. Решения лучше пока не нашел.
    В библиотеке Util есть функция EXTRACT, которая позволяет получить доступ к биту по его номеру.
    Если я правильно понял - Вы можете ее использовать внутри Вашей функции IsClear вместо CASE'ов.

  10. #20

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Зачем внутри ? Вместо
    Исключительно ради того, чтобы не заменять в готовом проекте все вызовы "IsClear(x, y)" на "NOT EXTRACT (x, y)".

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Вопросы о САУ-У
    от FPavel в разделе Эксплуатация
    Ответов: 7
    Последнее сообщение: 31.05.2022, 20:38
  2. Вопросы о СИ-8
    от Леонов Андрей в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 27.11.2014, 18:00
  3. вопросы по рм1
    от nikita в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 09.02.2010, 17:55
  4. Вопросы по трм-151-01
    от dag1975 в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 17.06.2009, 16:11
  5. Вопросы
    от Мурат в разделе Эксплуатация
    Ответов: 6
    Последнее сообщение: 27.01.2007, 03:24

Ваши права

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