DRAKON.SU

Текущее время: Четверг, 28 Март, 2024 23:27

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




Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Пятница, 15 Сентябрь, 2017 08:58 

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Уважаемое собрание!

Прошу высказаться по следующей проблеме.

Изначально технология ГРАФИТ/ФЛОКС создавалась для космической отрасли. Подразумевающей управление сложными техническими комплексами в режиме реального времени.
Неудивительно, что арсенал языка включает достаточно богатый выбор графических примитивов, связанных с этим - пауза, таймер, срабатывание временной уставки.

Но все же присутствует семантическая проблема, или разрыв. Подозреваю, не я один ее замечал.

Итак, что происходит с выполнением, когда "взводится таймер"? На схемах сейчас далее продолжается передача управления далее. И далее, и далее. Но вот - время прошло. Таймер сработал. И куда попадает управление? Вообще говоря, мне кажется - оно должно передаваться на ДРУГУЮ ветку как минимум, а возможно - и в другой алгоритм вообще.

Или нужно после установки таймера делать "выход" из алгоритма - "передачу управления операционной системе".

Что думаете?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 15 Сентябрь, 2017 09:22 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
TAU писал(а):
Таймер сработал. И куда попадает управление?
Ну дык.
Таймер можно обрабатывать по прерыванию, а можно зациклиться в опросе готовности.
ИМХО, ДРАКОН неуклюже пытается абстрагироваться от этого различия - но получается плохо, потому что различие принципаильное (с алгоритмической точки зрения).


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

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Alexey_Donskoy писал(а):
можно зациклиться в опросе готовности

Для более-менее жизненных случаев это не годится. В сложных системах присутствует параллелизм. Многозадачность. Ни одна задача не должна "подвешивать" процессор. Я бы рисовал после установки таймера "выход". А икона с указанием времени срабатывания, после коего продолжается исполнение - еще один "вход".

Хотелось бы, конечно, получить ответ самого уважаемого Владимира Даниеловича Паронджанова - как данное противоречие разрешалось в ГРАФИТе?


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

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
TAU писал(а):
что происходит с выполнением, когда "взводится таймер"? На схемах сейчас далее продолжается передача управления далее. И далее, и далее. Но вот - время прошло. Таймер сработал. И куда попадает управление? Вообще говоря, мне кажется - оно должно передаваться на ДРУГУЮ ветку как минимум, а возможно - и в другой алгоритм вообще.

Или нужно после установки таймера делать "выход" из алгоритма - "передачу управления операционной системе".

Что думаете?
Таймер запускается в операционной системе реального времени. Он работает параллельно с данным алгоритмом.
По меткам таймера (которые записывают в иконе Синхронизатор) запускаются действия (или иные вещи), записанные справа от иконы Синхронизатор.


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

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Владимир Паронджанов писал(а):
Таймер запускается в операционной системе реального времени. Он работает параллельно с данным алгоритмом.
По меткам таймера (которые записывают в иконе Синхронизатор) запускаются действия (или иные вещи), записанные справа от иконы Синхронизатор

Спасибо. Уточняющий вопрос: что происходит после пуска таймера в алгоритме? Продолжаются следующие действия? Или алгоритм останавливается?

А действия, "записанные справа от Синхронизатора" - их графический примитив имеет "вход" сверху? Иными словами, возможно ли исполнение этих действий независимо от достижения таймером указанного значения?


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

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
TAU писал(а):
что происходит после пуска таймера в алгоритме? Продолжаются следующие действия?
Да
TAU писал(а):
Или алгоритм останавливается?
Нет

TAU писал(а):
А действия, "записанные справа от Синхронизатора" - их графический примитив имеет "вход" сверху?
Да
TAU писал(а):
Иными словами, возможно ли исполнение этих действий независимо от достижения таймером указанного значения?
Нет. Эти действия выполняются ТОЛЬКО тогда, когда таймер досчитает до значения, указанного в иконе Синхронизатор.


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

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Владимир Паронджанов писал(а):
TAU писал(а):
действия, "записанные справа от Синхронизатора" - их графический примитив имеет "вход" сверху?
Да
TAU писал(а):
Иными словами, возможно ли исполнение этих действий независимо от достижения таймером указанного значения?
Нет. Эти действия выполняются ТОЛЬКО тогда, когда таймер досчитает до значения, указанного в иконе Синхронизатор

Налицо противоречие. Есть вход в икону сверху - подразумевающий "регулярное", шаг за шагом, автоматическое исполнение - и этого действия.

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

Должен быть некий разрыв после иконы "установка таймера". Не уверен, что лучший вариант - икона "Конец", но!
По сути, фраза "действия выполняются, ТОЛЬКО когда таймер досчитает" в моем понимании означает ни больше, ни меньше, нежели ПРИОСТАНОВКУ "регулярного исполнения" алгоритма.

При этом если мы имеем дело с однопоточным исполнением, вся система входит в режим ожидания. Если с одним из процессов в многозадачной ОС - с остановкой его, и последующим возобновлением с новой точки входа.


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

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
TAU писал(а):
Налицо противоречие. Есть вход в икону сверху - подразумевающий "регулярное", шаг за шагом, автоматическое исполнение - и этого действия.

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

Должен быть некий разрыв после иконы "установка таймера". Не уверен, что лучший вариант - икона "Конец", но!
По сути, фраза "действия выполняются, ТОЛЬКО когда таймер досчитает" в моем понимании означает ни больше, ни меньше, нежели ПРИОСТАНОВКУ "регулярного исполнения" алгоритма.

При этом если мы имеем дело с однопоточным исполнением, вся система входит в режим ожидания. Если с одним из процессов в многозадачной ОС - с остановкой его, и последующим возобновлением с новой точки входа.

Вы совершенно правы: это
Цитата:
означает ни больше, ни меньше, нежели ПРИОСТАНОВКУ "регулярного исполнения" алгоритма.

Возникает вопрос: как это изобразить?

Вы считаете что
Цитата:
Должен быть некий разрыв после иконы "установка таймера".


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

Почему? Потому что и без разрыва все ясно.

Не могу согласиться с тем, что "есть противоречие".

Нарисуйте (и выложите здесь на всеобщее обозрение) самый простой пример дракон-схемы.
И Вы тут же убедитесь, что предлагаемый разрыв будет не помогать, а МЕШАТЬ пониманию.


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

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 239
Откуда: Россия, Стерлитамак
У меня в свое время тоже вопрос возникал, как лучше изобразить начало работы по событиям, на тот момент ничего не решил, но один из вариантов, новое событие - в новой ветке, а икону запуска по событию, к адресу ветки. Или может отдельные иконы "Начало" рисовать (новые входы в алгоритм), может быть именно этот вариант использовали


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

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Владимир Паронджанов писал(а):
Вы совершенно правы: это
Цитата:
означает ни больше, ни меньше, нежели ПРИОСТАНОВКУ "регулярного исполнения" алгоритма

Возникает вопрос: как это изобразить?
Вы считаете что
Цитата:
Должен быть некий разрыв после иконы "установка таймера".

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

Все же не могу согласиться. Повторю: НЕ должно быть входящей сверху линии, отображающей передачу управления иконе, получающей управление по срабатыванию временной уставки. Это противоречит семантике, принципам ясности и однозначности, входящим в понятие эргономичности. Как раз возникает путаница.


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

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
TAU писал(а):
Все же не могу согласиться. Повторю: НЕ должно быть входящей сверху линии, отображающей передачу управления иконе, получающей управление по срабатыванию временной уставки. Это противоречит семантике, принципам ясности и однозначности, входящим в понятие эргономичности. Как раз возникает путаница.
Предположим, Вы правы. Но Ваши утверждения необходимо доказать с помощью примеров дракон-схем.

Нарисуйте (и выложите здесь на всеобщее обозрение) самый простой пример дракон-схемы.
И Вы тут же убедитесь, что предлагаемый Вами вариант (например, разрыв или что-то иное) будет не помогать, а МЕШАТЬ пониманию.


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

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
Писал функциональный блок управления насосами под СПК 107, использовал таймеры задержки включения и выключения. В дракон схеме эти таймеры пришлось компоновать в отдельную подпрограмму. На самом деле таймеры представляют из себя след схему
Икона запуска таймера соединена с вопросом отсчитал таймер время уставки или нет
Если да делаем нужное действие и идем дальше, если нет идем дальше
Все работает на железе


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

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
А_МУР писал(а):
Писал функциональный блок управления насосами под СПК 107, использовал таймеры задержки включения и выключения. В дракон схеме эти таймеры пришлось компоновать в отдельную подпрограмму. На самом деле таймеры представляют из себя след схему
Икона запуска таймера соединена с вопросом отсчитал таймер время уставки или нет
Если да делаем нужное действие и идем дальше, если нет идем дальше
Все работает на железе

Очень интересно!

А можно посмотреть на примеры? Заранее спасибо! Можно в личку.

И еще. Все, что сделано графически и работает "на железе", лично мне весьма интересно. Может, создадим раздел здесь, на форуме, где систематизируем примеры?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 29 Сентябрь, 2017 12:20 
Аватара пользователя

Зарегистрирован: Среда, 09 Ноябрь, 2016 00:33
Сообщения: 122
Откуда: Tallinn
насчет диаграмм всяких, мало кто знает, но в UML есть не только диаграммы классов и use cases, но так же и timing diagrams правда про которые очень мало пишут обычно в учебниках всяких
Изображение


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 29 Сентябрь, 2017 13:43 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
TAU писал(а):
Все, что сделано графически и работает "на железе", лично мне весьма интересно. Может, создадим раздел здесь, на форуме, где систематизируем примеры?
Поддерживаю.

Андрей Александрович, предложите прямо здесь название нового раздела.


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

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Игорь Мазница писал(а):
насчет диаграмм всяких, мало кто знает, но в UML есть не только диаграммы классов и use cases, но так же и timing diagrams правда про которые очень мало пишут обычно в учебниках всяких
Изображение

Кому надо - знают 8)

Я, по крайней мере, в свои курсы для студентов давно еще ввел.


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

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Владимир Паронджанов писал(а):
TAU писал(а):
Все, что сделано графически и работает "на железе", лично мне весьма интересно. Может, создадим раздел здесь, на форуме, где систематизируем примеры?
Поддерживаю.

Андрей Александрович, предложите прямо здесь название нового раздела.

РЕАЛЬНЫЕ ПРИМЕРЫ ГРАФИЧЕСКОГО ПРОГРАММИРОВАНИЯ (контроллеры, реальное время, и пр.)


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

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
Здравствуйте Уважаемые Коллеги!
Выкладываю файл функционального блока под СПК 107 (ОВЕН)

Текст программы созданной Драконом:


(*#1.1.3.Ветка. ========= ||главная||*)
(*#1.1.4.Вопрос. ||Есть пуск?||*)
IF NOT (
PUSK=TRUE
) THEN JMP L26; END_IF;(*Нет-> #1.1.26.Вопрос. ||насос 1 работает?||*)
JMP L5;(*-> #1.1.5.Вопрос. ||насос 1 работает?||*)
(*#1.1.26.Вопрос. ||насос 1 работает?||*)
L26: ;
IF NOT (
PUMP1=TRUE
) THEN JMP L31; END_IF;(*Нет-> #1.1.31.Вопрос. ||насос 2 работает?||*)
JMP L27;(*-> #1.1.27.Действие. ||насос 1= стоп||*)
(*#1.1.31.Вопрос. ||насос 2 работает?||*)
L31: ;
IF NOT (
PUMP2=TRUE
) THEN JMP L138; END_IF;(*Нет-> #1.1.138.Полка. ||код состояния = 0||*)
(*#1.1.32.Действие. ||насос 2 = стоп||*)
PUMP2:=FALSE;
JMP L138;(*-> #1.1.138.Полка. ||код состояния = 0||*)
(*#1.1.27.Действие. ||насос 1= стоп||*)
L27: ;
PUMP1:=FALSE;
(*#1.1.138.Полка. ||код состояния = 0|"останов насосов"|*)
L138: ;
...... Нет текста
(*#1.1.29.Действие. ||сброс бита аварии||*)
BIT_AVAR:=FALSE;
JMP L30;(*-> #1.1.30.Адрес. ||Завершение||*)
(*#1.1.5.Вопрос. ||насос 1 работает?||*)
L5: ;
IF NOT (
PUMP1=TRUE
) THEN JMP L13; END_IF;(*Нет-> #1.1.13.Вопрос. ||насос 2 работает?||*)
JMP L6;(*-> #1.1.6.Вопрос. ||реле давления включено?||*)
(*#1.1.13.Вопрос. ||насос 2 работает?||*)
L13: ;
IF NOT (
PUMP2=TRUE
) THEN JMP L22; END_IF;(*Нет-> #1.1.22.Вопрос. ||код состояния=5||*)
JMP L14;(*-> #1.1.14.Вопрос. ||реле давления включено?||*)
(*#1.1.22.Вопрос. ||код состояния=5||*)
L22: ;
IF
SOST=5
THEN JMP L30; END_IF;(*Да-> #1.1.30.Адрес. ||Завершение||*)
(*#1.1.23.Вопрос. ||код состояния=3||*)
IF
SOST=3
THEN JMP L30; END_IF;(*Да-> #1.1.30.Адрес. ||Завершение||*)
(*#1.1.24.Вопрос. ||код состояния=4||*)
IF
SOST=4
THEN JMP L30; END_IF;(*Да-> #1.1.30.Адрес. ||Завершение||*)
JMP L25;(*-> #1.1.25.Адрес. ||запуск насосов по переднему фронту||*)
(*#1.1.30.Адрес. ||Завершение||*)
L30: ;
JMP L74;(*-> #1.1.74.Ветка. ||Завершение||*)
(*#1.1.25.Адрес. ||запуск насосов по переднему фронту||*)
L25: ;
JMP L34;(*-> #1.1.34.Ветка. ||запуск насосов по переднему фронту||*)
(*#1.1.14.Вопрос. ||реле давления включено?||*)
L14: ;
IF NOT (
RPD=TRUE
) THEN JMP L18; END_IF;(*Нет-> #1.1.18.Пауза. ||Запуск таймера TON2 10 сек.||*)
JMP L15;(*-> #1.1.15.Вопрос. ||код состояния=3||*)
(*#1.1.18.Пауза. ||Запуск таймера TON2 10 сек.||*)
L18: ;
TON2(IN:=NOT(RPD)AND PUMP2=TRUE,PT:=t#10S);
(*#1.1.19.Вопрос. ||Q таимера TON2=1||*)
IF NOT (
TON2.Q=TRUE
) THEN JMP L21; END_IF;(*Нет-> #1.1.21.Адрес. ||Завершение||*)
JMP L20;(*-> #1.1.20.Адрес. ||АВАРИЯ НАСОСА2||*)
(*#1.1.21.Адрес. ||Завершение||*)
L21: ;
JMP L74;(*-> #1.1.74.Ветка. ||Завершение||*)
(*#1.1.20.Адрес. ||АВАРИЯ НАСОСА2||*)
L20: ;
JMP L65;(*-> #1.1.65.Ветка. ||АВАРИЯ НАСОСА2||*)
(*#1.1.15.Вопрос. ||код состояния=3||*)
L15: ;
IF
SOST=3
THEN JMP L17; END_IF;(*Да-> #1.1.17.Адрес. ||Завершение||*)
(*#1.1.137.Полка. ||код состояния = 2|"работает насос 2"|*)
...... Нет текста
JMP L17;(*-> #1.1.17.Адрес. ||Завершение||*)
(*#1.1.6.Вопрос. ||реле давления включено?||*)
L6: ;
IF NOT (
RPD=TRUE
) THEN JMP L16; END_IF;(*Нет-> #1.1.16.Пуск таймера. ||Запуск таймера TON1 10 сек.||*)
JMP L7;(*-> #1.1.7.Вопрос. ||код состояния=4||*)
(*#1.1.16.Пуск таймера. ||Запуск таймера TON1 10 сек.||*)
L16: ;
TON1(IN:=NOT(RPD)AND PUMP1=TRUE, PT:=t#10S);
(*#1.1.11.Вопрос. ||Q таимера TON1 = 1||*)
IF NOT (
TON1.Q=TRUE
) THEN JMP L17; END_IF;(*Нет-> #1.1.17.Адрес. ||Завершение||*)
JMP L12;(*-> #1.1.12.Адрес. ||АВРИЯ НАСОС 1||*)
(*#1.1.17.Адрес. ||Завершение||*)
L17: ;
JMP L74;(*-> #1.1.74.Ветка. ||Завершение||*)
(*#1.1.12.Адрес. ||АВРИЯ НАСОС 1||*)
L12: ;
JMP L56;(*-> #1.1.56.Ветка. ||АВРИЯ НАСОС 1||*)
(*#1.1.7.Вопрос. ||код состояния=4||*)
L7: ;
IF
SOST=4
THEN JMP L9; END_IF;(*Да-> #1.1.9.Адрес. ||Завершение||*)
(*#1.1.8.Действие. ||код состояния=1 "работает насос 1"||*)
SOST:=1;
(*#1.1.9.Адрес. ||Завершение||*)
L9: ;
JMP L74;(*-> #1.1.74.Ветка. ||Завершение||*)
(*#1.1.33.Левый комментарий-. ||ветка выполняется один раз при изменении пуска||*)
(*#1.1.34.Ветка. ========= ||запуск насосов по переднему фронту||*)
L34: ;
(*#1.1.35.Вопрос. ||ПУСК2>=ПУСК1?||*)
IF NOT (
PUSK2>=PUSK1
) THEN JMP L37; END_IF;(*Нет-> #1.1.37.Адрес. ||запуск насоса 2||*)
JMP L36;(*-> #1.1.36.Адрес. ||запуск насоса1||*)
(*#1.1.37.Адрес. ||запуск насоса 2||*)
L37: ;
JMP L47;(*-> #1.1.47.Ветка. ||запуск насоса 2||*)
(*#1.1.36.Адрес. ||запуск насоса1||*)
L36: ;
(*#1.1.38.Ветка.Цикл. ========= ||запуск насоса1||*)
L38: ;
(*#1.1.39.Действие. ||Насос1 = пуск||*)
PUMP1:=TRUE;
(*#1.1.40.Действие. ||Пуск1=пуск1+1||*)
PUSK1:=PUSK1+1;
(*#1.1.41.Вопрос. ||реле давления включено?||*)
IF NOT (
RPD=TRUE
) THEN JMP L28; END_IF;(*Нет-> #1.1.28.Пуск таймера. ||Запуск таймера TON3 10 сек.||*)
JMP L42;(*-> #1.1.42.Адрес. ||Завершение||*)
(*#1.1.28.Пуск таймера. ||Запуск таймера TON3 10 сек.||*)
L28: ;
TON3(IN:=NOT(RPD)AND PUMP1=TRUE,PT:=t#10S);
(*#1.1.44.Вопрос. ||Q таимера TON3 = 1||*)
IF NOT (
TON3.Q=TRUE
) THEN JMP L46; END_IF;(*Нет-> #1.1.46.Адрес. ||Завершение||*)
JMP L45;(*-> #1.1.45.Адрес. ||АВРИЯ НАСОС 1||*)
(*#1.1.46.Адрес. ||Завершение||*)
L46: ;
JMP L74;(*-> #1.1.74.Ветка. ||Завершение||*)
(*#1.1.45.Адрес. ||АВРИЯ НАСОС 1||*)
L45: ;
JMP L56;(*-> #1.1.56.Ветка. ||АВРИЯ НАСОС 1||*)
(*#1.1.42.Адрес. ||Завершение||*)
L42: ;
JMP L74;(*-> #1.1.74.Ветка. ||Завершение||*)
(*#1.1.47.Ветка.Цикл. ========= ||запуск насоса 2||*)
L47: ;
(*#1.1.48.Действие. ||Насос2 = пуск||*)
PUMP2:=TRUE;
(*#1.1.49.Действие. ||Пуск2=пуск2+1||*)
PUSK2:=PUSK2+1;
(*#1.1.50.Вопрос. ||реле давления включено?||*)
IF NOT (
RPD=TRUE
) THEN JMP L43; END_IF;(*Нет-> #1.1.43.Пуск таймера. ||Запуск таймера TON4 10 сек.||*)
JMP L51;(*-> #1.1.51.Адрес. ||Завершение||*)
(*#1.1.43.Пуск таймера. ||Запуск таймера TON4 10 сек.||*)
L43: ;
TON4(IN:=NOT(RPD)AND PUMP2=TRUE,PT:=t#10S);
(*#1.1.53.Вопрос. ||Q таимера TON4 = 1||*)
IF NOT (
TON4.Q=TRUE
) THEN JMP L55; END_IF;(*Нет-> #1.1.55.Адрес. ||Завершение||*)
JMP L54;(*-> #1.1.54.Адрес. ||АВАРИЯ НАСОСА2||*)
(*#1.1.55.Адрес. ||Завершение||*)
L55: ;
JMP L74;(*-> #1.1.74.Ветка. ||Завершение||*)
(*#1.1.54.Адрес. ||АВАРИЯ НАСОСА2||*)
L54: ;
JMP L65;(*-> #1.1.65.Ветка. ||АВАРИЯ НАСОСА2||*)
(*#1.1.51.Адрес. ||Завершение||*)
L51: ;
JMP L74;(*-> #1.1.74.Ветка. ||Завершение||*)
(*#1.1.56.Ветка. ========= ||АВРИЯ НАСОС 1||*)
L56: ;
(*#1.1.57.Вопрос. ||код состояния =4||*)
IF NOT (
SOST=4
) THEN JMP L140; END_IF;(*Нет-> #1.1.140.Полка. ||код состояния = 3||*)
JMP L139;(*-> #1.1.139.Полка. ||код состояния = 5||*)
(*#1.1.140.Полка. ||код состояния = 3|"авария насоса 1"|*)
L140: ;
SOST:=3;
(*#1.1.61.Действие. ||код состояния=3 "авария насоса 1"||*)
SOST:=3;
(*#1.1.62.Действие. ||насос 1 стоп||*)
PUMP1:=FALSE;
(*#1.1.63.Действие. ||ВКЛЮЧИТЬ БИТ АВАРИИ||*)
BIT_AVAR:=TRUE;
(*#1.1.64.Адрес. ||запуск насоса 2||*)
JMP L47;(*-> #1.1.47.Ветка. ||запуск насоса 2||*)
(*#1.1.139.Полка. ||код состояния = 5|"авария всех насосов"|*)
L139: ;
SOST:=5;
(*#1.1.59.Действие. ||насос 1 стоп||*)
PUMP1:=FALSE;
(*#1.1.60.Адрес. ||Завершение||*)
JMP L74;(*-> #1.1.74.Ветка. ||Завершение||*)
(*#1.1.65.Ветка. ========= ||АВАРИЯ НАСОСА2||*)
L65: ;
(*#1.1.66.Вопрос. ||код состояния =3||*)
IF NOT (
SOST=3
) THEN JMP L141; END_IF;(*Нет-> #1.1.141.Полка. ||код состояния = 4||*)
JMP L142;(*-> #1.1.142.Полка. ||код состояния = 5||*)
(*#1.1.141.Полка. ||код состояния = 4|"авария насоса 2"|*)
L141: ;
SOST:=4;
(*#1.1.71.Действие. ||насос 2 стоп||*)
PUMP2:=FALSE;
(*#1.1.72.Действие. ||ВКЛЮЧИТЬ БИТ АВАРИИ||*)
BIT_AVAR:=TRUE;
(*#1.1.73.Адрес. ||запуск насоса1||*)
JMP L38;(*-> #1.1.38.Ветка. ||запуск насоса1||*)
(*#1.1.142.Полка. ||код состояния = 5|"авария всех насосов"|*)
L142: ;
SOST:=5;
(*#1.1.68.Действие. ||насос 2 стоп||*)
PUMP2:=FALSE;
(*#1.1.69.Адрес. ||Завершение||*)
(*#1.1.74.Ветка. ========= ||Завершение||*)
L74: ;
(*#1.1.75.Конец. ||Конец||*)
(*#1.1.2.Заголовок.Конечный текст. ||БЛОК НАСОСОВ ПОДПИТКИ||*)
...... Нужна 1 строка разделитель: ====


Вложения:
узел насосов подпитки.drt [7.63 КБ]
Скачиваний: 703
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 03 Октябрь, 2017 10:07 

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
Одно НО кодесис 2.3 текст Дракона не принимает....
В кодесис 2.3 нет поддержки JMP, кодесис 3.5 поддерживает JMP поэтому трансляция кода туда возможна


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

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
После копирования из дракона в КДС пришлось затереть некоторые Коментарии - их кодесист отметил красным
Далее кодесист нашел много неизвестных слов и "ассистент ввода" помог быстро превратить эти слова в переменные
Блок заработал сразу, и на стенде с ним не было проблем
Сам текст который выдал дракон я ни пытался читать
сравнивал алгоритм работы с дракон схемой - все соответствует!

К сожалению фото самого СПК выложить не смогу - уже СПК передали заказчику ,но в следующий раз выложу


Вложения:
ЭМУЛЯЦИЯ ЗАПУЩЕНА.jpg
ЭМУЛЯЦИЯ ЗАПУЩЕНА.jpg [ 402.2 КБ | Просмотров: 19895 ]
ВКЛЮЧЕН ПУСК И РЕЛЕ ПЕРЕПАДА.jpg
ВКЛЮЧЕН ПУСК И РЕЛЕ ПЕРЕПАДА.jpg [ 402.42 КБ | Просмотров: 19895 ]
ВНУТРИ ФУНКЦИОНАЛЬНОГО БЛОКА НАСОСОВ.jpg
ВНУТРИ ФУНКЦИОНАЛЬНОГО БЛОКА НАСОСОВ.jpg [ 499.19 КБ | Просмотров: 19895 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу 1, 2, 3  След.

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


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

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


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

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