Страница 365 из 426 ПерваяПервая ... 265315355363364365366367375415 ... ПоследняяПоследняя
Показано с 3,641 по 3,650 из 4260

Тема: Фичи и баги OWEN Logic

  1. #3641

    По умолчанию

    Цитата Сообщение от Asu$Nick Посмотреть сообщение
    Это только вы , сугубо лично, так думаете , что пытаюсь обвинить.
    Я хочу чтобы Лоджик был лучше. Эта ветка для этого и создана.
    Обнаружил недочет, сообщил. Обвинений ни разу не выдвигал, описал по делу, привел примеры.

    "Сейчас установленные лимиты режут отображение числа на экране , а этого быть не должно." -- Вы с этим тоже так и не согласны?
    Да не лимиты режут, а число отображается как больше чем 65535. Вот что у вас происходит 1 Отображения числа.jpg Отображается младший регистр из 2, так как в Лоджике нет 16 битного WORD (UINT), а только 32 битное UDINT (DWORD)
    Последний раз редактировалось kondor3000; 30.06.2024 в 12:46.

  2. #3642
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,910

    По умолчанию

    Цитата Сообщение от Asu$Nick Посмотреть сообщение
    Это только вы , сугубо лично, так думаете , что пытаюсь обвинить.
    Я хочу чтобы Лоджик был лучше. Эта ветка для этого и создана.
    Обнаружил недочет, сообщил. Обвинений ни разу не выдвигал, описал по делу, привел примеры.

    "Сейчас установленные лимиты режут отображение числа на экране , а этого быть не должно." -- Вы с этим тоже так и не согласны?
    Никто ничего не режет. Сетевая переменная 16 битная, поэтому и на экран выводится только 16 бит

  3. #3643

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Да не лимиты режут, а число отображается как больше чем 65535. Вот что у вас происходит 1 Отображения числа.jpg Отображается младший регистр из 2, так как в Лоджике нет 16 битного WORD (UINT), а только 32 битное UDINT (DWORD)

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Никто ничего не режет. Сетевая переменная 16 битная, поэтому и на экран выводится только 16 бит

    Коллеги, я это все понимаю , но
    1. На экране переменная должна отображаться правильно - Достоверно
    Для этого надо отображать на экране поля всегда в 32 битном виде, тогда все предложенные и вами и мной варианты будут видны корректно.
    Зависимости от ширины переменной , не нужно вообще.

    2. Лимит поля должен отрабатывать не на отображение , а на событие изменения данных.

    3. В идеальном варианте , обработчик программы , должен автоматом обрезать заведомо 16 битное значение до 65535.
    И в примере , когда пишем константу 70000 в одиночный регистр либо вообще не давать грузить такой код, либо динамически делать 70000->65535

    Тоже самое в примере со счетчиком, который сетевая переменная. Он должен досчитать до 65535 и остановится на этом.
    Тогда все везде будет по людски, и никто не ошибется.

  4. #3644

    По умолчанию

    Цитата Сообщение от Asu$Nick Посмотреть сообщение

    Тоже самое в примере со счетчиком, который сетевая переменная. Он должен досчитать до 65535 и остановится на этом.
    Тогда все везде будет по людски, и никто не ошибется.
    На это вам уже ответил выше, никто не должен что-то переделывать, если вы сами делаете ошибки, не ограничивая 16 битную переменную в коде. Или в том же счётчике.

  5. #3645
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    9,438

    По умолчанию

    Цитата Сообщение от Asu$Nick Посмотреть сообщение
    Коллеги, я это все понимаю , но
    1. На экране переменная должна отображаться правильно - Достоверно
    Для этого надо отображать на экране поля всегда в 32 битном виде, тогда все предложенные и вами и мной варианты будут видны корректно.
    Зависимости от ширины переменной , не нужно вообще.

    2. Лимит поля должен отрабатывать не на отображение , а на событие изменения данных.

    3. В идеальном варианте , обработчик программы , должен автоматом обрезать заведомо 16 битное значение до 65535.
    И в примере , когда пишем константу 70000 в одиночный регистр либо вообще не давать грузить такой код, либо динамически делать 70000->65535

    Тоже самое в примере со счетчиком, который сетевая переменная. Он должен досчитать до 65535 и остановится на этом.
    Тогда все везде будет по людски, и никто не ошибется.
    Какое-то очень странное желание, на мой взгляд, в смысле, если счётчик остановится - станет невозможно работать с энкодерами и т. п.
    Я так понимаю, если сделать по-вашему - прибор перестанет работать!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  6. #3646

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    На это вам уже ответил выше, никто не должен что-то переделывать, если вы сами делаете ошибки, не ограничивая 16 битную переменную в коде. Или в том же счётчике.
    Я писал не про вас, а о поведении счетчика "в примере со счетчиком, который сетевая переменная. Он должен досчитать до 65535 и остановится на этом."

    По поводу ошибок.

    Создавая программы в Лоджике , я должен предусмотреть , как программист, все возможные ситуации которые может создать оператор. Чем более профессиональный программист , тем больше
    ситуаций он может просчитать, выставить лимиты, защиты от дурака и блокировки.

    Те же правила существуют и для программистов Лоджика, они на своем уровне занимаются тем же. И если суть проблемы ясна, почему бы не сделать лучше?

  7. #3647

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Какое-то очень странное желание, на мой взгляд, в смысле, если счётчик остановится - станет невозможно работать с энкодерами и т. п.
    Я так понимаю, если сделать по-вашему - прибор перестанет работать!
    А что ему еще делать, если разряды кончились.
    Даже 32 битный кончиться может.
    Как вариант перейти через ноль.
    Зато если перестал считать , я быстро пойму в чем проблема.

  8. #3648
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,910

    По умолчанию

    Цитата Сообщение от Asu$Nick Посмотреть сообщение
    Коллеги, я это все понимаю , но
    1. На экране переменная должна отображаться правильно - Достоверно
    Для этого надо отображать на экране поля всегда в 32 битном виде, тогда все предложенные и вами и мной варианты будут видны корректно.
    Зависимости от ширины переменной , не нужно вообще.
    Зачем отображать в 32 битном виде 16 битную переменную? Хотя, еще раз напишу, скорее всего сетевые переменные в Лоджике остаются 32 битными, но при чтении компилятор отдает только младшие 16 бит.

    Цитата Сообщение от Asu$Nick Посмотреть сообщение
    2. Лимит поля должен отрабатывать не на отображение , а на событие изменения данных.
    Лимит поля ограничивает вводимые с экрана значения. При выходе за предел вводимое число не обрезается, просто не происходит запись

    Цитата Сообщение от Asu$Nick Посмотреть сообщение
    3. В идеальном варианте , обработчик программы , должен автоматом обрезать заведомо 16 битное значение до 65535.
    И в примере , когда пишем константу 70000 в одиночный регистр либо вообще не давать грузить такой код, либо динамически делать 70000->65535
    Тоже самое в примере со счетчиком, который сетевая переменная. Он должен досчитать до 65535 и остановится на этом.
    Тогда все везде будет по людски, и никто не ошибется.
    Так он и обрезает. То что мы может в сетевую переменную записать 32 бита - забейте на это, потому что при чтении мы получим только младшие 16 бит. Считайте старший разряд мусорным.
    Что касается счетчика, то досчитав до 65535, дальше у нас младший разряд обнуляется и начинает считать заново - все как в 16 битной переменной. На старший разряд, опять же, не обращаем внимание

    Что касается "динамически делать 70000->65535". Где вы такое преобразование видели? В Codesys, например преобразование dint_to_int отбрасывает старшие 16 битов, и Лоджик делает то же самое. А ограничивать переменную - то ли до 65535, то ли до 100 - это уже забота программиста
    Последний раз редактировалось Dimensy; 30.06.2024 в 15:16.

  9. #3649
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,910

    По умолчанию

    Цитата Сообщение от Asu$Nick Посмотреть сообщение
    А что ему еще делать, если разряды кончились.
    Даже 32 битный кончиться может.
    Как вариант перейти через ноль.
    Зато если перестал считать , я быстро пойму в чем проблема.
    Смиритесь, в АСУ переполнение не вызывает исключение, а просто осуществляется переход через ноль (по крайней мере, с целыми числами)

  10. #3650

    По умолчанию

    3000.PNG


    То что 16 битная переменная ведет себя как 32х - пойдет.....
    На экране одно число, а в программе другое - пойдет...
    Так и будем пользоваться.
    Последний раз редактировалось Asu$Nick; 30.06.2024 в 17:34.

Страница 365 из 426 ПерваяПервая ... 265315355363364365366367375415 ... ПоследняяПоследняя

Похожие темы

  1. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Среда программирования OWEN Logic
    Ответов: 404
    Последнее сообщение: 25.08.2020, 15:17
  2. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Программируемые реле
    Ответов: 401
    Последнее сообщение: 28.07.2016, 19:46
  3. OWEN Logic 1.2.0.14b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 40
    Последнее сообщение: 21.02.2011, 14:16
  4. OWEN Logic 1.1.0.11b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 58
    Последнее сообщение: 12.10.2010, 20:55

Ваши права

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