А Я не могу повторить как у тебя . Выложи фрагмент проекта , в котором это бы проявилось.:confused:
Вид для печати
Я так понимаю это происходит из за макроса аналогово масштабирования вот сравнения Вложение 54452
И кстати только что проверил на пр200 вместо реального датчика завёл на вход макроса константу 7,2, с выхода две переменные int и float на экран пр200. На экране 24 и 25,0 Вложение 54453
Наблюдаем как раз обратное. До преобразования 25, или более , если предположить что не отображается дробная часть (а это не так ,получается ровно25) , после преобразования должно быть 25. а не 24. Это глюк ол ,причем в макросе conv4-20 нет округления, а косяк вылазит после него только.
это не совсем глюк ОЛ, это общая проблема, но разработчики могли бы учесть такое с константами Вложение 54465
как только константы окажутся без приведения к типу округление будет равно 25
Вложение 54466
такое преобразование решит проблему
Вложение 54467
Всем Спасибо! Воспользуюсь примером от capzap.
Cпасибо, разъяснили . Вам ОВЕН должен. Т.е проблема возникает в 6-7 разряде после запятой, иногда в плюс, иногда в минус, когда в минус, то такая ошибка проявляется при преобразовании. Тут очевидно ,что если нельзя устранить саму причину возникновения ошибки в силу объективных причин, то преобразовать из float в int можно например предварительно округлением в 5 разряде после запятой. Ведь при отображении значений float на холсте так и происходит.И это наверное разработчики ОЛ должны исправить, а не пользователи .
Все не так, в пр используется формат вещественных чисел IEEE 754, а отображение ол написано стандартным средствами и там скорее всего float64 или Double, поэтому и идёт расхождение в представлении числа, а ни как не в самой арифметике. И напомню что это частный случай, если разработчики сделают подобные округления повсеместно, то прога будет работать намного медленнее, а что то сделать в конкретной ситуации этим должен заниматься автор проекта
О том и речь, и capzap доходчиво объяснил причину. . В силу специфики предсавления ОЛ держит в "уме" 24,99999 , а показывает на холсте 25.Хотя математически, то истинное число 25 как не считайте. Причем ошибка возникает не всегда . Стало интересно, по быстрому провел небольшой эксперимент например (float)1,2+08 ->(uint)120000008. (float)4,2+08 ->(uint)419999968 . В результате эта ошибка " кочует" дальше по всей цепочке. И возникает она далеко не всегда. И если бы преобразование это учитывало, то было бы все окейно, но это не так.
Пока писал ,не видел этого Вашего сообщения, понятно, что дело не в ошибках арифметики, но эта особенность гипотетически может привести к какам -то ошибкам. А этот "частный случай" еще и засечь нужно, автор вопроса скорей всего случайно обнаружил. А если не обнаружил, то как это сказалось бы на результате? может и никак ,а может и сказалось . В описании ОЛ про это ничего нет. Теперь будем хотя бы знать, спасибо.
В макросе BM_in из менеджера компонентов ошибка - константа (та что подписана - Сдвиг) должна быть 7, а не 8
OL 1.19.268
Windows 7 64
При объявлении переменных в макросе отображение имен переменных в списке переменных не совпадает с реальными, если открыть таблицу перменных.
Вложение 54926
Вложение 54927
Вложение 54928
При сохранении макроса, его закрытии и последующем открытии отображается верно.
В версии 1.19.268.0 не работает синхронизация входов/выходов макросов со схемой (кнопочку нажимал). Создаешь макрос, группируешь входы, а в схеме они перемешаны в хаотичном порядке. Даже удаление макроса из схемы и добавление заново не помогает. Мне вообще не понятно, зачем автоматически менять порядок входов макросов? Я бы понял, если бы можно было поменять вручную на схеме.
1.19.268.0
информация об ошибке:
После запуска симуляции зашёл в менеджер экранов и нажал кнопку окно просмотра
Как побороть такую ошибку? появилась при попытке объявления сетевой переменной на втором слоте RS-485.Вложение 55286
System.InvalidOperationException: Операция является недопустимой из-за текущего состояния объекта.<Ьг/> в
ProgramRelayFBD.ElementNetWriting.BuildToProgram(P rc>gra mCode program, ICompiler compiler, ISynchronizationContext context)<br/> в ProgramRelayFBD.Element.Build(ProgramCode program, ICompiler compiler, ISynchronizationContext context)<br/> в ProgramRelayFBD.DomainLayer.Simulation.SimulateCom pilefSt ate.HandleBuildElement(IBuildingElement builder, ProgramCode program, ICompiler compiler)<br/> в Owen.Compiling.ProgramLinker.CompilingElements(Pro gramC ode program, IEnumerable' 1 elements, CancellationToken cancellationToken)<br/> в Owen.Compiling.ProgramLinker.CompilePrograms(IEnum erab le' 1 programltems, CancellationToken cancellationToken)<br/> в ProgramRelayFBD.DomainLayer.Compilers.BaseCompiler .Comp iling(Generator generator, IEnumerable' 1 programltems, Stream stream, CancellationToken cancellationToken)<br/> в ProgramRelayFBD.DomainLayer.Series200.CompilerSeri es200
.<>c DisplayClass5_0.<CompilingAsync>b_00<br/> в System.Threading.Tasks.Task.InnerInvoke()<br/> в System.Threading.Tasks.Task.ExecuteQ
При попытке открыть меню "Расширения"/"Управление расширениями" лоджик завершает работу без ругательств, молча). Windows 10. Версия лоджика 1.20.272.0
Вложение 55370
System.InvalidOperationException: Операция является недопустимой из-за текущего состояния объекта
Ошибка была получена при копировании экранных строк из другого проекта. Одноимённые переменные почему-то не подтянулись (Переменная: "не выбрана").
Назначил вручную. Ошибка ушла.
Добрый день! На другом ПК не пробовал, так как с данного ПК работаю и хотел воспользоваться мастером тиражирования. Прибор ПР200-24.2.2.0. Пробовал и БЕЗ ОТКРЫТИЯ ПРОЕКТА (просто в запущенной программе) и с тестовой программой (хотел попробовать тиражировать, проекта еще нет), результат один: через 2-3 сек после нажатия на меню "управления расширениями" появляется пустое окно (видимо то, где вбирают расширения) и вылет
Из руководства:
"ПРИМЕЧАНИЕ
Если расширения не устанавливаются, следует проверить открыт ли порт 8084" - это может быть причиной данного поведения или в таком случае программа сообщит об этом а не молчаливый вылет?
Если не получается установить из программы, то я могу скачать плагин с сайта (уточните какая версия плагина нужна) и как его установить? Спасибо!
Добрый день!
Попробуйте сделать следующее:
Закройте OwenLogic, зайдите в папку по пути: C:\ProgramData\Owen\OwenLogic.
Удалите оттуда папку "1.20".
Откройте OwenLogic и повторите действия "расширения-Управление расширениями"
Проверьте, удалось ли установить мастер тиражирования.
Обращаю внимание, что папка "ProgramData" по умолчанию скрыта, необходимо будет настроить отображение скрытых папок.
Также убедитесь, что у пользователя ПК есть полный доступ к папке "OwenLogic". Для этого перейдите в "свойства"-"безопасность". При необходимости настройте полный доступ.
После обновления перестал работать мастер тиражирования, после нажатия "Создать" выдаёт ошибку
1.20.272.0
System.TypeLoadException: Не удалось загрузить тип "Expressions.AdditionalFile" из сборки "Expressions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null".
в ReplicationAddOn.Application.WriteResourcesService .WriteUserProgram(Byte[] frameStream, String fileResources, IMessageStreamOut errorStreamOut)
в ReplicationAddOn.Infrastructure.Adapters.LogicCont extEventHandler.When(BuildProcessCompletedEvent ev)
в CallSite.Target(Closure , CallSite , LogicContextEventHandler , Object )
в System.Dynamic.UpdateDelegates.UpdateAndExecuteVoi d2[T0,T1](CallSite site, T0 arg0, T1 arg1)
в CallSite.Target(Closure , CallSite , LogicContextEventHandler , Object )
в ReplicationAddOn.Infrastructure.Adapters.LogicCont extEventHandler.Handle(Event event)
в CommandProcessor.EventAggregator.<>c__DisplayClass 4_0.<Publish>b__1(IEventHandler item)
в System.Collections.Generic.List`1.ForEach(Action`1 action)
в CommandProcessor.EventAggregator.<>c__DisplayClass 4_0.<Publish>b__0(Object <p0>)
Добрый день. Установил лоджик 1.20.272 и мастер тиражирования на старом нетбуке, временно буду так, но вопрос работы лоджика остается открытым на рабочем ПК.
Осваиваю мастер и хочу уточнить моменты, подскажите пожалуйста:
1) ПР200.2.2 если залить программу БЕЗ файла ключа (из лоджика), затем создать файл с ключом и прошить с помощью мастера, программа запишется если нет файла ключа в ПР200? Или в ПР200 должна быть изначально залита программа с файлом ключа?
2) Файл с ключом может быть загружен в пустой (новый) ПР200.2.2 или для этого программа должна быть изначально без файла ключа?
То есть хотелось бы более четко понимать различные варианты загрузки программы. Спасибо!
1) Программа запишется. В ПР не будет ключа, файл прошивки с ключом при заливке сравнит ключи и не найдет конфликта, т.к. нет ключа в ПР.
2) Файл с ключом можно загрузить в пустой ПР.