SIEMENS, DF&PD

Предыдущее посещение: Пт июн 24, 2016 15:19 Текущее время: Пт июн 24, 2016 15:19

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




 [ Сообщений: 81 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вс окт 16, 2011 21:42 
Не в сети
Новый писатель

Зарегистрирован: Пн сен 26, 2011 15:14
Сообщения: 49
согласен крышу вообще снесло))))
спасибо вам


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс окт 16, 2011 21:44 
Не в сети
Новый писатель

Зарегистрирован: Пн сен 26, 2011 15:14
Сообщения: 49
fatman писал(а):
первый раз встречаю такого упоротого и совершенно не умеющего пользоваться междуушным веществом
L "DB ANALOG SENSOR".D_10GMA19CF001
L 3.6
*R
T #temp_Real
L DB5.DBD 0
L #temp_Real
+R
T DB5.DBD 0
так тебе ясно?



согласен крышу снесло прогу пишу уже 3 неделю без перекуров срочно надо ...
извини что напряг спасибо за помощь))) удачи


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс окт 16, 2011 21:49 
Не в сети
Писатель со стажем

Зарегистрирован: Ср мар 03, 2010 12:59
Сообщения: 698
Откуда: Одесса
только не умножить на 3,6 а поделить


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс окт 16, 2011 22:45 
Не в сети
Новый писатель

Зарегистрирован: Пн сен 26, 2011 15:14
Сообщения: 49
fatman писал(а):
только не умножить на 3,6 а поделить


да я уж сделал))) спасибо
зказчик торопит пашу как папа карло
мозли уже вообще как пластилин


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 7:07 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Вс янв 25, 2009 22:05
Сообщения: 1905
Откуда: Киров
MaSA8880 писал(а):
...
жаль нет интегратора в степ 7(((


В библиотеке Modular PID Control есть. Называется "FB8 INTEG MODCONT"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 9:07 
Не в сети
Известный Писатель

Зарегистрирован: Ср фев 16, 2011 14:23
Сообщения: 434
Откуда: Санкт-Петербург, Москва
Хочу обратить ваше внимание на типичную ошибку в данном случае.

Если вы работатет с форматом real, то категорически нельзя напрямую добавлять приращение к накопленной сумме

Как минимум, необходимо использовать промежуточный накопительный буфер для приращений, а этот буфер периодически добавлять к основной сумме.

Иначе вы рискуете получить погрешность порядка 100%, особенно если суммируете на каждом цикле контроллера и расход приводите к тоннам и часам. Так как погрешность суммирования в формате с плавающей запятой (real) величин, отличающихся на несколько порядков, имеет колоссальную погрешность. Эта погрешность будет накапливаться у вас на каждом шаге вычислений что в результате приведет к недостоверным значениям суммы.

Пожалуйста, вначале изучите матчать по работе с числами с плавающей запятой:

http://www.softelectro.ru/ieee754.html

(там в конце есть отличные примеры)

Для таких целей оптимальным, с моей точки зрения является счетчик, считающий данные в 64-битном формате (2 dint) форматe с фиксированной запятой (см. сообщение от fuzzy_l). Естественно, такое надо писать самому, благо что несложно пишется.


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

Зарегистрирован: Ср мар 03, 2010 12:59
Сообщения: 698
Откуда: Одесса
приведите мне, пожалуйста, практический пример колоссальной погрешности (100%) именно суммирования, то есть когда С=А+В, а не С=А-В


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 9:52 
Не в сети
Известный Писатель

Зарегистрирован: Пт июн 25, 2010 13:15
Сообщения: 229
сам натыкался: если сумировать малые числа(порядка 3-4 значимые числа после запятой) в число REAL, то наступает такой момент, когда оно доходит до значения 512 и перестает расти. Прибавление следующих малых чисел не увеличивает число. Это связано с тем что при достижении числа 512 сдвигаются разряды и накопление малыми числами прекращается. Тут надо или увеличивать слагаемые ( складывать не циклы контроллера, а например раз в сек или в минуту) или варианты предложенные выше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 10:07 
Не в сети
Известный Писатель

Зарегистрирован: Ср фев 16, 2011 14:23
Сообщения: 434
Откуда: Санкт-Петербург, Москва
fatman, вы читали статью по ссылке? В пункте '9.3 Ошибки вызванные сдвигом мантисс.' как раз описывается подобынй пример (замечу что речь идет о погрешности накопленной суммы). Если поменять условия задачи и разность заменить суммой, принципиально ничего не изменится.

Эксперименты, которые я когда-то проводил с суммированием в ПЛК показали то же самое (попробуйте сами поставить эксперимент).

в MD0 загрузить 3000.0
в MD4 загрузить 0.000012345
вычесть из суммы MD0
вычесть из суммы MD4
результат загрузить в MD8
посмотрите что получилось и сравните величину с MD4.

Если вы делаете суммирование на каждом цикле ПЛК, да еще и приводите расход к времени цикла ПЛК в часах и к тоннам, то у вас могут прибавляться еще меньшие величины.


Последний раз редактировалось Alexey_Spb_82 Пн окт 17, 2011 10:59, всего редактировалось 1 раз.

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

Зарегистрирован: Ср мар 03, 2010 12:59
Сообщения: 698
Откуда: Одесса
ну во первых MD0 и MD2 пересекаются по адресному пространству, что уже неправильно, равно как и MD2 и MD4.
а про суммирование на каждом цикле - вы невнимательно наверно читали. Топикстартер там говорит про OB32 и раз в секунду, наверно подразумевается, что это прерывание вызывается раз в секунду, потому что если бы интервал был равен не 1сек, то обязательно бы в вычислении приращения суммы участвовала бы еще и dt, а так ею можно пренебречь. Это я к тому, что при интервале 1сек вряд ли будут малые числа.
В вашем примере, насчет того, что
3000,0+0.000012345 для процессора будет не 3000.000012345, а останется 3000,0 - конечно же показателен. Но давайте-ка, положа руку на сердце, таки признаем, что для инженерной точности, да еще и при интегрировании в 1секунду, числа 3000.000012345 и 3000.0 совершенно равны друг другу :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 10:46 
Не в сети
Писатель со стажем

Зарегистрирован: Ср мар 03, 2010 12:59
Сообщения: 698
Откуда: Одесса
Худанов Егор писал(а):
сам натыкался: если сумировать малые числа(порядка 3-4 значимые числа после запятой) в число REAL, то наступает такой момент, когда оно доходит до значения 512 и перестает расти. Прибавление следующих малых чисел не увеличивает число. Это связано с тем что при достижении числа 512 сдвигаются разряды и накопление малыми числами прекращается. Тут надо или увеличивать слагаемые ( складывать не циклы контроллера, а например раз в сек или в минуту) или варианты предложенные выше.


сейчас проверяю ваш случай, суммирую в кучу 2.000000e-004 на каждом цикле. Пока только первая сотня идет :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 10:58 
Не в сети
Известный Писатель

Зарегистрирован: Ср фев 16, 2011 14:23
Сообщения: 434
Откуда: Санкт-Петербург, Москва
fatman: Насчет адресов, да, это ошибка. Исправил данные в исходном посте, спасибо.

Для экономии времени установите стартовое значение суммы равным нескольким десяткам тысяч, иначе долго ждать.

Цитата:
3000,0+0.000012345 для процессора будет не 3000.000012345, а останется 3000,0 - конечно же показателен. Но давайте-ка, положа руку на сердце, таки признаем, что для инженерной точности, да еще и при интегрировании в 1секунду, числа 3000.000012345 и 3000.0 совершенно равны друг другу :)


В приведенном вами единичном примере - да. Но вообще-то речь идет о суммировании, и, согласитесь, когда вы десять миллионов раз прибавите 0.000012345 к 3000, то разница в 3000 и 3123.45 будет явно заметна :-)

И еще - речь идет о счетчиках, пусть технических, а значит, точность очень важна.


Последний раз редактировалось Alexey_Spb_82 Пн окт 17, 2011 11:05, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 11:00 
Не в сети
Писатель со стажем

Зарегистрирован: Ср мар 03, 2010 12:59
Сообщения: 698
Откуда: Одесса
ниче, я до пятницы совершенно свободен =)
а зачем десятки тысяч? Егор пишет о числе 512, это рядом


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

Зарегистрирован: Ср фев 16, 2011 14:23
Сообщения: 434
Откуда: Санкт-Петербург, Москва
Еще раз уточню, а вы мою ссылку читали? Тогда станет ясно откуда там вылезло число 512 и что проводимый вами эксперимент, если честно, напоминает.. проверку таблицы умножения :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 11:32 
В сети
Это точно не человек

Зарегистрирован: Чт фев 16, 2006 12:27
Сообщения: 7505
Откуда: Украина
ИМХО, развивать тему получения месячного расхода из мгновенного больше, чем на одну страницу не стоит. К тому же, она не раз поднималась ранее и достаточно просто воспользоваться поиском.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 11:47 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Вс фев 26, 2006 21:44
Сообщения: 1688
Откуда: Липецк, ОАО "НЛМК"
Alexey_Spb_82 писал(а):
И еще - речь идет о счетчиках, пусть технических

У вас технический учёт или же коммерчский?
Задача - управление наполнением какой-то ёмкости(где погрешность в 0,0001% допустима) или же учёт израсходованного за длительный период материала? В первом случае об этой погрешности можно забыть, во втором - необходимо использовать специализированные устройства, с метрологическим сертификатом и внесённые в госреестр средств измерений. И да, у них как раз встречаются импульсные выходы вроде "10 импульсов на литр".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 12:21 
Не в сети
Известный Писатель

Зарегистрирован: Ср фев 16, 2011 14:23
Сообщения: 434
Откуда: Санкт-Петербург, Москва
Негатив:

Лучше спросить не у меня, а MaSA8880.

Я предположил что речь идет о техническом расходе так как во втором случае действительно необходимо использовать сертифицированные приборы учета и речи бы о самописном подсчете не шло.

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


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

Зарегистрирован: Пн сен 26, 2011 15:14
Сообщения: 49
Alexey_Spb_82 писал(а):
Негатив:

Лучше спросить не у меня, а MaSA8880.

Я предположил что речь идет о техническом расходе так как во втором случае действительно необходимо использовать сертифицированные приборы учета и речи бы о самописном подсчете не шло.

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

да это технический расход и сигнал 4-20ма
необходимо суммировать раз в смену и в месяц


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 17, 2011 14:46 
Не в сети
Писатель со стажем

Зарегистрирован: Ср мар 03, 2010 12:59
Сообщения: 698
Откуда: Одесса
собственно как я и предполагал, суммирование бодро перешагнуло через 512 и побежало дальше
https://rapidshare.com/files/2564188294/1.avi
почему у Егора стопорилось об 512?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 21, 2011 12:01 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Чт ноя 22, 2007 5:39
Сообщения: 1344
Откуда: Иркутск
fatman писал(а):
собственно как я и предполагал, суммирование бодро перешагнуло через 512 и побежало дальше
https://rapidshare.com/files/2564188294/1.avi
почему у Егора стопорилось об 512?


Дело не в числе 512. Просто совпадение. Дело в представлении числа REAL в памяти. На мантиссу (значащая часть) в десятичном выражении получается 7 порядков (значащих цифр). Соответственно каждое число в REAL формате - это 7 значащих цифр и порядок (степень 10).

Т.е. если производить любые мат. действия с числами отличающимися на 7 и более порядков - результат будет недостоверен.

И в какой то момент при прибавлении мгновенного малого расхода к накопленной большой величине - результат перестанет увеличиваться.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 81 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


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

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