OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 15:50

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Четверг, 16 Ноябрь, 2017 09:16 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Info21 писал(а):
По-моему, проще просто написать, что всё должно делаться на верифицированном компиляторе Оберона-07 ))

Во-первых, я уже написал, что из ПО подошло бы

Во-вторых, эта ветка отвечает на вопрос: Как сделать еще проще, чем Оберон, который as simple as possible, but not simpler? ПО для логики защиты 60880 (например, генерящееся из FBD) еще проще (нет рекурсии, динамической памяти, даже операторы ветвления IF CASE можно исключать), чем Оберон, но: ооочень специфичное применение. Simpler than possible означает узкоспециализированные изделия, которые, кстати, оптимально строить по Оберон-технологии. В автоматизации АЭС это ПО занимает достаточно небольшую по объему, но наиболее важную часть.

В-третьих, это стандарты рабочих групп МЭК, которых, в отличие от нас, не заподозришь в пристрастии к Оберону. Однако, тенденции прослеживаются...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Ноябрь, 2017 12:52 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Так понятней, спасибо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 19 Ноябрь, 2017 10:55 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Что еще важно. Базовое, проектно-независимое ПО должно сертифицироваться по 60880. Но есть проектно-зависимое ПО, например, для алгоритмов защит. Оно разрабатывается сертифицированными средствами проектирования, и код создается автоматически.
Вложение:
cycle880.png
cycle880.png [ 58.87 КБ | Просмотров: 9937 ]

Автоматический код подпадает под требования приложения D.
Цитата:
D.1a Транслятор, редактор связей и загрузчик должны быть тщательно протестированы перед использованием; эта операция рассматривается как очень важная
D.1e Следует установить полную и понятную семантику языка
D.2d Ошибки, способные вызвать исключительные ситуации при выполнении, включают в себя:
- превышение границ массива;
- превышение диапазона величин;
- обращение к неинициализированным переменным;
- невозможность удовлетворить утверждение;
- отбрасывание значащих разрядов числовых величин;
- пропуск параметров неправильного типа.
D.3a Диапазон каждой переменной должен определяться при трансляции.
D.3e Переменные, массивы, параметры должны быть явно декларированы, включая их типы.
D.4a Во время оценки выражения не должно допускаться внешнее присваивание для любой переменной, которая доступна в этом выражении

Следует отметить, что эти дополнительные требования еще уменьшают степени свободы для значений обрабатываемых данных: диапазоны, значащие разряды, только инициализированные переменные.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 20 Ноябрь, 2017 13:27 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Архитектура ПО для систем безопасности АЭС с одним циклом реализована в SAFETY SYSTEM DIGITAL PLATFORM - MELTAC -. MITSUBISHI ELECTRIC CORPORATION.
Вложение:
MELTAC.png
MELTAC.png [ 30.32 КБ | Просмотров: 9911 ]

Основной цикл занимает не более 80% CPU. Если больше, срабатывает диагностика, приводящая к рестарту. Периодически осуществляется синхронизация данных с Data Table (чтение/обработка/запись). Как в таблицы попадают данные - не указано, видимо, те самые контролируемые прерывания числом три.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 20 Ноябрь, 2017 13:42 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Спасибо, Дмитрий Викторович, много интересного материала.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 23 Ноябрь, 2017 13:46 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Еще одна знаменитая система с простой архитектурой Teleperm XS
Вложение:
TXS.png
TXS.png [ 57.38 КБ | Просмотров: 9871 ]

Цитата:
Teleperm XS (TXS) Software Description.
The TXS software can be divided into three categories: operating system software, platform software, and application software. The following sections describe the software in these three categories. The components of each layer of the processing system are shown in Figure 1.

The operating system software layer consists of the real-time operating system, communication
software, and the hardware organization tool. The components that make up these three
categories are summarized in the following discussion.
* MICROS (Real-time Operating System)
MICROS is the real-time operating system kernel of TXS systems. It is small
(approximately 1 Kbyte) and static. In this context, the term static means that all the
operating system objects are defined on startup and cannot be changed during run time.
For example, the operating system does not use dynamic allocation of system
resources such as memory-heap or dynamic task definitions.

* NMI-Handler (Real-time Operating System)
The NMI handler, in cooperation with the exception handler, is responsible for handling
abnormal conditions. In many cases, hardware failures are signaled by means of
interrupts. For example, communication bus accesses to VO modules are monitored for
tolerable response times (time-outs) in this way. If these times are exceeded, it is
concluded that a failure has occurred and this is signaled by means of an interrupt.
Both the NMI handler and the exception handler are responsible for initiating the
required measures in such cases. One important measure involves signaling failure and
returning the computer to a predefined state (e.g., disabling of all outputs).

* MicroNET (Communication Software)
MicroNET is responsible for the communication between different function computers,
as well as between the communication processors and function computers within the
same subrack. MicroNET-L2 is an extension of the communication services that
supports L2 (protocol) communication.

