Find name of MPT signal of input line

3 次查看(过去 30 天)
Jeremy
Jeremy 2012-8-27
I have a large Simulink model which includes many signals associated with mpt.Signal objects in the base workspace (so that these lines auto code to simple, non-structured variables). To create some ancillary information for this model, I need my script to find which mpt signals are used as inputs to some of my custom subsystem blocks.
Looking at one of these blocks, I can use "get_param" to get its inport "Port" and "Line" object handles, but I cannot find a way to retrieve the name of the associated MPT signal.
Alternatively, my script has a list of these signals available. If I could generate a list of every subsystem inport which uses a given MPT signal, then I could search that list for the subsystems which intrest me, and complete my script from there.
So is there any way for a script to find the uses of an MPT signal, even after it is routed through multiple subsystem levels of a complex madel? I could use a solution which either examines an inport and determinies the signal or finds all inports which use a given signal.

回答(2 个)

Kaustubha Govind
Kaustubha Govind 2012-8-27
This might help:
>> signals = find_system('modelname', 'FindAll', 'on', 'RegExp', 'on', 'Type', 'line', 'Name', '\w')
This should give you the list of all signals with a non-empty name.
Alternately, if you have the line handle, you should just have to call GET_PARAM to ask for the "Name" parameter:
>> get_param(signals(1), 'Name')
You can also use "get" instead of get_param. The following command will query for all public properties of the line:
>> get(signals(1))

Jeremy
Jeremy 2012-8-27
编辑:Jeremy 2012-8-28
Unfortunately, that only finds lines which are manually named with the signal name. I need to find where the signal goes from there, including through the use of "To-From" blocks and into and out of subsystems. If I select one of these "downstream" lines and enter a less-than sign (<) as the name, or if I set the line's "signalPropagation" property to "on", then the signal name appears in my Simulink screen, surronded by less-than/greater-than signs (<MySignalName>). However, using "get(get_signals(1))" in this condition, I can see that "signalPropagation" is on, but I still cannot see the actual signal name in any property ("Name" is just set to an empty string).
So I can see the signal name in my Simulink screen, and I have traced a few of these blocks in the auto-code to verify that the intended MPT variable is used directly (not written to a structure element then used by reference to the structure). But I still have no way for my script to access this signal name.

类别

Help CenterFile Exchange 中查找有关 Subsystems 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by