This is topic FBD блок SIGN in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.
FBD блок SIGN. В справке сказано: Если INP = 0, то SN+ = SN- = 0, а на самом деле при INP = 0 имеем SN+ = 1, а SN- = 0.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Спасибо. Поправим в документации.
Posted by Avgorr (Участник № / Member № 2607) on :
Может лучше поправить работу блока SIGN?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Нет. Это ошибка документирования. "Ноль" считается положительным числом.
Posted by ValL (Участник № / Member № 4759) on :
Может и правильно. И ошибку поправить быстрее. А в ТМ5 "ноль" не считался положительным. И работал блок как в описании...
Posted by Romсheg (Участник № / Member № 3792) on :
2AdAstra Technical Support: Согласен с пользователем ValL - со стандартом МЭК на FBD это как согласуется? Вообще-то ноль не является положительным числом, такое математика допускает только для частных случаев (и только по взаимному решению). Даже в языках программирования аналогичная функция имеет три состояния: <0, >0 и =0.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В стандарте МЭК на FBD блок SIGN отсутствует. Хотя в чистой математике знак 0 не определен, в формах представления чисел в программировании любое число имеет знак (это старший бит в представлении числа). 0 относится к положительным числам. Мы считаем, что такая широко распространненая интерпретация никак не нарушает логики вычислений и алгоритмизации анализа. Изменения в работе этого блока не предополагаются.
Posted by Abram Shnider (Участник № / Member № 4534) on :
AdAstra Technical Support, Позвольте с Вами не согласиться. Конечно с точки зрения "форматов представления чисел любое число имеет знак", однако 0 всегда был исключительным случаем, что иногда удобно использовать.
Согласен с Romcheg'ом:
quote:Отправитель / Originally posted by Romсheg: 2AdAstra Technical Support: в языках программирования аналогичная функция имеет три состояния: <0, >0 и =0.
Считаю, что данный FBD блок нуждается в исправлении.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Можно привести конкретный пример задачи, в которой требуется только такая функция блока, и никак иначе?
Posted by Abram Shnider (Участник № / Member № 4534) on :
quote:Отправитель / Originally posted by AdAstra Technical Support: Можно привести конкретный пример задачи, в которой требуется только такая функция блока, и никак иначе?
Может быть и не совсем в тему, но сходу всплывает задача аналогичная "Поиску решения" в MS Excel. Это последовательное приближение.
Ну я думаю, что смысл понятен.
Posted by Romсheg (Участник № / Member № 3792) on :
При таком подходе возникает встречный вопрос - а можно привести пример задачи, для которой Адастра вообще делала этот блок? Можно было с успехом обойтись и тремя сравнениями. А зачем ПИД-регулятор делали? Можно из штатных базовых составить формулу... И так можно продолжать еще долго.
Если исправления блока идут в разрез с мнением разработки или маркетинга - приведите, пожалуйста, их доводы по поводу того, почему они не хотят вносить исправления?
По своим задачам приведу один из примеров, где такой блок бывает полезен: иногда внутри логики алгоритма приходится работать с кодом состояния задвижки, которая имеет три состояния: открывается, закрывается, в покое. Открытие и закрытие - это положительная и отрицательная команда, а вот покой - это ноль. Конечно, обойтись тремя блоками можно, но удобнее одним...
Posted by A40 (Участник № / Member № 3999) on :
Вот сейчас достал древний калькулятор МК-61 Оператор ЗН работает как и положено по метематике -1,0,+1
Posted by Avgorr (Участник № / Member № 2607) on :
quote:Отправитель / Originally posted by Romсheg: По своим задачам приведу один из примеров, где такой блок бывает полезен: иногда внутри логики алгоритма приходится работать с кодом состояния задвижки, которая имеет три состояния: открывается, закрывается, в покое. Открытие и закрытие - это положительная и отрицательная команда, а вот покой - это ноль. Конечно, обойтись тремя блоками можно, но удобнее одним...
Поэтому и возник этот вопрос, но этот блок оказался бесполезен.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Если даже состояние "задвижки" кодируется числами со сменой знака, необходимое преобразование легко осуществляется блоком "Управление по интервалу" (<>F).
Posted by ValL (Участник № / Member № 4759) on :
Мне кажется, этот блок с 2 выходами и создавался с целью определения возможного третьего состояния. И это логично. А иначе почему не предлагаются другие блоки сравнения с двумя выходами? Ведь по сути тогда в варианте "AdAstra" выходы блока SIGN SN+ и SN- являются обычными прямым и инверсным. Значит создали второй вход в качестве бонуса. Но тогда не прослеживается однотипности в подходе. Программист похоже ошибся, и стоило признать по-моему мелкую ошибку, а не продолжать тему. В конце концов не ошибается тот, кто ничего не делает. А иначе действительно, зачем блок SIGN? Его можно заменить блоком "Больше или равно (>=)", когда IN2=0. Я бы голосовал за исправление ошибки в блоке...
Posted by Romсheg (Участник № / Member № 3792) on :
1) Программист всегда прав 2) Если нашли ошибку в ТМ6 - правим документацию и смотрим пункт №1
Posted by Avgorr (Участник № / Member № 2607) on :
И я голосую за исправление ошибки в блоке.
Posted by Abram Shnider (Участник № / Member № 4534) on :
Насколько я понимаю концепцию Trace Mode (поправьте, если ошибаюсь), FBD-блоки в конце-концов представляют собой фрагменты кода ST. А если это так, тогда самым простым решением указанных выше примеров применения блока является использование именно правильно работающего блока SIGN:
quote:Отправитель / Originally posted by A40: Вот сейчас достал древний калькулятор МК-61 Оператор ЗН работает как и положено по метематике -1,0,+1
Думается мне, что блок "управление по интервалу" является несколько более сложным...
Я за внесение исправлений в SIGN, хотя конечно, можно обойтись и тем, что есть...
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Мы будем иметь в виду мнения участников дискуссии.