PDA

Просмотр полной версии : Вход CFC блока в виде структуры. Как подать на такой вход из двух объектов?(фото)



Daedal
21.03.2018, 16:02
Добрый день!

Есть объекты, написанные на ST.

Входы и выходы объектов - это структуры.

Вопрос:

Как на языке CFC подключаться ко входу, но не ко всей структуре сразу, а к какому-либо её элементу(сигналам или вложенным структурам)?

Пример во вложении, в котором:

1. Из объекта MPUMP типа PUMPFIRE cигнал alarm из структуры StatusOut нужно передать на вход pumperr (первый элемента массива) структуры StatusIn объекта CONTROLCABINET.

2. Из объекта JPUMP типа PUMPFIRE cигнал alarm из структуры StatusOut нужно передать на вход pumperr (второй элемента массива) структуры StatusIn объекта CONTROLCABINET.


Не могу назначит на один вход два сигнала. Как это правильно сделать?
Спасибо.

SA104
21.03.2018, 16:56
На один вход два сигнала - элемент ИЛИ

Daedal
21.03.2018, 17:07
На один вход два сигнала - элемент ИЛИ

Это мне известно.

В моём случае вход - это структура. Как записать значения в РАЗНЫЕ элементы этой структуры? Как подсоединять на вход CFC блока?

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

SA104
21.03.2018, 17:25
Как то Вы все слишком сложно описываете. Если судить по картинке, то там два выхода типа BOOL и вход такой же. Вопрос был - назначить на один вход два сигнала - элемент ИЛИ и все дела.

capzap
21.03.2018, 17:33
на выходе первых блоков прописываете через точку экземпляр последнего блока и требуемое местоположение, потом просто выполняете последний блок без использования входных линий

Daedal
21.03.2018, 20:39
на выходе первых блоков прописываете через точку экземпляр последнего блока и требуемое местоположение, потом просто выполняете последний блок без использования входных линий

На выходе первых блоков тоже ведь структура.
Как мне одновременно указать конкретный элемент из структуры первых блоков и конкретных элемент из структуры последнего блока? И всё это в одном выходе?

capzap
21.03.2018, 20:59
На выходе первых блоков тоже ведь структура.
Как мне одновременно указать конкретный элемент из структуры первых блоков и конкретных элемент из структуры последнего блока? И всё это в одном выходе?

писать на ST

Daedal
21.03.2018, 21:02
писать на ST

Спасибо.

На ST написано ))

Но от меня хотят наглядности...))

capzap
21.03.2018, 21:12
вариантов много, промежуточная переменная например, еще код ST конвертировать в FBD

Daedal
21.03.2018, 21:32
вариантов много, промежуточная переменная например, еще код ST конвертировать в FBD

Про переменную-сборщик структуры я писал уже.

А внутри CFС уже и так ST код.

Как конвертировать с FBD, подскажите, пожалуйста? И что это даст? Будут видны связи описанных на ST блоков между собой?

Вижу в меню Проект -> Перевод на другой язык -> Перевести проект, но там в Целевой язык пусто..

Daedal
21.03.2018, 22:21
var_in_out ..

А можно поподробнее?

capzap
21.03.2018, 22:51
незнаю в чем там ужОс

Daedal
22.03.2018, 08:28
незнаю в чем там ужОс

УжОс в том, что когда dTemplate.STUFF - это крупная структура и таких структур на входе и выходе экземпляра объекта несколько и несколько самих экземпляров, то промежуточных присвоений будет много. Ручками делать не охота.

Но про этот способ я знал изначально. Другого, как я понял, нет? Ясно, спасибо. Буду думать. И руки тренировать.:D

capzap
22.03.2018, 08:47
УжОс в том, что когда dTemplate.STUFF - это крупная структура и таких структур на входе и выходе экземпляра объекта несколько и несколько самих экземпляров, то промежуточных присвоений будет много. Ручками делать не охота.

Но про этот способ я знал изначально. Другого, как я понял, нет? Ясно, спасибо. Буду думать. И руки тренировать.:D

мы точно про CFC говорим, что значит автоматизировать, нагородить цикл FOR в графическом редакторе тоже можно, но Вы вроде писали что это нужно для наглядности

Daedal
22.03.2018, 09:58
мы точно про CFC говорим, что значит автоматизировать, нагородить цикл FOR в графическом редакторе тоже можно, но Вы вроде писали что это нужно для наглядности

Да, для наглядности. В приведённом Вами примере присваивается ОДИН выход и ОДИН вход. Как сделать это для НЕСКОЛЬКИХ сигналов и РАЗНЫХ структур?

capzap
22.03.2018, 10:15
нормальный ход, уже значит будут разные структуры
Если не нарушать порядок следования блоков то достаточно объявить одну структуру для выхода с блоков, если они однотипные, добавить переменную счетчик и в структуре которая будет подаваться на вход последнего блока, в массиве вместо цифры вставлять счетчик, а после прибавлять к счетчику единицу

Daedal
22.03.2018, 13:15
нормальный ход, уже значит будут разные структуры
Если не нарушать порядок следования блоков то достаточно объявить одну структуру для выхода с блоков, если они однотипные, добавить переменную счетчик и в структуре которая будет подаваться на вход последнего блока, в массиве вместо цифры вставлять счетчик, а после прибавлять к счетчику единицу

Не важно разные или одинаковые. Главное, чтобы я мог:
1. Вытащить из одной структуры более 1 сигнала
2. Записать в одну структуру более 1 сигнала


Если переменные и счётчик, то это будет наглядно? Я увижу состояния всех сигналов? Я не понимаю:(

Daedal
22.03.2018, 15:15
Так и работайте с конкретными полями а не с целой структурой.
Нужен носовой платок, а вы целую галантерею тягаете
PS
var_in_out

Это наименее кривой вариант, на нём и остановился.
Те сигналы, которые нужны для наглядности, продублирую из структур сразу на вход/выход объекта.
Но всё же немножко неудобно. Хочется, как всегда, чтобы было удобно.

Daedal
23.03.2018, 19:01
Задача решалась достаточно просто, при этом работать как и раньше со структурами на входе и выходе можно.

Поскольку речь шла о наглядности, это можно сделать так:

В окно CFC вытаскивать экземпляр объекта без каких либо дополнительных портов.

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

Если интересно, позже выложу картинку.

Николай2
24.03.2018, 13:36
А использовать блок присвоения MOVE с разрешением.

Daedal
24.03.2018, 13:48
А использовать блок присвоения MOVE с разрешением.

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

И уже нет надобности, спасибо.