Добрый день!
Вопрос в следующем: есть контроллер S7-300, панель оператора OP73, ПО разрабатывается на языке SCL. Хочу организовать сбор данных с дискретных датчиков по-человечески, так сказать, то есть сделать сбор данных так, чтобы на панели оператора можно было настраивать для датчиков тип НО или НЗ. Первое что пришло в голову: организовал DB перечислил в нем все DI сигналы, думал инвертировать их со SCADA (WinCC Flexible), ан не тут то было, так как на модуль постоянно приходит 24В с датчика сигнал не инвертируется. Т.е. инвертируется и тут же принимает обратное значение. Может быть можно рганизовать сбор данных при помощи битовой маски и наложить ее с XOR на целевую переменную, но максимальная длинна типов данных в Степ 7 32 бита а датчиков 68(. Писать для них конструкцию с взведением флага типа IF флаг= true THEN инвертируем сигнал долго, хочется придти к универсальному решению так как подобных заказов бывает много.
Подскажите пожалуйста пути решения, кто сталкивался.
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Как предусмотреть НО/НЗ для DI в step 7?
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Как предусмотреть НО/НЗ для DI в step 7?
можно ли присвоить одному DB с типом UDT значения другого DB с таким же типом данных? У меня не получается...
Что -то вроде DB3:=DB1 XOR DB2.
Что -то вроде DB3:=DB1 XOR DB2.
-
- почётный участник форума
- Сообщения: 3576
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 6 раз
- Поблагодарили: 271 раз
Re: Как предусмотреть НО/НЗ для DI в step 7?
Вы не можете писать в одну и ту же область. Нужно брать из одной области памяти, инвертировать и писать в другую область... Вообще, непонятно, что вы хотите сделать... Вы хотите иметь у каждого сигнала инверсный образ?tangatar писал(а):Т.е. инвертируется и тут же принимает обратное значение.
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Как предусмотреть НО/НЗ для DI в step 7?
Я хочу следующее. Т.к. часто приходит заказ на однотипные системы, мне нужно организовать универсальный сбор данных для них. Как правило оборудование ставится однотипное, разница лишь в том что дискретные входные сигналы могут быть как НЗ так и НО. Мне бы хотелось предусмотреть настройку ( НО/НЗ) для каждого датчика в SCADA. ТО есть, как я вижу этот момент: Есть набор сигналов булевого типа соответственно для каждого датчика один бит, если со скады приходит настройка, что контакт нормально закрыт, то в программе плк идет сравнение нашего набора данных с маской, и всем сигналам НЗ типа присваивается не DI, а NOT DI.
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Как предусмотреть НО/НЗ для DI в step 7?
Операции с блоками данных тоже не проходят...
FUNCTION GetInputChannel: VOID
VAR_TEMP
I: Inp1;
BEGIN
I:= Dinp.DBD0 XOR NDinp.DBD0;
END_FUNCTION
Блоки Dinp и NDinp тоже имеют тип данных Inp1
FUNCTION GetInputChannel: VOID
VAR_TEMP
I: Inp1;
BEGIN
I:= Dinp.DBD0 XOR NDinp.DBD0;
END_FUNCTION
Блоки Dinp и NDinp тоже имеют тип данных Inp1
-
- почётный участник форума
- Сообщения: 3576
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 6 раз
- Поблагодарили: 271 раз
Re: Как предусмотреть НО/НЗ для DI в step 7?
Теперь стало вроде понятно: SCADA должна дать возможность поставить галочку "инвертировать" на каждый сигнал. Я только не понял, чем не нравится функция XORW (или как она там обзывается?). Побитовая XOR в слове. Для 68 сигналов достаточно три раза вызвать эту функцию...
-
- здесь недавно
- Сообщения: 22
- Зарегистрирован: 14 янв 2009, 09:13
- Имя: Лившиц Аркадий Соломонович
- Страна: Россия
- город/регион: Казань
Re: Как предусмотреть НО/НЗ для DI в step 7?
Создайте битовый массив - тип датчиков:0 - НО,1 - НЗ.Массив считанных дискретных входов суммируйте по модулю 2 с этим массивом. Результат - массив НО.
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 18 июн 2012, 22:20
- Имя: Ачкасов Юрий Владимирович
- Страна: Россия
- город/регион: Пермь
Re: Как предусмотреть НО/НЗ для DI в step 7?
Спасибо, все получилось. В качестве массива взял сразу DB. Если обращаться к DB например как к DBD0, его можно рассматривать как двойное слово удобно потом из SCADA обращаться) Жаль только что типов длиннее 32 бит нету.