* CP486 (Communication Software)
CP486 is the protocol handler implemented in the TXS communication processor. This
software module is responsible for transmitting and receiving HI (communication
processor) messages.

* Driver 3964 R (Communication Software)
The 3964R driver constitutes the interface to the local V.24 interface which is used for
loading programs and for the output of debug information.

* Hardware Organization Tool
The Hardware Organization Tool (HOT) is responsible for the parameterization of the
operating system on computer startup. HOT configures the communication memories
and detects whether modules are assigned to the slots in a subrack. The HOT also
detects the module types.

Ядро MICROS "approximately 1 Kbyte" !


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 23 Ноябрь, 2017 13:52 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
А это временной цикл работы простой системы TXS
Вложение:
TXS-cycle.png
TXS-cycle.png [ 47.35 КБ | Просмотров: 9870 ]

Цитата:
If service tasks have been requested by the operator, these tasks are then scheduled for
processing in the time remaining during the cycle (see Figure 2). The service tasks are kept
from being processed by use of a semaphore, which is held by the safety function. After the
safety function is processed, the semaphore is passed to the service task for one clock cycle
(1 ms). The service task retains the semaphore for that clock cycle then returns the semaphore
to the RTE. If the cycle time has not elapsed, the RTE passes the semaphore back to the
service task for further processing. This exchange of a semaphore continues until the service
task is completed or the cycle time expires, whichever occurs first. Using this technique, the
safety function retains the highest priority for system resources.

Upon completion of the safety function(s) and the service task(s), the RTE deactivates its own
task until it is again activated by the operating system scheduler at the start of the next
operating cycle. During this time period, the operating system activates the self-test functions,
which are processed in 1-ms time increments until the next scheduled processing cycle is to
begin. The operating system scheduler then activates the RTE for processing the safety
functions. The 1-ms time increments are used to ensure that safety function processing is
performed at the required frequency.

RealTime с циклом 1мс и ничего лишнего.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 25 Ноябрь, 2017 14:14 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Мне нравится, что SIEMENS серьезная организация и не заводит рака за камень, а честно пишет о своих недостатках в части соответствия стандарту 60880.
Цитата:
Summary of Deviations from IEC 880
Deviation from the underlying Standards are documented and assessed in the evaluation
reports.
The following deviations were agreed upon with ISTec and TUV-Nord at the beginning of the
development:
Use of the programming language C, although it does not have completely specified
semantics.
Potential problems have been ruled out by using programming guidelines to restrict the
language.

Они используют язык ANSI-C, но договариваются с сертификационной компанией о несоответствиях. Далее проходят сертификацию.
К чему это привело?

Более поздняя разработка софта для рабочих станций 60880 -
это ПО OASIS компании AREVA, унаследовавшей разработки SIEMENS для АЭС уже содержит язык ΨC.
Цитата:
A language –ΨC– build as an extension to C andits associated compiler provide the features of the OASISmodel to build dependable hard real-time applications.

Сначала использовали C, а потом все равно пришлось делать свой язык и свой компилятор. Скупой платит дважды...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 25 Ноябрь, 2017 20:22 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
А применяются ли известные ОС РВ для атомной промышленности?
Вот Integrity по стандарту IEC 61513
QNX по 61513
VxWorks по 61513
Ни одной ОС нет по стандарту 60880, стандарт 61513 не накладывает столь сильных требований, другие категории, совсем другие.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 25 Ноябрь, 2017 23:21 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Цитата:
Summary of Deviations from IEC 880:
...
Use of the programming language C, although it does not have completely specified semantics.
IEC 880 требует использования языка с полностью определённой семантикой?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 25 Ноябрь, 2017 23:26 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Цитата:
D.1e Следует установить полную и понятную семантику языка


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 26 Ноябрь, 2017 01:48 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Тогда теоретический вопрос - возможно ли установить полную семантику языка?
Знаю, что по сравнению с С можно сократить количество неопределённости. Но как это сделать полностью, если описание на неформальном языке требует уточнений, а уточнения своих уточнений?
Вторая часть вопроса заключается в том, не вредит ли излишняя определённость главному - недопущению ошибок? Я обдумывал, разные стратегии отлова ошибок и нахожу возможность предоставления выбора более оправданным, чем его отсутствие.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 26 Ноябрь, 2017 14:30 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Comdiv писал(а):
Тогда теоретический вопрос - возможно ли установить полную семантику языка?
Знаю, что по сравнению с С можно сократить количество неопределённости. Но как это сделать полностью, если описание на неформальном языке требует уточнений, а уточнения своих уточнений?
Вторая часть вопроса заключается в том, не вредит ли излишняя определённость главному - недопущению ошибок? Я обдумывал, разные стратегии отлова ошибок и нахожу возможность предоставления выбора более оправданным, чем его отсутствие.

Во-первых, еще раз повторю, что это требования 60880, которые более аскетичны, чем Oberon-07.
Во-вторых, это требования приложения D к автоматическому коду описания логик защит, которое получается из, скажем, графических схем FBD: ИЛИ, НЕ, ТРИГГЕР, ...
Вложение:
fbds.png
fbds.png [ 97.43 КБ | Просмотров: 9797 ]

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

