УкраїнськаEnglishmRussian
Вхід/Новий
У темі багато повідомлень

"Нестандартное" применение OpenSCADA


Автор Повідомлення
Повідомлення створено: 06. 12. 2009 [13:20]
almaz
Almaz Karimov
Contributor
Автор теми
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
100% надёжный безошибочный код Вы могли встретить, если хоть раз открывали учебник по какому-нибудь языку программирования.
Знаете программу "Здравствуй мир"? А другие небольшие программы, используемые в учебниках?
А программы, которые приведены в различных сборниках, справочниках, содержащих алгоритмы часто встречающихся задач?

Это всё 100% надёжный безошибочный код, проверенный огромным количеством людей!!! Конечно при условии, что компилятор или интерпретатор языка программирования тоже безошибочен.

Железо и ПО друг от друга абсолютно не зависят. Они просто соединяются вместе для выполнения своей функции. Во всех других случаях железо и ПО должно рассматриваться отдельно.

Совет Вашим электронщикам как определить причину сбоя (железо или ПО?):
Для того, чтобы убедиться в надёжности железа контроллера в него заливается заведомо безошибочная программа, имеющая 100% надёжность, но при этом хорошо нагружающая все компоненты железа и охватывающая все аппаратные функции. Далее просто какое-то длительное время гоняем эту программу. При этом железо можно сунуть в печку, потом в холодильник, механически провибрировать его на разных частотах.
Если железо ненадёжное - будут сбои с заведомо безошибочной программой.

100% надёжное железо возможно только если собрать его по молекулам.icon_biggrin.gif И то на какое-то конечное время.

Кстати, проводилось много сравнительных тестов микроядерной и монолитной архитектур. Микроядро проигрывает монолиту на 5-10% (K=1,05 ... 1,10).
И ради такого небольшого выигрыша теряем особо важное свойство ПО?

