SIEMENS, DF&PD

Предыдущее посещение: Пт мар 04, 2016 7:40 Текущее время: Пт мар 04, 2016 7:40

Часовой пояс: UTC + 3 часа




 [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Генератор импульсов
СообщениеДобавлено: Пт сен 30, 2005 10:30 
Добрый день!
Есть программа для S7-300 (314C-2DP).

A M 2.0
JNB _001
L 1.000000e+000
L MD 10
+R
T MD 10
_001: NOP 0

Программа запускается на симуляторе PLCSIM V5.3
Вызывается в OB35.
Подаю сигнал на запуск (M2.0)и
одновременно запускаю секундомер (на ручных часах.
По истечении 60 сек, в ячейке памяти MD10 находится значение примерно 6200, а должно быть 6000.
Это не может быть погрешностью неодновременного запуска.

После загрузки программы в реальный PLC происходит то же самое.

Подскажите, пожалуйста, в чем моя ошибка?

P.S. Программа необходима для выдачи импульсов точно каждые 100 ms.

ответить


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 30, 2005 11:19 
Не в сети
Ведущий специалист

Зарегистрирован: Вт янв 11, 2005 9:27
Сообщения: 4851
Откуда: SIEMENS I IA AS Москва
Не знаю зачем такие выкрутасы с реальными величинами
Всё просто и всё работает

A M 2.0
JCN m001
L 1
L MD 10
+I
T MD 10
m001: NOP 0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: арифметика для LONG
СообщениеДобавлено: Пт сен 30, 2005 11:50 
Сергей в своем примере допустил небольшую неточность:
вместо команды +I
следует использовать +D


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 30, 2005 11:53 
Не в сети
Известный Писатель

Зарегистрирован: Вт янв 11, 2005 9:58
Сообщения: 160
Специально проверил сейчас на CPU S7-313C.
В HW-Config'e цикл вызова ОВ35 поставил на 100mS, в ОВ35 прописал:
A M10.0 // Если 1 => обнулить счётчик
JCN m001
R M10.0
L 0
T MD200
BE
m001: L MD200
L 1
+D
T MD200
BE

Всё прекрасно работает, после 60-ти секунд значение MD200 равно 600 (а не 6000 и тем более не 6200). Как, собственно, и должно быть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс окт 02, 2005 12:11 
Не в сети
Новый писатель

Зарегистрирован: Пт сен 23, 2005 19:20
Сообщения: 13
На мой взгляд, отслеживать значение импульсов с помощью стрелочных часов - не лучший вариант (а вдруг они врут). Чтобы быть точно уверенным, запусти в ОВ1 по условию (например, как у тебя сделано "А М2.0") таймер, который по истечению 60 сек даст команду считать значение, насчитанное в MD10 и поместить куда-нибудь в MD20. Тогда и будешь точно знать сколько импульсов твой CPU насчитал. Должно быть 600 имп, если, как ты пишешь, период следования импульсов 100мсек (10 герц).
Можно все проще - без ОВ35. Посмотри ClockMemory в HWConfig. Нулевой бит этого меркерного байта- изменяет свое состояние с чатотой 10 герц - то что тебе нужно. Тогда можно сделать хоть в OB1, хоть в FC


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 29, 2006 12:19 
Не в сети

Зарегистрирован: Вт авг 29, 2006 7:48
Сообщения: 5
Возвращаюсь к этому же вопросу, сорри за вопрос чайника.
Немцы после наладки оставили работающую систему, все вроде, ОК.
Однако, неделю назад подходят технологи и просят проверить работу счетчика расхода сырья.
Начинаю смотреть программу. В модуле FC401 реализованы разные программные вычисления. Привожу реальный кусок текста. Таких счетчиков штук восемь и до сих пор нареканий не было, а вот данный конкретный работает неправильно.
//==========================================
Block: FC401 FC: Release Program-Calculation

Network: 1
//==========================================
A M 3.5 //CPU-Taktgenerator 1s (1Hz)
FP M 1000.0
= M 1000.1 // Leading Edge Pulse 1s
//==========================================
Network: 2 Counter FQI-XXXX (0...15000 kg/h)

A M 1000.1
JC J002
JC N002

J002: NOP 0

L DB11.DBD 4 (мгновенный расход с расходомера FICA-XXXX)
L 2.400000e+001 // пересчет в kg/s
/R
T DB401.DBD 0

L DB401.DBD 4 //суммирование, текущий итог
L DB401.DBD 0
+R
T DB401.DBD 4

T DB401.DBD 8 //накапливающийся итог
N002: NOP 0
========================================
И вот ситуация почти такая же, как описывал автор данного топика. Бит M 1000.1 изменяется РОВНО 1 раз в секунду, мгновенный расход с расходомера как в HEX-представлении, так и в процентах, (Debug-Monitor в меню Simatic Manager) соответствует реальному, а результат подсчета суммарного расхода в DB401.DBD 8 за любой период времени, хоть за 10 минут, хоть за 1 час, меньше ожидаемого процентов на 15. А этим счетчиком полюбила пользоваться бухгалтерия для списания сырья. :-)
Подскажите, кто знает, где копать? Визуализация у нас - Intouch 9.0, я уже собирался вывести результаты в таблицу с дискретом в 1 секунду и начать анализировать....:-) Самое странное, что другие аналогичные счетчики вроде бы нареканий не вызывают, может там расход поменьше....
Заранее спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 30, 2006 7:57 
Не в сети
Писатель со стажем

