Форум


FAQ    Поиск   Пользователи   Группы   Регистрация 
Профиль    Войти и проверить личные сообщения   Вход
Помогите с решением в CFC

 
Начать новую тему   Ответить на тему    Список форумов SIEMENS, Россия. IA&DT -> Промышленное программное обеспечение
Предыдущая тема :: Следующая тема  
Автор Сообщение
gsant
Известный Писатель


Зарегистрирован: 01.08.2007
Сообщения: 119
Откуда: Красноярск

Сообщение Добавлено: Пн Июл 01, 2013 11:21    Заголовок сообщения: Помогите с решением в CFC Ответить с цитатой

Здравствуйте. Столкнулся с проблемой в CFC. В чем дело вижу, как решить не знаю.
Фрагмент типа "следящий задатчик". Функция передает входное значение (real) в DB2.DBD24, пока есть входной дискретный сигнал "слежение". Если нет разрешения - записи в DB быть не должно. Далее переменная из DB используется по необходимости и может изменяться с верхнего уровня, когда нет слежения.
При поиске проблемы собрал примитивный вариант из одной функции MOVE_R. Функция: выход равен входу. Сигнал слежения повесил на вход EN. При компиляции в CFC получил следующее:

A "СЛЕЖЕНИЕ"
JCN A7d4
L DB25.DBD 44
T LD 2
UC "MOVE_R"
P#L 2.0
P#L 6.0
L LD 6
OPN DI 14
T DID 76
A BR
= DB11.DBX 6.3
JU A7d5
A7d4: CLR
= DB11.DBX 6.3
A7d5: L DB14.DBD 76
OPN DI 2
T DID 24

Т.е., как я понимаю последние три строки, запись в DB производится не зависимо от состояния входа EN (переменная "СЛЕЖЕНИЕ").
И пока прихожу к выводу, как бы я не изварачивался внутри функции - внешний выход всегда будет пересылаться в подключенную к нему переменную.
Подскажите, как избежать записи в DB при запрете слежения. Существенное ограничение - использование CFC обязательно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Бронислав
Известный Писатель


Зарегистрирован: 30.06.2006
Сообщения: 146
Откуда: Краснодар

Сообщение Добавлено: Пн Июл 01, 2013 11:45    Заголовок сообщения: Ответить с цитатой

Цитата:
как бы я не изварачивался внутри функции - внешний выход всегда будет пересылаться в подключенную к нему переменную.

Так оно и есть. Соединение внешнего выхода функции с внешней переменной или другим блоком - это прямое указание компилятору на пересылку переменной.

Цитата:
Подскажите, как избежать записи в DB при запрете слежения

1) Не соединять внешний выход функции с переменной. Например, пересылку производить в самой функции.
2) Оставить соединение внешнего выхода функции с переменной и сделать функцию слежения более умной, например, добавить вход с текущим значением внешней переменной. а внутри функции сделать селектор: Слежение есть - на выход подаем значение со входа слежения, слежения нет - на выход подаем текущее значение внешней переменной.
Это первые пришедшие на ум варианты, может еще что-нибудь придумать можно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
gsant
Известный Писатель


Зарегистрирован: 01.08.2007
Сообщения: 119
Откуда: Красноярск

Сообщение Добавлено: Пн Июл 01, 2013 11:56    Заголовок сообщения: Ответить с цитатой

С первым вариантом понятно, думаю так и поступлю. Если выхода не найду. Проблема в том что таких функций несколько, да и не видно будет такую связь из CFC.
Вот думаю как бы к CFC указатель привертеть, чтобы связь видна была и функция одно и таже. Но чего то ума не хватает...

Со вторым хуже. Есть еще нужда менять переменную с верхнего уровня. Попробовал на симуляторе через VAT, плохо получается.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Бронислав
Известный Писатель


Зарегистрирован: 30.06.2006
Сообщения: 146
Откуда: Краснодар

Сообщение Добавлено: Пн Июл 01, 2013 12:06    Заголовок сообщения: Ответить с цитатой

Можно попробовать сделать не FC, а FB и добавить отдельный вход для записи с верхнего уровня.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
gsant
Известный Писатель


Зарегистрирован: 01.08.2007
Сообщения: 119
Откуда: Красноярск

Сообщение Добавлено: Пн Июл 01, 2013 14:30    Заголовок сообщения: Ответить с цитатой

Спасибо. Что то сам не догнал - отделить верхний уровень.
Однако какие грабли шикарные. Вход EN есть, а поди ж ты...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
gsant
Известный Писатель


Зарегистрирован: 01.08.2007
Сообщения: 119
Откуда: Красноярск

Сообщение Добавлено: Ср Июл 03, 2013 4:27    Заголовок сообщения: Ответить с цитатой

Сделал пересылку внутри функции с применением указателя. Оказалось все просто. CFC сам определяет - передавать в блок число или указатель на него. На одном листе, с одной ссылкой на глобальные данные, одновременно прекрасно соединяются входы разных типов, и численные и указатели.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов SIEMENS, Россия. IA&DT -> Промышленное программное обеспечение Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB 2.0.11 © 2001, 2002 phpBB Group