[Повідомлення редагувалось 3 раз(ів), останній раз 06.12.2009 в 14:08.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Повідомлення створено: 06. 12. 2009 [16:47]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
almaz wrote:

100% надёжный безошибочный код Вы могли встретить, если хоть раз открывали учебник по какому-нибудь языку программирования.
Знаете программу "Здравствуй мир"? А другие небольшие программы, используемые в учебниках?
А программы, которые приведены в различных сборниках, справочниках, содержащих алгоритмы часто встречающихся задач?

Это я вообще не считаю ПО.

almaz wrote:

Совет Вашим электронщикам как определить причину сбоя (железо или ПО?):
Для того, чтобы убедиться в надёжности железа контроллера в него заливается заведомо безошибочная программа, имеющая 100% надёжность, но при этом хорошо нагружающая все компоненты железа и охватывающая все аппаратные функции. Далее просто какое-то длительное время гоняем эту программу. При этом железо можно сунуть в печку, потом в холодильник, механически провибрировать его на разных частотах.
Если железо ненадёжное - будут сбои с заведомо безошибочной программой.

Глупости Вы говорите про 100% надёжность. Именно такие меры и применяются нами для стрес-тестинга. Однако, как показывает практика, они ни разу не гарантируют абсолютной надёжности. И "боготворимое" оборудование Siemens отказывает в промежутке времени от года до трёх. Не всё конечно, но выборка не нулевая.

А в случае с LP-8781 у него отказывает сетка, то-ли от драйвера то-ли от сочетания оборудования с оным. Причём отказ может произойти в течении недели и даже пробыв в печке дня три!

А вообще, если внимательно посмотрите на спецификации отказоустойчивых серверов, то цифру 100% не увидите ни где. А увидите цифры порядка 99.9 %. 99.99 для кластеров или дублированных систем, а так-же самое большое 99.999 для специализированных высоконадёжных серверов от SGI с Linux на борту.

almaz wrote:

И ради такого небольшого выигрыша теряем особо важное свойство ПО?

Это какое-же? Микроядро волшебным образом повышает качество и стабильность кода драйверов и другого кода подсистем ядра?
Практика этого как раз не подтверждает.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 06. 12. 2009 [19:24]
almaz
Almaz Karimov
Contributor
Автор теми
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
Куски кода из учебников я привёл как образец. Более крупные программы привести в пример невозможно, так как требуется их тщательная проверка.
Доказательство существования безошибочного кода в 1000 строк на с++:
Согласны с тем, что следующая программа из 6 строк безошибочна и 100% надёжна?
#include <iostream>
int main()
{
std::cout << "Hello, world!" << std::endl;
return 0;
}
Теперь копируем 4 строку 994 раза и получаем безошибочный 100% надёжный код размером 1000 строк:
#include <iostream>
int main()
{
std::cout << "Hello, world!" << std::endl;
...
std::cout << "Hello, world!" << std::endl;
return 0;
}


Насчёт таких контроллеров с закрытым кодом я уже говорил ранее (перед последним сообщением Алексея). В них невозможно залить безошибочную программу. И соответственно невозможно определить в чём сбой: в железе или в ПО. Лучше не теряйте в такими контроллерами время.


Знаете такой метод тестирования ПО?
http://ru.wikipedia.org/wiki/%D0%92%D0%BD%D0%B5%D1%81%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B5%D0%B8%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D0%B5%D0%B9
Так вот: монолитная архитектура его провалит обязательно, а микроядерная его пройдёт с высокой вероятностью (соотношение количества кода модулей к количеству всего кода более 99%) хоть и с частичной неработоспособностью (соотношение количества сбойных модулей к общему количеству модулей).
Это при жёсткой 100% неполадке какого-то модуля. В случае непреднамеренной неполадки которая проявляется, допустим, раз в год модуль просто перезапустится и продолжит нормально функционировать.
А, если обеспечить безошибочность ядра, размер кода которого невелик, то получим очень качественную программу.


PS И проведите, наконец, мысленно чёткую границу между "железом" и ПО. Если этого не сделать множество задач так и останутся нерешёнными.

[Повідомлення редагувалось 12 раз(ів), останній раз 06.12.2009 в 20:55.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Повідомлення створено: 06. 12. 2009 [21:00]
Aleksey
Aleksey Popkov
Contributor
Зареєстрован(а) с: 31.07.2008
Повідомлення: 326
ПО инженеры не проливали, есть пример частотника, который фирменный, не на коленке сделанный, ABB. Так вот я про него в своем посту и писал. Так вот то ПО и валится, не часто, но для промышленного применения весьма важно. Вот еще 1-н пример. Дома инет, полгода нормально работало, потом 2-ва месяца никто ничего сделать не мог, суппорт моего провайдера у меня дома почти поселились, все классно вроде. Линию тестить, перекрассировку делали, а результату не было ни какого, даже после смены 3-х модем разных производителей. Все решилось в одночастье, по случаю перепал промышленный модем, таких в продаже даже нету. Инет с тех пор работает стабильней не куда, но 99.9 % (о которых говорил Роман) совокупности Soft + Hard 1-н раз в 2-ва месяца просто падает скорость, при этом плановый переконнект каждый день делает провайдер не решает эту проблему. Решается полным перезапуском модема, т.е. выключаем и потом запускаем. 100% -ми тут и не пахнет. А софт вроде "hello world" это действительно не софт, а проверка как работает printf )))))
Другой пример postfix многим известен как довольно шустрый MTA, но и там бывают перекосы, у меня на сервере одном без выключения проработал без остановки и при не полохой нагрузке почти 1 год, потом просто рухнуло, поднят старом ни к чему не приводило, пришлось reboot сделать. Что это был, железо или софт или все вместе, не определить, но факт остается фактом.

[Повідомлення редагувалось 1 раз(ів), останній раз 06.12.2009 в 21:06.]
Повідомлення створено: 06. 12. 2009 [21:50]
almaz
Almaz Karimov
Contributor
Автор теми
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
Вы же отрицали само существование безошибочного ПО. Я привёл доказательство обратного. Безошибочное ПО существует и его возможно разработать для любого железа. А вот совокупности железа и ПО не существует (материя и информация). Информация только отражается на материальном носителе (ну и это отражение переносится/дублируется/видоизменяется с одного носителя на другой), а взаимодействие происходит между материей и материей. Информация с материей не взаимодействует, она материю формирует и видоизменяет во времени. Поэтому могут быть совокупности (объединения) только информация-информация и материя-материя.

to Alexsey:
Частотник отправьте производителю - они чётко определят в чём неполадка: железо или ПО (для них то ПО свободное и открытое, наверняка есть и тестовое-безошибочное). И наладят. Перед отправкой, конечно, можно попробовать обжать все доступные контакты и ещё раз проверить (от вибраций контакты становятся ненадёжными).

А с инетом замените сплиттер и всё будет нормально. Если не поможет, значит проводки Вашей линии шьют где-то друг на друга, на провода чужой линии или на землю. Так же возможен скользящий (ненадёжный) контакт в линии. Осциллограф и мегометр Вам в помощь.
Неисправности надо устранять в корне, а не приспосабливаться к ним.

3 неполадку я не понял. Перед перезагрузкой что говорите делали?

Приведённая выше программа в 1000 строк не проста. Это безошибочный кратковременный неполный стресс-тест для процессора, памяти, видеокарты, ядра ОС, компилятора, различных драйверов и много чего ещё. Не затрагивает разве-что некоторые периферийные компоненты и программные модули.

PS И хватит уже неисправное (ненадёжное) состояние некоторых единиц железа приобщать к состоянию (возможному состоянию) всего железа. Соответственно, неисправное (ненадёжное) состояние некоторых единиц ПО - ко всему множеству ПО (возможному ПО).

