Как я могу создать свои собственные параметры или атрибуты для блока в simulink?

На самом деле не уверен в 2005 году, но 2008 год съел его:

USE [DATABASE_NAME] -- !
GO

DECLARE @SQL NVARCHAR(MAX)
DECLARE @TableName VARCHAR(255)

SET @TableName = 'TABLE_NAME'   -- !

SELECT @SQL = 
(
    SELECT 
        CHAR(10)
        +'DELETE FROM ['+t1.TABLE_CATALOG+'].['+t1.TABLE_SCHEMA+'].['+t1.TABLE_NAME+'] WHERE '
        +(
            SELECT  
            CASE t2.ORDINAL_POSITION 
                WHEN (SELECT MIN(t3.ORDINAL_POSITION) FROM INFORMATION_SCHEMA.COLUMNS t3 WHERE t3.TABLE_NAME=t2.TABLE_NAME) THEN ''
                ELSE  'AND '
            END
            +'['+COLUMN_NAME+'] IS NULL' AS 'data()'
            FROM INFORMATION_SCHEMA.COLUMNS t2 WHERE t2.TABLE_NAME=t1.TABLE_NAME FOR XML PATH('')
         )  AS 'data()'
    FROM INFORMATION_SCHEMA.TABLES t1 WHERE t1.TABLE_NAME = @TableName FOR XML PATH('')
)

SELECT @SQL -- EXEC(@SQL)
1
задан Hicham Hendy 13 July 2018 в 09:05
поделиться

2 ответа

Программно создавать маски

Я не уверен, что это именно то, что вы ищете, но я сделал пример о том, как создать программную маску с помощью скрипта в MATLAB / Simulink. Я не буду использовать get_param / set_param, даже если можно получить те же результаты с помощью этих команд. Мы поедем с объектом Simulink, который будет проще и понятнее (по крайней мере, IMHO).

Для нашей игровой площадки создадим эту простую подсистему (block) с простой константой, которая дает в выводе имя переменной с именем a, которую мы хотим взять из маски:

Посмотрите адрес этого блока. Моя модель simulink mask.slx, поэтому я могу адресовать эту подгруппу с адресом mask/block (верхний левый угол окна просмотра), как вы можете видеть здесь:

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

clc
clear all

% The subgroup for which we want to programmatically create a mask
block_name = 'mask/block';


% Now we can create the mask parameter programmatically as you requested
% There are two way: the old one using get_param and set_param and a more
% clear one using the Simulink interface.

% I will go with thw second one, since it is really more straightforward
% with respect to the first one.

% The first think to do is to create the mask itself
% If the mask already exist, we would get an error, thus we can avoid it by
% checking if it already exist. This is something that you should check out.
mask_hdl = Simulink.Mask.create(block_name);
% mask_hdl = Simulink.Mask.get(block_name); % For use an existing mask

% Now we are ready to create the mask parameters:
edit_a_hdl = mask_hdl.addParameter( ...
    'Type', 'edit', ...
    'Prompt', 'Sets constant variable', ...
    'Name', 'a');
edit_a_hdl.Value = '10';

Запуск сценария кода будет быть замаскированным, и переменная будет установлена, как вы можете видеть здесь:

Здесь есть дополнительная информация .

Параметры программы программно маскируются. Блок

Теперь скажем, что у вас есть площадка, как и раньше, и у вас есть подгруппа, замаскированная как на последнем изображении. Вы можете установить его значение в маске программно (или получить) через get_param и set_param следующим образом:

value = get_param(block_name, 'a');
value = str2double(value); % Values should always be string! 
                           % Thus we must convert it
set_param(block_name, 'a', sprintf('%d', value * 100));

и, как вы можете видеть, значение теперь обновлено:

Опять же, вы можете достичь того же результата с помощью объекта Simulink.

mask_hdl = Simulink.Mask.get(block_name);
edit_a_hdl = mask_hdl.Parameters(1); % We know its position in the struct array

value = str2double(edit_a_hdl.Value);
value = value * pi;
edit_a_hdl.Value = sprintf('%f', value);

и, как вы можете см. наше новое значение:

2
ответ дан Matteo Ragni 17 August 2018 в 13:21
поделиться

Блоки Simulink во многих наборах инструментов создаются с использованием объектов системы MATLAB. Если вы хотите создать новый параметр для существующего блока Simulink, вы можете создать общедоступное свойство в отправленном объектном коде системы. Если вы создаете свой собственный блок Simulink, то для написания кода в системных объектах MATLAB будет очень удобно изменять / создавать параметры по вашему желанию.

Объект системы Simulink можно создать следующим образом:

Чтобы создать блок Simulink из объекта System, создайте блок «MATLAB system» из существующих блоков Simulink и вызовите системный объект из системы MATLAB.

Все общедоступные свойства в системном объектном коде видны в диалоговом окне маски Simulink, как показано на рисунке ниже.

Надеюсь, это то, что вы ищете.

1
ответ дан Markandeya Janaswamy 17 August 2018 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: