[ New messages · Members · Forum rules · Search · RSS ]
Forum moderator: Alexor  
Forum » Process Simulator » Russian » Обсуждение идей
Обсуждение идей
simatic007Date: Wednesday, 25.04.2012, 01:05 | Message # 1
Private
Group: Users
Messages: 1
Reputation: 0
Status: Offline
Почитал Вашу статейку- интересно. Сам давно ковыряю вопрос тестирование ПТК так чтобы на объекте не было стыдно и долго))
Сразу вопрос: а почему отодвинут вопрос использования Simulink. В последних версиях есть прекрасный инструмет OPC toolbox. Работает на ура, простой как велосипед и открывается просто огромная библиотека инструментов Matlab. Устанавливаем Simatic NET или другую программу позволяющую сосздать OPC сервер работающий с симатиком и все)
Самы сок тестирования мне кажется именно в тестировании самого железа- контроллера с программой, нежели его версию в симуляторе, а идеологически правельнее тестировать шкаф в сборе, например на сборочном участке фирмы. Создаем мат модель объекта и тестируем, если есть панель - можно проверить аварийные сообшения и отработку алгоритмов, тут уже как фантазия разгуляется. Единтсвенный минус - это надо писать программу, изначально закладывая в ней возможность для симулирования. Чтобы алгоритм программы мог работать с областями данных- получаемых по OPC, например записывать все переменные с физичческих входов/выходов в DB.

сЕЙЧАС 'Курю' Real time у симулинка, как раз таки для этих целей, чтобы сама модель объекта в симулинке тоже крутилась в реальном времени.

Если интересно, то можете глянуть на мои студенческие начинания на http://simaticby.wordpress.com ) буду признателен.
 
AlexorDate: Wednesday, 25.04.2012, 12:41 | Message # 2
Major general
Group: Administrators
Messages: 311
Reputation: 1
Status: Offline
По поводу Simulink и Matlab несколько чисто субъективных причин.

Прежде всего, очень маловероятно, что я смогу убедить руководство в покупке программ, а они стоят не дёшево. Очень сложно подсчитать реальную выгоду (в деньгах, времени) от внедрения. Всё, что мы приобретаем (разные toolkit-ы), обоснованно конкретным проектом и задачей.

Опыта работы с Matlab почти не имею, ориентируюсь на то, что прочитал в сети, поэтому поправьте, если ошибаюсь. Для того что бы покрыть те задачи которые я решаю нужно Matlab + Simulink + OPC toolbox. Одним из основных преимуществ моей платформы - вся конфигурация храниться в одном человеко-понятном XML файле. Так как у нас в каждом проекте может быть очень много одинакового оборудования (например 200 задвижек с одинаковой схемой управления), для создания XML используем скрипты. Таким образом, экономится время. Можно ли реализовать такую автоматизацию в Matlab?

Есть ещё один фактор – люди. У нас в компании не все знают и умеют работать с Matlab. Мотивация изучения нового инструмента, хоть и не сравнимо, более гибкого и функционального? Я попробовал создать инструмент максимально простой, заточенный под наши задачи и с минимальным временем её решения. Если попытаться оценить, на сколько получилось, то вроде не плохо. По крайней мере, люди которые сейчас с ним работают, разобрались достаточно быстро.

Наверное, я в первую очередь занимаюсь проблемой симуляции оборудования, чем симуляцией технологического процесса, для которой заточены такие инструменты как Matlab.

Полностью согласен, что лучше тестировать шкаф в сборе со всем софтом, серверами и операторскими станциями. К сожалению, на практике у нас не выходит. Шкафы собираются у нашего субподрядчика. Территориально, он конечно близко к нашему офису, но всё равно не то. Потом конечно, время на подключение к входам и выходам. Встаёт вопрос – что подключать? Если у нас 1500 входных сигналов в тестируемой системе, значит в симуляторе нужна ответная часть с 1500 выходами. Мы не занимаемся поставками – нет такого запаса модулей, почти всё берётся под проект.

