Данный баг был исправлен в самом начале выпуска данной версии.
Вид для печати
если открыть два раза(два проекта) овен лоджик в разных окнах то появляемся надпись доступ к порту закрыт ,хотя по очереди порт переключается между двух проектов.После того как закрыть один проект ,порт в распоряжении оставшегося проекта ,но надпись о доступе к порту не убирается крестиком ,хотя проект пишется в ПР
а что такое "Заданное приведение является недопустимым"?
в 18ой версии запрещено "WriteToFB"?
(все мои примеры в этой теме и последняя в теме Умный отопитель не работают в эмуляторе 18ой версии ОвенЛоджика)
нашел проблему - видимо в новой версии поправили SHR, и теперь его выход нельзя напрямую цеплять к "WriteToFB"
(как я писал выше - он в 17 версии работает как SAR (арифметический сдвиг), а в 18ой, как SHR, но тип у него на выходе странный....)
а если между ними воткнуть OR или ADD - всё работает ))
PS причём даже SEL не помогает ("пустой", т.е. на входе только средний контакт)
открыл проекты сделанные в старых программах, из темы "примеры реализации", а там наименование блоков не "AND", "OR" или "NOT", а "&" и "1" - это так и надо?
я понимаю что они так "по правильному" называются, но всё равно странно....
и для начинающих удобнее "новое" обозначение...
Если б не сказали ,то и не заметил бы ,наверно потому ,что не начинающий ,по ГОСТ 2.743-91 обозначения "&","1"... являются правильными .Но следуя рекомендациям МЭК по языкам программирования , "AND".... .Вот и получается кто занимался схемотехникой ему привычней гост , а кто программированием тому МЭК.:) ;)
может сделать галочку, в настройках интерфейса - "показывать блоки по ГОСТ" ))
вот ещё какой у меня вопрос...
судя по доке ПР110 оперирует целыми беззаковыми числам (тип DWord)
Цитата:
Сложение (ADD)
Результатом выполнения операции на выходе является сумма входных значений.
Если при выполнении операции значение числа получается больше 4294967295 (32 бита),
выходящие за разрядность 32 бита биты отсекаются.
Цитата:
Вычитание (SUB)
Результатом выполнения операции на выходе является разность входных значений.
Если при выполнении операции на первом входе (V1) значение числа меньше второго (V2),
результатом будет число, полученное сложением младшего числа плюс 0x100000000 минус значение числа большего:
V1 + 0x100000000 – V2 = Q
а судя по эмулятору, мы имеем дело с целыми числами со знаком (тип DoubleInteger)Цитата:
Умножение (MUL)
Результатом выполнения операции на выходе является перемножение входных значений.
Если при выполнении операции значение числа получается больше 4294967295 (32 бита),
выходящие за разрядность 32 бита биты отсекаются.
так как же оно на самом деле?
в частности, что будет если на реальном реле сравнить "not(0)" и "0"?
(см. примеры на картинке)
Скачал новую версию с симулятором.
Странная вещь - дома на компе с Windows 7 всё работает нормально.
А на работе на 2 компа поставил с Windows XP - режим эмуляции включается, но, почему-то не меняется состояние входов при нажатии на них... Соответственно и выходов.
Нажимаю кнопку > режим симулятора, затем "запуск симулятора в режиме реального времени". Щёлкаю по входу - появляется обрамляющая красная рамка,но вход не меняет состояние на лог "1"...
а время тикает? (внизу, ближе к правому краю)
Всё получилось после повторного скачивания Owen Logic.
Спасибо всем за отзывы на вопрос.
В симуляторе Вы видите формат отображения числа в виде знакового. Т.е. число (если его рассматривать как массив байт) одно и то же, но вид представления его может меняться. В будущем планируется предоставить пользователю формат отображения числа в симуляторе (знаковое или беззнаковое целочисленное в десятичном формате, в шестнадцатиричном формате).
На вопрос что будет в реальности на реле, то на данный момент проверить на приборе не могу... Могу сказать лишь то, что прибор - это на самом деле "тупой" набор элементов, которые он знает как они функционируют, а вся работы схемы, связи между элементами, оптимизация работы схемы накладывается на программу верхнего уровня.
Вы видимо не совсем поняли вопрос.... интересует не формат отображения, а как оно на самом деле!
уточню что я имею ввиду...
из опыта программирования на ассемблере, есть не оч. много команд для которых важно знаковый операнд или нет
1) в примере выше (на картинке) я показал пример - что будет если сравнить 0xFFFFFFFF и 0х00000000?
если операнд знаковый, то ноль больше, а если без знака - то ноль меньше...
если судить по доке (там упоминаются числа 4 миллиарда) - ноль будет меньше, а симулятор ведёт сябя наоборот!!!.
2) так же не понятно как поведёт себя "универсальный счётчик" если его попросит вычесть единицу из нуля? (вопрос именно поведения реального реле)
в доке есть ограничение 0..65535 - а эмуляторе это отследили?
PS хотя тут, если прямо указанно в доке, то значит что поведение при выходе за рамки диапазона "не документировано и может меняться от версии к версии прибора" (опять же из опыта)
3) третий момент - это умножение и деление - результат его оч. сильно зависит от знака!
(и тут опять, то что описано в документации не совпадает с поведением симулятора!!!)
---------------------------------
PS цель моего поста - обратить внимание разработчика эмулятора на моменты, на которые с первого раза не обращаешь...
(тот же SHR, например, который поправили...)
НО я обратил.... т.к. я стал использовать элемент "GT" ("в умном отопителе")
и задался вопросом - что будет если где-то, случайно, у меня будет -1?
решил "проблему" следующим образом - просто прибавил ко всем значениям 16
и соответственно сдвинул диапазон значений с 0..15 на 16..31, и в случае выхода из диапазона значений, все элементы схемы остаются штатных, предсказуемых режимах
(хотел вставить слово "документированных", но на данный момент получается, что дока и практика (симулятор) разнятся :( )
булевые значения
логический "0" (False) = [00] [00] [00] [00];
логическая "1" (True) = [00] [00] [00] [01];
Целочисленные значения
0 = [00] [00] [00] [00];
1 = [00] [00] [00] [01];
-1= [FF] [FF] [FF] [FF];
-2,1Е9(самое большое отрицательное значение)
(далее "M-")= [80] [00] [00] [00];
+2,1Е9(самое большое положительное значение)
(далее "М+")= [7F] [FF] [FF] [FF];
соответственно (М-)-1=(М+)
(М+)+1=(М-)
сравнение(в приборе) (М-)>(М+)=Истина (идет сравнение беззнаковых переменных)
-1 (сдвиг вправо логический) = (М+)
[FF] [FF] [FF] [F]>>1=[7F] [FF] [FF] [FF];
Евгений, всё что Вы описали (кроме процитированного ниже), мне понятно, т.к я кодил на ассемблере и эти моменты во всех доках подробно разбираются.
а вот из этого следует, что все отрицательные числа в симуляторе - фикция (обман)!
PS вы не уточнили про умножение и деление, если и они делаются без знака - то тем более, получается что в реле нет никаких отрицательных чисел в принципе!!!!!
Сообщение не полное, согласен. Эти блоки я обязательно проверю и напишу, что там происходит.
P.S.
Посетители форума имеют разную степень подготовки, поэтому я старался написать наиболее понятно и просто.
Я Вам уже сказал, что Вы правы насчет GT и в принципе всех остальных ФБ. Суть проблемы в том, что симулятор в некоторых симулятор работает с знаковыми числами. Я понимаю, что Вы кодили на ассемблере и не раз с этим сталкивались. В симуляторе я упустил момент разницы таких операций как сравнение со знаковыми и беззнакомыми числами. И уже сообщил что работы над этим ведутся. Насчет фикции или как вы сказали ОБМАНа в симуляторе, то это просто формат представления данных, о которых я уже упоминал на форуме.
я никого не хотел обидеть, или как-то задеть... :)
главное что меня услышали, поняли и работы по данному казусу ведутся... :cool:
всем большое спасибо! пошёл дальше изучать азы схемотехники ;)
В приборе и нет отрицательных чисел. В симуляторе был введен формат отображения через знаковые числа для удобства... Чтобы к примеру вместо большущего значения выводилось меньшее по количеству отрицательное число. Например взять число -1, в случае беззнакового формата это будет длиннющее число 4294967295. Как я уже говорил выше в будущем возможно будет функционал для выбора пользователем формата отображения значений.
Реализовал в программе 3 формата отображения значений в симуляторе: знаковое, беззнаковое и шестнадцатиричный формат числа. Исправил реализацию таких элементов как MUL, DIV, MOD и других, в которых наблюдались отличия от прибора.
Напишу про ещё одну "неудобность"
1) если открыть проект
2) сделать изменения в нескольких макросах.... (для "проведения опытов" в эмуляторе)
3) а потом захотеть закрыть без сохранения....
4) то программа будет спрашивать "вы точно не хотите ничего сохранить?" столько раз сколько было отредактировано макросов, +1 в основном окне....
------------------
ещё вспомнил....
в доке есть инфа, что если сделать незначительные изменения в макросе, то его менять в основной программе не надо
у меня не получилось этого добиться....
всегда элемент макроса "краснел", с требованием пересоздать его...
мож я что-то не до понимаю?
----------------
ну и на последок.....
после удаления макроса в библиотеке макросов, он (макрос) ещё долго маячит в "списке вкладок"
(маячит вкладка с макросом)
мож стоит удалять её сразу? а то приходится перезаходить в проект, шоб не мешалось лишнее...
PS спасибо разработчикам за интересную "игрушку" ;)
Опять странности с OWEN LOGIC.
На 2х компьютерах симулятор заработал. На 1м из них установлена максимальная Windows7, на втором Windows XP SP3.
На 2х других - не запускается. На этих компах также установлена Windows XP SP3. При запуске симулятора, часы работы симулятора внизу экрана не ходят.
CoDeSys и другие программы работают без проблем.
Не пойму, в чём дело....
Вопрос к разработчикам .Есть макросы внутри которых используются константы .хорошо бы иметь возможность использовать в одном проекте несколько одинаковых макросов но с разными константами внутри.Можно ли такое сделать в перспективе .
Речь идем о макросах -дешифратор уставок ,ПЗУ,и.т.д.Ведь порядковый номер у них разный .То есть в библиотеке макрос хранится с одними константами ,а в проекте используются несколько и с разными константами ,как ФБ .
В схеме от AI! кодовый замок интересный эффект- нет связи (сдвинул элемент для наглядности)
видел сей глюк ))
просто удалил повисший в воздухе "обрубок" и пересоздал соединение :)