Оператор посылки сигнала |
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); |