Обязательно почитаю ваш сайт. Кстати, если не знали, есть ещё человек, занимающийся этой темой http://sse-automation.com, тоже Matlab.
 
topaDate: Saturday, 29.09.2012, 20:48 | Message # 3
Private
Group: Users
Messages: 1
Reputation: 0
Status: Offline
А проект в OpenSource не планируется перевести?
 
AlexorDate: Saturday, 29.09.2012, 21:59 | Message # 4
Major general
Group: Administrators
Messages: 311
Reputation: 1
Status: Offline
Думал об этом, но пока нет. Использую два платных toolkit-а (OPC клиент и сервер), от них придётся отказаться и найти замену.

А что, хотите предложить помощь или чего-то не хватает в текущем функционале?
 
SergVlDate: Thursday, 15.11.2012, 19:28 | Message # 5
Private
Group: Users
Messages: 4
Reputation: 0
Status: Offline
Есть одна загвоздка в данной реализации обмена с PLCSim - загрузка процессора до 100% при использовании типа данных S_7_Byte, S_7_Word, S_7_DWord. Если задействовать типа данных ProcessImage нагрузка заметнее меньше. А в целом реализация замечательная. Тоже делал нечто подобное на VB, но применительно к конкретным проектам, а здесь просматривается универсальность решения.
 
AlexorDate: Friday, 16.11.2012, 12:14 | Message # 6
Major general
Group: Administrators
Messages: 311
Reputation: 1
Status: Offline
Спасибо за положительный отзыв. Вы правы, идея именно в создании универсального «конструктора». Кстати, начинал тоже с VB в связке с PLCSim.

По поводу PLCSim и загрузки процессора. К сожалению, в S7ProSim нет событий по изменению данных. Приходится постоянно в цикле опрашивать все переменные. Так-как важна скорость работы, поток, который этим занимается, отдыхает всего 30 мс.

Не совсем понял про ProcessImage. Имели в виду методы ReadOutputImage и WriteInputImage?
 
SergVlDate: Friday, 16.11.2012, 13:31 | Message # 7
Private
Group: Users
Messages: 4
Reputation: 0
Status: Offline
Да, именно использовать метод ReadOutputImage и WriteInputImage. Загрузка процессора в данном случае не заметна. Единственное, необходимо иным способом обрабатывать Items, т.к. массив ReadOutputImage и WriteInputImage состоит из байтов, но это не сложно.
И вопрос - будет ли предусматриваться регулировка задержки цикла запись/чтение? Уж очень сильно загружается процессор, если еще запустить WinCC- совсем беда.
 
AlexorDate: Wednesday, 21.11.2012, 20:58 | Message # 8
Major general
Group: Administrators
Messages: 311
Reputation: 1
Status: Offline
Посмотрю, что можно сделать. К сожалению, свободное время будет только в конце декабря.

Попробуйте запустить WinСС на другой машине. Связь с S7 PLCSim можно сделать через NetToPLCsim. Сам сейчас так работаю.
 
AlexorDate: Tuesday, 18.12.2012, 22:03 | Message # 9
Major general
Group: Administrators
Messages: 311
Reputation: 1
Status: Offline
В новой версии (1.7.4735) добавил регулятор загрузки CPU для S7PLCSim. Все оказалось не так просто, но работает вполне адекватно. Само собой при уменьшении загрузки уменьшается скорость обмена данными.

Попробовал распараллелить чтение/запись в S7PLCSim. По началу, скорость сильно обрадовала, но в результате ждал жестокий облом. На моих тестовых примерах всё работает отлично, а текущий рабочий проект (около 3000 переменных S7PLCSim на 4х ядерном CPU) вылетает с исключением:
Exception from HRESULT: 0xC00000FD
Interop.S7PROSIMLib
Void ReadOutputPoint(Int32, Int32, S7PROSIMLib.PointDataTypeConstants, System.ObjectByRef) at S7PROSIMLib.S7ProSimClass.ReadOutputPoint(Int32 ByteIndex, Int32 BitIndex, PointDataTypeConstants DataType, Object& pData)
Похоже на переполнение стека. Идей как с этим бороться нет.