Зарегистрирован: Вт янв 11, 2005 8:43
Сообщения: 527
Откуда: Россия, г.Самара, ООО НВФ "СМС"
A M 1000.1
JC J002
JC N002

Это странно посмотрите, у остальных так же или все-таки

A M 1000.1
JC J002
JCN N002


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср авг 30, 2006 15:48 
Не в сети
Известный Писатель

Зарегистрирован: Вт фев 08, 2005 19:13
Сообщения: 127
Откуда: A/S "Biotehniskais centrs", Рига
Не важно, что в коде есть лишние команды, это не мешает. Важнее то, что другие счетчики со схожим алгоритмом работают нормально. Было бы интересно ознакомиться с тем, как вычисляется мгновенный расход. Наверняка проблема именно там.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 31, 2006 9:03 
Не в сети
Писатель со стажем

Зарегистрирован: Вт янв 11, 2005 8:43
Сообщения: 527
Откуда: Россия, г.Самара, ООО НВФ "СМС"
Был неправ
A M 1000.1
JC J002
JC N002
как раз правильный, т.к. JC выставляет RLO и второй JC пройдет всегда. Это не лишняя команда.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 01, 2006 12:28 
Не в сети

Зарегистрирован: Вт авг 29, 2006 7:48
Сообщения: 5
При более внимательном рассмотрении оказалось, что еще один сумматор работает с ошибкой.
И у первого и у второго ошибка составляет 20% примерно в минус.
Значение мгновенного расхода для первого сумматора поступает в контроллер в виде аналогового сигнала 4-20 мА грубо говоря с электронных весов дозирующей установки.
Сигнал для второго сумматора - 4-20 мА с кориолисового расходомера типа Promass 80.

Эти сумматоры (ошибочные) работают с мгновенными расходами 8600 кг/час и 4500 кг/час соответственно. На расходомере Promass 80 есть свой сумматор, который считает правильно (в отличие от программного).
Остальные счетчики (правильные) считают расход около 200 кг/час и суммируют правильно.
Значения каждого расходомера на входе программного сумматора (в ячейках блока данных) ПРАВИЛЬНЫЕ. Т.е проблема именно в математике.
Контроллер у нас высшей категории, S7-400H, датчиков порядка полутора тысяч, все подключены к ET200 (около 15-20 станций), так что вычислительная нагрузка на контроллер вроде небольшая, влияния на таймер быть не должно.
Я думал, может быть проблема именно с преобразованием в REAL?
Но как иначе сделать, если у приборов выход 4-20 мА, сигнал поступает на входной аналоговый модуль ET200 и это значение преобразуется в программе контроллера в % от всего диапазона измерения?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 01, 2006 13:50 
Не в сети
Известный Писатель

Зарегистрирован: Вт фев 08, 2005 19:13
Сообщения: 127
Откуда: A/S "Biotehniskais centrs", Рига
BarberXP писал(а):
Эти сумматоры (ошибочные) работают с мгновенными расходами 8600 кг/час и 4500 кг/час соответственно. На расходомере Promass 80 есть свой сумматор, который считает правильно (в отличие от программного).
Остальные счетчики (правильные) считают расход около 200 кг/час и суммируют правильно.
Значения каждого расходомера на входе программного сумматора (в ячейках блока данных) ПРАВИЛЬНЫЕ. Т.е проблема именно в математике.
Контроллер у нас высшей категории, S7-400H, датчиков порядка полутора тысяч, все подключены к ET200 (около 15-20 станций), так что вычислительная нагрузка на контроллер вроде небольшая, влияния на таймер быть не должно.
Я думал, может быть проблема именно с преобразованием в REAL?
Но как иначе сделать, если у приборов выход 4-20 мА, сигнал поступает на входной аналоговый модуль ET200 и это значение преобразуется в программе контроллера в % от всего диапазона измерения?

Т.е. для одного 20мА соответствует 8600 кг/час, для другого - 4500 кг/час? Лично я бы в этой ситуации для начала проверил, как осуществляется преобразование в %. Судя по коду, содержащему явно лишние операции, не бог весть какой мастер это писал. Какой кусок кода это делает и как? Нет ли там потери значности при больших значениях преобразуемой величины? В общем, надо все же проверить именно преобразование в real. Можете выложить здесь эту часть кода?
Если же все-таки с этим порядок, то видел я такие вещи на расходомерах - отличаются показания локального и основанного на выходном сигнале сумматоров. Правда, расхождение не было столь большим, но причину так и не удалось выяснить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн сен 04, 2006 15:10 
Не в сети

Зарегистрирован: Вт авг 29, 2006 7:48
Сообщения: 5
В. Хрижановский писал(а):
BarberXP писал(а):

Т.е. для одного 20мА соответствует 8600 кг/час, для другого - 4500 кг/час? Лично я бы в этой ситуации для начала проверил, как осуществляется преобразование в %. Судя по коду, содержащему явно лишние операции, не бог весть какой мастер это писал.


Нет, 20 мА в обоих случаях соответствуют границе диапазона, т.е. 15000 кг/час.
Вот что содержится в тексте блока OB1:

OB1: Main Program Sweep (Cycle)
Network1: Title:
CALL FC 10 // Release Basic Adjustments
CALL FC 11 // Release Analog Inputs [Real]
CALL FC 12 // Release Analog Outputs [PAW]

CALL FC 501 // Release Motors
CALL FC 801 // Release Units
CALL FC 901 // Release OC-Valves
CALL FC 1101 // Release Hand-Valves
CALL FC 21 // Release Program-Timer
CALL FC 401 // Release Program-Calculation
...
...
...
CALL FC 1621 // Release Interlock Control
CALL FC 1701 // Release Binary Message Control

Network2: Finish
SET
SAVE
BE
Лишнее пропущено для экономии места.
Как видим, для обработки аналоговых входов вызывается FC11. Текст этого функц. блока приведен ниже:

FC11: FC: Release Analog Inputs [Real]

Network 1: Analog Input [PEW 0512]: FICA-XXXX [0...15000 kg/h]
CALL FC 111 // PEW [4...20mA] to Real 0...100%
PEW_In :=PEW512 // PEW Input Address (0...27648)
Real_Out:=DB11.DBD4 // Real Output Address (0...100%)

Network 2: Analog Input [PEW 0514]: FICA-XXX1 [0...15000 kg/h]
...
... (и так для всех аналоговых входов)

Network 999:
SET
SAVE
BE
Адреса PEW0512, PEW0514 - физические адреса аналоговых модулей удаленной ET200M, к которой подключены наши расходомеры, заданные при конфигурировании системы.

Напоследок текст функц. блока FC111:

FC111: FC: PEW[4-20 mA] to Real 0...100%
Comment:

Входным параметром для функции FC111 является PEW_In типа INT, получаемый через Profibus с входного модуля ET200M,
выходной - Real_Out типа REAL

Вот и все преобразование.
А программу писал некий носитель ноу-хау, этакий упитанный немец лет 60-ти..)) Это я насчет мастерства.... :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн сен 04, 2006 15:18 
Не в сети
Писатель со стажем

Зарегистрирован: Вт янв 11, 2005 8:43
Сообщения: 527
Откуда: Россия, г.Самара, ООО НВФ "СМС"
Давайте попробуем так. Кусок кода, который у Вас
L DB401.DBD 4 //суммирование, текущий итог
L DB401.DBD 0
+R
T DB401.DBD 4
В DBD4 что накапливается?

T DB401.DBD 8 //накапливающийся итог
т.е. в DBD8 то же значение что и в 4-м?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 06, 2006 8:30 
Не в сети

Зарегистрирован: Вт авг 29, 2006 7:48
Сообщения: 5
==============================
T DB401.DBD 8 //накапливающийся итог
т.е. в DBD8 то же значение что и в 4-м?
==============================
Да, в DBD8 то же, что и в DBD4, программу писал немец, у них все делается надежно и с избыточностью, на каждый параметр своя ячейка или переменная. Может, это и неплохо..:-)

Сегодня получили рекомендации с немецкой стороны, синхронно обнулить счетчики аппаратный и программный. Не верят они в то, что программа считает неправильно....

Кстати, на днях снизили производительность завода и (по словам технологов) программный счетчик начал опережать аппаратный...

О результатах экспириенсов сообщу обязательно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср сен 06, 2006 10:39 
Не в сети
Новый писатель

Зарегистрирован: Ср сен 06, 2006 10:36
Сообщения: 23
Извращенцы, пишите на нормальных языках (FBD или SCL) и не запутаетесь !!!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group