Насчет полной семантики мое понимание следующее. Они хотят в том ограниченном подмножестве языка исключить неопределенности. Например, даже в Обероне синтаксически правильное выражение
Код:
A := B(C);

неопределенно, ибо в зависимости от типа B может выражать
    -вызов функции B с параметром C с присваиванием A возвращаемого значения;
    -присваивание структуре A структуры B с приведением к типу C .

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 26 Ноябрь, 2017 17:04 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Дмитрий Дагаев писал(а):
Насчет полной семантики мое понимание следующее. Они хотят в том ограниченном подмножестве языка исключить неопределенности. Например, даже в Обероне синтаксически правильное выражение
Код:
A := B(C);

неопределенно, ибо в зависимости от типа B может выражать
    -вызов функции B с параметром C с присваиванием A возвращаемого значения;
    -присваивание структуре A структуры B с приведением к типу C .
То есть и в этом смысле? Так-то тут синтаксическая неоднозначность, которая разрешается на уровне таблицы символов, а семантика определена достаточно. Кстати, в Go эта неоднозначность решена, потому что для 2-го варианта пишется так
Код:
A := B.(C);
что, по-видимому, необходимо из-за многопроходности. В описании Оберона хватает неопределённости, но это не всегда плохо, потому что позволяет создать для него компилятор, производящий более ошибкоустойчивый код, чем для языков с плохо определённой семантикой, например, Java. Позволяет и наоборот - сделать хуже.

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

Если доограничивались до того, что стало возможно полностью исключить ошибки, то да - новых проблем не должно быть. Частично, я поднимал эту тему viewtopic.php?f=86&t=6001


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 26 Ноябрь, 2017 17:26 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
Дмитрий Дагаев писал(а):
Код:
A := B(C);


Лучше бы это было так:
Код:
A := B AS C;


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 26 Ноябрь, 2017 17:32 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Kemet писал(а):
Лучше бы это было так:
Код:
A := B AS C;
Согласен


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 26 Ноябрь, 2017 18:40 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Следующая интересная история с 60880 - РПО или
Цитата:
15 Аттестация ранее разработанного программного обеспечения

В обычной жизни программист C++ без задней мысли активно применяет stl, boost ибо все так делают. Попадая в мир 60880, он сталкивается с необходимостью аттестации РПО по схеме и процессам, предопределенным стандартом 60880.
Вложение:
rpo1.png
rpo1.png [ 93.08 КБ | Просмотров: 9779 ]

Вложение:
rpo2.png
rpo2.png [ 63.57 КБ | Просмотров: 9779 ]

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

Самый лучший способ отучить энтузиастов бездумного использования библиотек сторонних производителей - вовлечь оных в разработку документации для аттестации ранее разработанного программного обеспечения. Действует очень эффективно.

Мораль очень простая: в критически важных системах не допускается "делегирование ответственности" на стороннего производителя третьей стороны, особенно, если тот ни о чем подобном не подозревает.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 26 Ноябрь, 2017 22:23 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Comdiv писал(а):
Тогда теоретический вопрос - возможно ли установить полную семантику языка?

Конечно, это еще в 70-е научились делать.

Comdiv писал(а):
Вторая часть вопроса заключается в том, не вредит ли излишняя определённость главному - недопущению ошибок? Я обдумывал, разные стратегии отлова ошибок и нахожу возможность предоставления выбора более оправданным, чем его отсутствие.

Ну вот в си предоставили выбор и теперь программист не знает, чему равно a/b.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 26 Ноябрь, 2017 22:46 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Trurl писал(а):
Comdiv писал(а):
Тогда теоретический вопрос - возможно ли установить полную семантику языка?
Конечно, это еще в 70-е научились делать.

Как, если описания на неформализованном языке неточны по своей сути, а формализованные вводятся с помощью неформализованных. Что входит в полную семантику? То что, программа должна делать, или и то, что не должна? Входит ли в полную семантику ограничения по времени и, возможно, другие величины или нет?

Trurl писал(а):
Ну вот в си предоставили выбор и теперь программист не знает, чему равно a/b
Знает в той же степени, что и для Оберона. И как ни странно, эта неопределённость лучше, чем определённость, введённая в Java.
Потому что в Java
Код:
i = -2147483647 - 1;
i = i / -1;// -2147483648

а в Си
Код:
i = -2147483647 - 1;
i = i / -1;// abort execution для gcc -ftrapv


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 26 Ноябрь, 2017 23:37 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Comdiv писал(а):
Как, если описания на неформализованном языке неточны по своей сути, а формализованные вводятся с помощью неформализованных.

Математики как-то обходятся же.

Comdiv писал(а):
а в Си

При таком строгом отношении к формализации следует говорить не "в си", а "в одном из компиляторов при определенном наборе опций".


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB