Оператор посылки сигнала

Top  Previous  Next

Оператор посылки сигнала посылает сигнал с указанными фактическими значениями параметров.

Оператор послвки сигнала задается ключевым словом send. В качестве операнда указывается переменная типа signal  (см. раздел "Тип сигнала") с переченем фактических параметров.

 

В результате выполнения оператора сигнал приходит во все переменные, связанные с указанной связями (напрямую или через другие переменные).

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

Доступ к значениям параметров сигнала возможен только в действиях переходов, сработавших в ответ на этот сигнал.

 

Если в операторе посылки сигнала присутствует ключевое слово broadcast, то сигнал посылается как широковещательный.

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

 

На рис. 1-3 показаны три типовых варианта распространения широковещательного сигнала:

вариант (1): сигнал S является внутренней переменной составного объекта, посылается оператором send broadcast и передается на подходящие входы локальных объектов (U2 иU3);

вариант (2): сигнал S является выходом локального объекта (U1), принимается соответствующей внутренней переменной составного объекта и «ретранслируется» на соответствующие входы

  других локальных объектов (U2 и U3);

вариант (3): сигнал S является выходом локального объекта (U1), принимается соответствующей выходной переменной составного объекта, «ретранслируется» на соответствующие входы других

  локальных объектов (U2 и U3) и передается на следующий уровень иерархии.

                               

         Рис.1                                                                Рис.2                                                                                Рис.3

 

Посылка сигнала «сверху-вниз» обычно несет семантику «команды». Например, устройство управления (карта поведения составного объекта) посылает всем локальным объектам команду «Сброс»,

по которой они прекращают текущее функционирование и приходят в исходное состояние.

Посылка сигнала «снизу-вверх» обычно несет семантику «донесения».

 

Примеры:

 

type SignalXYZ is signal (x: double; y: double; z: double);  -- Ada

type SignalXYZ is signal (double x, double y, double z);  // C#

...

x: signal (a: integer; b: boolean; c: double);  -- Ada

s: SignalXYZ;

 

signal (int a, bool b, double c) x;  // C#

SignalXYZ s;

 

...

send x(10, true, 34.7);

send broadcast x(10, true, 34.7);

send s(1.7, 2.8, 3.6);