На праздниках поэкспериментирую с ReadOutputImage и WriteInputImage. Посмотрим, что из этого выйдет.
 
SergVlDate: Tuesday, 05.02.2013, 17:00 | Message # 10
Private
Group: Users
Messages: 4
Reputation: 0
Status: Offline
Хотелось бы видеть в модели объекта Valve возможность использования инверсии сигналов конечного положения привода. В проектах используем НЗ контакты концевиков, ради этого приходиться городить лишнюю логику.
 
AlexorDate: Monday, 11.02.2013, 15:06 | Message # 11
Major general
Group: Administrators
Messages: 311
Reputation: 1
Status: Offline
В следующей версии (V2) собираюсь сделать функцию предварительной обработки переменных (в частности, инверсию bool).
 
denzhigDate: Saturday, 08.03.2014, 14:57 | Message # 12
Lieutenant
Group: Users
Messages: 46
Reputation: 0
Status: Offline
День добрый.

Отличная программа. Есть несколько вопросов:
1. Есть-ли возможность отобразить real-число в виде слайдера? Просто если через аналоговый сенсор - то в RAW-значении можно указывать только целые числа, а в виде списка значений - не очень красиво.
2. Хотелось бы иметь возможность форматировать вывод цифровых значений при визуализации, а то больше 10 цифр после запятой отвлекают внимание.
3. В аналоговом калькуляторе не хватает "еденицы измерения", хотя при конфигурации объекта есть галка "отображать еденицу измерения".
4. И ещё - в визуализации не хватает кнопки без фиксации.

Ещё раз спасибо за программу - то что надо, не сильно наворочено.


Message edited by denzhig - Saturday, 08.03.2014, 20:18
 
AlexorDate: Saturday, 08.03.2014, 21:56 | Message # 13
Major general
Group: Administrators
Messages: 311
Reputation: 1
Status: Offline
Здравствуйте.

1.     Можно использовать Physical-значение в аналоговом сенсоре. Или я не так понял вопрос?
2.     Согласен, добавлю такую возможность в новой версии (V2).
3.     Просто в аналоговом калькуляторе не предусмотрен ввод единиц измерения, а панель (аналоговый
индикатор) использована одна для всех объектов. В новой версии будет
возможность создавать статические текстовые поля (TextLabel) с любым текстом.
4.     Тут есть один момент. Если связь достаточно медленная (например, много переменных S7PLCSim), то большая вероятность, что до адресата нажатие кнопки не дойдёт. То есть,
внутри программы  значение поменяется false->true->false, но гарантировать, что true запишется в симулятор ПЛК нельзя. Но я подумаю над этим вопросом.

Спасибо за отзыв.
 
denzhigDate: Saturday, 08.03.2014, 22:34 | Message # 14
Lieutenant
Group: Users
Messages: 46
Reputation: 0
Status: Offline
Спасибо за оперативный ответ.
Почти получилось перенести модель работы гидротурбины в симулятор, возможно получится уйти от физ.контроллера с моделью.
Кстати в скриптах почему-то неработает преобразование "(double)var0" - пришлось менять на "Convert.ToDouble(var0)".


Message edited by denzhig - Saturday, 08.03.2014, 22:36
 
AlexorDate: Sunday, 09.03.2014, 11:51 | Message # 15
Major general
Group: Administrators
Messages: 311
Reputation: 1
Status: Offline
Да, преобразование "(double)var0" не работает,
если в переменной находится значение любого другого типа кроме Double. Даже
Single. Обычно в С# такое преобразование проходит, возможно, мне нужно включить
какую то опцию при компиляции скрипта.
 
Forum » Process Simulator » Russian » Обсуждение идей
Search: