1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Как предусмотреть НО/НЗ для DI в step 7?

PLC, прочие контроллеры, промышленные компьютеры, операторские панели
Ответить

Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 22:20
Имя: Ачкасов Юрий Владимирович
Страна: Россия
город/регион: Пермь

Как предусмотреть НО/НЗ для DI в step 7?

Сообщение tangatar »

Добрый день!

Вопрос в следующем: есть контроллер S7-300, панель оператора OP73, ПО разрабатывается на языке SCL. Хочу организовать сбор данных с дискретных датчиков по-человечески, так сказать, то есть сделать сбор данных так, чтобы на панели оператора можно было настраивать для датчиков тип НО или НЗ. Первое что пришло в голову: организовал DB перечислил в нем все DI сигналы, думал инвертировать их со SCADA (WinCC Flexible), ан не тут то было, так как на модуль постоянно приходит 24В с датчика сигнал не инвертируется. Т.е. инвертируется и тут же принимает обратное значение. Может быть можно рганизовать сбор данных при помощи битовой маски и наложить ее с XOR на целевую переменную, но максимальная длинна типов данных в Степ 7 32 бита а датчиков 68(. Писать для них конструкцию с взведением флага типа IF флаг= true THEN инвертируем сигнал долго, хочется придти к универсальному решению так как подобных заказов бывает много.

Подскажите пожалуйста пути решения, кто сталкивался.

Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 22:20
Имя: Ачкасов Юрий Владимирович
Страна: Россия
город/регион: Пермь

Re: Как предусмотреть НО/НЗ для DI в step 7?

Сообщение tangatar »

можно ли присвоить одному DB с типом UDT значения другого DB с таким же типом данных? У меня не получается...
Что -то вроде DB3:=DB1 XOR DB2.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3575
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

Re: Как предусмотреть НО/НЗ для DI в step 7?

Сообщение Михайло »

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

Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 22:20
Имя: Ачкасов Юрий Владимирович
Страна: Россия
город/регион: Пермь

Re: Как предусмотреть НО/НЗ для DI в step 7?

Сообщение tangatar »

Я хочу следующее. Т.к. часто приходит заказ на однотипные системы, мне нужно организовать универсальный сбор данных для них. Как правило оборудование ставится однотипное, разница лишь в том что дискретные входные сигналы могут быть как НЗ так и НО. Мне бы хотелось предусмотреть настройку ( НО/НЗ) для каждого датчика в SCADA. ТО есть, как я вижу этот момент: Есть набор сигналов булевого типа соответственно для каждого датчика один бит, если со скады приходит настройка, что контакт нормально закрыт, то в программе плк идет сравнение нашего набора данных с маской, и всем сигналам НЗ типа присваивается не DI, а NOT DI.

Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 22:20
Имя: Ачкасов Юрий Владимирович
Страна: Россия
город/регион: Пермь

Re: Как предусмотреть НО/НЗ для DI в step 7?

Сообщение tangatar »

Операции с блоками данных тоже не проходят...

FUNCTION GetInputChannel: VOID
VAR_TEMP
I: Inp1;

BEGIN

I:= Dinp.DBD0 XOR NDinp.DBD0;


END_FUNCTION

Блоки Dinp и NDinp тоже имеют тип данных Inp1

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3575
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

Re: Как предусмотреть НО/НЗ для DI в step 7?

Сообщение Михайло »

Теперь стало вроде понятно: SCADA должна дать возможность поставить галочку "инвертировать" на каждый сигнал. Я только не понял, чем не нравится функция XORW (или как она там обзывается?). Побитовая XOR в слове. Для 68 сигналов достаточно три раза вызвать эту функцию...

Livsc
здесь недавно
здесь недавно
Сообщения: 22
Зарегистрирован: 14 янв 2009, 09:13
Имя: Лившиц Аркадий Соломонович
Страна: Россия
город/регион: Казань

Re: Как предусмотреть НО/НЗ для DI в step 7?

Сообщение Livsc »

Создайте битовый массив - тип датчиков:0 - НО,1 - НЗ.Массив считанных дискретных входов суммируйте по модулю 2 с этим массивом. Результат - массив НО.

Автор темы
tangatar
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 18 июн 2012, 22:20
Имя: Ачкасов Юрий Владимирович
Страна: Россия
город/регион: Пермь

Re: Как предусмотреть НО/НЗ для DI в step 7?

Сообщение tangatar »

Спасибо, все получилось. В качестве массива взял сразу DB. Если обращаться к DB например как к DBD0, его можно рассматривать как двойное слово удобно потом из SCADA обращаться) Жаль только что типов длиннее 32 бит нету.
Ответить

Вернуться в «Средний уровень автоматизации (управляющий)»