[Повідомлення редагувалось 20 раз(ів), останній раз 07.12.2009 в 09:06.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Повідомлення створено: 07. 12. 2009 [09:38]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
Выши утверждения про безошибочный код программ говорят только о том, что с теорией алгоритмов Вы не знакомы. То что Вы приводили в качестве примера оного в теории называется семантическим представлением алгоритма программы. А программа это алгоритм в связке с исполнительной машиной. Так вот в теории программы без этой самой машины никогда не рассматриваются. А из аксиомы, что нет абсолютного железа уже следует, что нет абсолютно надёжных программ. И отделять программу от железа нельзя потому как даже теория этого не делает. Теорема доказана.

Кроме того, любая программа, и даже helloworld, использует библиотечные функции. И не понимание этого привело к вашему утверждению про микроядерность OpenSCADA. Откройте для себя утилиту "ldd openscada". Так вот простой printf тянет за собой гроздь кода на порядка 10000 строк, включая и соответствующие системные функции ядра, а следовательно из теории качественного кода там уже порядка 10 возможных ошибок.

И в завершение, для закрытия дискусии, один маленький пример из моей собственной практики. Имеем текст программы:
int w1 = 62915, w2 = 16456;
ui32 vl = ((w2&0xffff)<<16) | w1&0xffff;
printf("TEST 00: %f\n",*(float*)&vl);

Из вашей теории, да и я так думал ранее, это безошибочный код. Да и строк тут всего три. И это так, до тех пор пока рассуждаешь абстракциями, что у всех x86_32, Linux и компилятор gcc (тоесть машина исполения алгоритма). Но как только мы смещаемся в x86_64, то получаем в этом коде ошибку. И эта ошибка заключается в том, что на x86_64 оптимизатор gcc (опция -O2) считает две первых строки идентичными и выкидует одну из них. А теперь если эту мысль развить на разные компиляторы, ОС, железо разных архитектур то ни о каком абсолютизме говорить нельзя.

P.S. Включайтесь более глыбоко в разработку OpenSCADA и Вы вскоре перестанете выражаться абсолютизмами. icon_smile.gif

Learn, learn and learn better than work, work and work.
Повідомлення створено: 07. 12. 2009 [10:26]
almaz
Almaz Karimov
Contributor
Автор теми
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
Как раз и собираюсь глубоко включиться в разработку OpenSCADA, а также программ от которых работа OpenSCADA зависит. Но для этого мне нужно немного разгрузиться от повседневных задач, как раз связанных с некачественной работой оборудования и программного обеспечения. Даже если сбоев на данный момент нет, возможность их появления в любой момент мне не даёт ни о чём другом думать. Один шаг уже сделан (автоматизация одного объекта на OpenSCADA). Обучены люди. Дальше - больше.
Текущее качество OpenSCADA меня даже очень устраивает (3 месяца бесперебойной работы). Для обеспечения этого также было подобрано недорогое и качественное оборудование и выполнен качественный монтаж.
И, соответственно, собираюсь войти в разработку очень хорошо теоретически подкованным.

Приведённый Вами код действительно безошибочен. А ошибка компилятора не является ошибкой данного кода. Соответственно надо устранять действительную ошибку, а не приспосабливаться к ней. Но на практике это не получается, так как не хватает ресурса. Нужна команда, тогда подобные ошибки можно будет устранять в корне.

А что думаете по поводу метода тестирования ПО, приведённого мной выше?

PS По поводу теорий очень ёмко отвечу чуть попозже.

[Повідомлення редагувалось 2 раз(ів), останній раз 07.12.2009 в 10:36.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Повідомлення створено: 07. 12. 2009 [10:56]
Aleksey
Aleksey Popkov
Contributor
Зареєстрован(а) с: 31.07.2008
Повідомлення: 326
almaz wrote:

to Alexsey:
Частотник отправьте производителю - они чётко определят в чём неполадка: железо или ПО (для них то ПО свободное и открытое, наверняка есть и тестовое-безошибочное). И наладят. Перед отправкой, конечно, можно попробовать обжать все доступные контакты и ещё раз проверить (от вибраций контакты становятся ненадёжными).

Прибор сбоил в лабораторныхз условиях при стрес тесте, без вибраций.
А производители очень интересно отреагировали, да мы знаем, ну вот так и по другому ни как. И за багу в девайсе это не посчитали.



А с инетом замените сплиттер и всё будет нормально. Если не поможет, значит проводки Вашей линии шьют где-то друг на друга, на провода чужой линии или на землю. Так же возможен скользящий (ненадёжный) контакт в линии. Осциллограф и мегометр Вам в помощь.
Неисправности надо устранять в корне, а не приспосабливаться к ним.

Сплитера у меня в линии нет, я купил еще 1-н телефонный номер специально для инета и вневедомственной охраны. Инет подключил, а охрану еще пока нет. Кучу разных приборов притаскивали техники из тех поддержки, 3-е разных техников, и мерили линию. 2-ва месяца только руками разводили (90% пример рабюоты оборудования). Промышленный модем исправил сутиацию icon_biggrin.gif

[Повідомлення редагувалось 1 раз(ів), останній раз 07.12.2009 в 10:56.]
Повідомлення створено: 07. 12. 2009 [12:31]
almaz
Almaz Karimov
Contributor
Автор теми
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
В соответствии с полученным опытом делайте выводы о производителе частотника и качестве Ваших линий связи.

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Повідомлення створено: 07. 12. 2009 [13:32]
Aleksey
Aleksey Popkov
Contributor
Зареєстрован(а) с: 31.07.2008
Повідомлення: 326
almaz wrote:

В соответствии с полученным опытом делайте выводы о производителе частотника и качестве Ваших линий связи.

Качество линий в Ростове оставляет желать конечно лучьшего, но даже и не на новых работает сностно, а у меня, кстати, новая линия.
Производитель частотника, от него много конечно зависит, но встречается и на Delta, ABB и на многих других тоже. Они все используют один и тотже набор чипов и т.д. Схематично конечно возможны отличаи, этого я не знаю. Но наблюдается на большинстве.



5783