Segnetics

Вернуться   Segnetics > Форум Segnetics > SMLogix

SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.11.2015, 02:03   #1
ViS
Senior Member
 
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили: 15 раз(а) в 12 сообщениях
По умолчанию Ограничения TimeToTick

Во всяких описаниях уставок, связанных со временам, для программ, создаваемых конструктором, встречается диапазон задания времени от 0 до 9999. Обычно в программе в этом месте стоит TimeToTick. Сегодня заметил, что максимальное значение, которое он нормально переваривает на входе - 3276, дальше выдает на выходе отрицательное число. Случайно выяснил, разбираясь почему ПИД шимовский не работает. У меня там изначально 3600 было задано.
ViS вне форума   Ответить с цитированием
Старый 04.11.2015, 21:30   #2
serg-el
Senior Member
 
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Т.к. этот блок (и остальные в SMLogix) использует signed int, то при превышении 32767 число становится отрицательным. Т.е. больше 32767 и меньше -32768 на входе в блоки использующие int не задать.
И вообще, в связи с этим при расчетах int лучше не использовать, а использовать long или real.

А насчет внутренней структуры TimeToTick - это к Арсению. Но мне кажется именно в этом дело.


__________________
Всё, что нельзя выразить в цифрах — это не наука, это — мнение.
serg-el вне форума   Ответить с цитированием
Старый 04.11.2015, 23:40   #3
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 740
Благодарил(а): 12 раз(а)
Поблагодарили: 192 раз(а) в 188 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата
Сообщение от ViS Посмотреть сообщение
... в программе в этом месте стоит TimeToTick. Сегодня заметил, что максимальное значение, которое он нормально переваривает на входе - 3276, дальше выдает на выходе отрицательное число.
Можно не посещая гадалку сказать что время тика у Вашей программы 100 миллисекунд.
Цитата
Сообщение от serg-el Посмотреть сообщение
Т.к. этот блок (и остальные в SMLogix) использует signed int, то при превышении 32767 число становится отрицательным.
.....
А насчет внутренней структуры TimeToTick - это к Арсению. Но мне кажется именно в этом дело.
Естественно в этом.
Независимо от внутренней структуры блока выходная величина равна входной умноженной на количество тиков в секунду. А раз она INT, то диапазон входных значений будет сужаться с уменьшением времени тика и за этим стоит следить.
А то ведь можно и на неоднократные переполнения попасть.
Для случая ViS на входе 9100 - выход ошибочный 25464

Последний раз редактировалось ATS, 04.11.2015 в 23:56
ATS вне форума   Ответить с цитированием
Старый 05.11.2015, 00:48   #4
serg-el
Senior Member
 
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Так может уважаемый Арсений Евдокимович пнёт программистов что-бы ввели TimeToTick long ?



__________________
Всё, что нельзя выразить в цифрах — это не наука, это — мнение.
serg-el вне форума   Ответить с цитированием
Старый 05.11.2015, 08:16   #5
ViS
Senior Member
 
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили: 15 раз(а) в 12 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Все всё правильно сказали про Int и иже с ним
Основной посыл сообщения был в другом. Видимо, надо было конкретизировать сразу.

В документации к конструкторским программам, в описании уставок, указаывается диапазон 0-9999. Это не корректно. Что б 9999 "пролезло" без ошибок, тик должен быть более 300мс. Программы, создаваемые конструктором, имеют меньший существенно. Соответственно, люди, знакомые с программированием очень поверхностно и пользующиеся конструктором без влезания в "дебри", легко получат неработающую программу просто задав уставку выше порога, определяемого тиком.
Я вот, например, маленько глубже, чем поверхносто с этим знаком, но как-то вообще не обращал на это внимания, ибо всегда до этого хвватало, а тут понадобилось задать час - вот и заметил.

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

Цитата Так может уважаемый Арсений Евдокимович пнёт программистов что-бы ввели TimeToTick long ?
Присоединяюсь.
ViS вне форума   Ответить с цитированием
Старый 05.11.2015, 09:11   #6
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата
Сообщение от serg-el Посмотреть сообщение
Так может уважаемый Арсений Евдокимович пнёт программистов что-бы ввели TimeToTick long ?

Цитата
Сообщение от ViS Посмотреть сообщение
Присоединяюсь.
Один только вопрос: зачем?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 05.11.2015, 09:26   #7
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 740
Благодарил(а): 12 раз(а)
Поблагодарили: 192 раз(а) в 188 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата:
Сообщение от Arsie Посмотреть сообщение
Один только вопрос: зачем?
Вот именно. Проще себе макрос сделать.
(блок на выходе убрать)
ATS вне форума   Ответить с цитированием
Старый 06.11.2015, 10:31   #8
serg-el
Senior Member
 
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата
Сообщение от ATS Посмотреть сообщение
Вот именно. Проще себе макрос сделать.
(блок на выходе убрать)
Тогда Арсению и сотоварищи допилить конструкторы, с целью убрать данные блоки.
И будет всем счастье


__________________
Всё, что нельзя выразить в цифрах — это не наука, это — мнение.
serg-el вне форума   Ответить с цитированием
Старый 06.11.2015, 17:34   #9
ViS
Senior Member
 
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили: 15 раз(а) в 12 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата
Сообщение от serg-el Посмотреть сообщение
Тогда Арсению и сотоварищи допилить конструкторы, с целью убрать данные блоки.
И будет всем счастье
Либо ограничить диапазон вводимого значения для соответствующих уставок и скорректировать соответственно документацию.
ViS вне форума   Ответить с цитированием
Старый 09.11.2015, 12:57   #10
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата
Сообщение от serg-el Посмотреть сообщение
Тогда Арсению и сотоварищи допилить конструкторы, с целью убрать данные блоки.
Один только вопрос: зачем?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 09.11.2015, 14:00   #11
serg-el
Senior Member
 
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата
Сообщение от ViS Посмотреть сообщение
В документации к конструкторским программам, в описании уставок, указывается диапазон 0-9999. Это не корректно. Чтоб 9999 "пролезло" без ошибок, тик должен быть более 300мс. Программы, создаваемые конструктором, имеют меньший существенно. Соответственно, люди, знакомые с программированием очень поверхностно и пользующиеся конструктором без влезания в "дебри", легко получат неработающую программу просто задав уставку выше порога, определяемого тиком.

Итого -
в документации о зависимости допустимого диапазона от тика - ни слова
в конструкторских программах диапазон допустимого вводимого значения подобной уставки не корректируется под тик,
обработки этой ошибки в программе нет.
Цитата:
Сообщение от Arsie Посмотреть сообщение
Один только вопрос: зачем?
Так доступнее?


__________________
Всё, что нельзя выразить в цифрах — это не наука, это — мнение.
serg-el вне форума   Ответить с цитированием
Старый 09.11.2015, 15:53   #12
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата
Сообщение от serg-el Посмотреть сообщение
Так доступнее?
Вы написали про убирание блоков. Дважды.

Я дважды спросил "зачем?".

Когда я смогу получить ответ на поставленный мною вопрос?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 13.11.2015, 19:00   #13
serg-el
Senior Member
 
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

"Соответственно, люди, знакомые с программированием очень поверхностно и пользующиеся конструктором без влезания в "дебри", легко получат неработающую программу просто задав уставку выше порога, определяемого тиком."

Интересно, сколько можно повторять одно и тоже?
Пока рука бойца колоть не устанет?


__________________
Всё, что нельзя выразить в цифрах — это не наука, это — мнение.
serg-el вне форума   Ответить с цитированием
Старый 16.11.2015, 09:28   #14
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата
Сообщение от serg-el Посмотреть сообщение
Интересно, сколько можно повторять одно и тоже?
Пока рука бойца колоть не устанет?
Вы позволили себе очередной раз предложить какое-то решение. На мой взгляд необдуманное. Я всего лишь прошу вас его защитить, а вы делаете вид, что ничего не говорили.

Моя рука колоть не устанет: почему вы решили, что замена блока расчёта с интовым выходом на макрос с лонговым выходом решит проблему?



А что касается ограничения - только ненормальный человек может задать время контроля перепада вентилятора большим, чем 3000 секунд. Собственно, за почти 10 лет существования Конструктора этого ни разу не случалось.

Даже у топикстартера время ШИМ превысило 3000 лишь случайно - это значение лежит далеко за гранью разумного для ШИМ-генераторов.

Так стоит ли рвать меха и глотку на очередную несуществующую проблему?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 16.11.2015, 12:20   #15
serg-el
Senior Member
 
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата:
Сообщение от Arsie Посмотреть сообщение
Вы позволили себе очередной раз предложить какое-то решение.

Так стоит ли рвать меха и глотку на очередную несуществующую проблему?
Так внесите в документацию строчку, по поводу время-зависимых уставок, что бы применялись с оглядкой на тик. Или ограничить диапазон изменения. И тогда в конструкторах ничего менять не надо будет.

Бумажки (хоть и электронные) ведь проще изменить ?


__________________
Всё, что нельзя выразить в цифрах — это не наука, это — мнение.
serg-el вне форума   Ответить с цитированием
Старый 16.11.2015, 13:15   #16
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата
Сообщение от serg-el Посмотреть сообщение
Так внесите в документацию строчку, по поводу время-зависимых уставок, что бы применялись с оглядкой на тик. Или ограничить диапазон изменения. И тогда в конструкторах ничего менять не надо будет.

Бумажки (хоть и электронные) ведь проще изменить ?
Как только вы ответите на трижды заданный мною вопрос.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 18.11.2015, 02:19   #17
ViS
Senior Member
 
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили: 15 раз(а) в 12 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата:
Сообщение от Arsie Посмотреть сообщение
Даже у топикстартера время ШИМ превысило 3000 лишь случайно - это значение лежит далеко за гранью разумного для ШИМ-генераторов.
Да ну? Кто вам сказал, что случайно?
Время реакции объекта на воздействие исчисляется в часах. Теплоноситель подается соленоидом, которым не стоит щелкать каждую минуту. Период ШИМ около часа и минимальный импульс в 10-15 минут не имеют под собой никаких случайностей.

"Случайно выяснил, разбираясь почему..." NOT EQUAL "превысило 3000 лишь случайно"

В любом случае - [дубль 4, кажется ?]
Цитата В документации к конструкторским программам, в описании уставок, указаывается диапазон 0-9999. Это не корректно. Что б 9999 "пролезло" без ошибок, тик должен быть более 300мс. Программы, создаваемые конструктором, имеют меньший существенно. Соответственно, люди, знакомые с программированием очень поверхностно и пользующиеся конструктором без влезания в "дебри", легко получат неработающую программу просто задав уставку выше порога, определяемого тиком.
Или Вы, Арсений, настаиваете на том, что это - нормально?
Давайте в аннотации к лекарству напишем, что допустимая дозировка раз в 50 больше реально допустимой? Вы наглотаесь, загнетесь, и будете свято верить, что это - нормально? А ведь те же, вид сбоку.

Последний раз редактировалось ViS, 18.11.2015 в 02:29
ViS вне форума   Ответить с цитированием
Старый 18.11.2015, 03:11   #18
ViS
Senior Member
 
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили: 15 раз(а) в 12 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата:
Сообщение от Arsie Посмотреть сообщение
только ненормальный человек может задать время контроля перепада вентилятора большим, чем 3000 секунд.
Видимо, только такой же ненормальный задаст для дренажного насоса время работы более 2620 секунд (при тике 80мс в создаваемой конструктором программе)
И однозначно такой же ненормальный разработал часть программы, создаваемой конструктором, отвечающую за управление дренажным насосом, и, судя по всему, он же написал в документации соответствующий раздел.
Нажмите на картинку для увеличения

Название:  Tick.JPG
Просмотров: 75
Размер:  37.3 Кбайт
Так что у нас произойдет с этим насосом, если все сделаем по вашей документации, не отходя от нее ни на йоту?

Последний раз редактировалось ViS, 18.11.2015 в 03:24
ViS вне форума   Ответить с цитированием
Старый 18.11.2015, 09:21   #19
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата
Сообщение от ViS Посмотреть сообщение
Видимо, только такой же ненормальный задаст для дренажного насоса время работы более 2620 секунд (при тике 80мс в создаваемой конструктором программе)
И однозначно такой же ненормальный разработал часть программы, создаваемой конструктором, отвечающую за управление дренажным насосом, и, судя по всему, он же написал в документации соответствующий раздел.
Вложение 2917
Так что у нас произойдет с этим насосом, если все сделаем по вашей документации, не отходя от нее ни на йоту?
С насосом, собственно, не произойдёт ничего плохого по двум причинам.

Первая причина - он не сломается в любом случае. Что бы не случилось, какой бы баг не произошёл.

Вторая причина - ничего страшного, что на выходе таймтутика будет -20536, оно же 32767+(32768-20536)+1 = 45000 в представлении десятичного беззнакового целого.

Счётчик досчитает до этого значения ровно через 3600 секунд, оно же 45000 тиков при времени тика, равным 80 мсек.

Цитата из справки по счётчикам:

В SMLogix десятичные числа отображаются со знаком (в так называемом "дополнительном коде"). Т.е. числа отображаются в диапазоне от -32768 до 32767. Если ввести на вход DI число "64000", то в SMLogix будет отображено число "-1536". Тем не менее, счётчик всё равно будет считать от 0 до 64000, т.к. он не учитывает выводимый на экран знак. Если вам некомфортно наблюдать счёт отрицательных чисел, можно переключить отображение входа DI и выхода DO в режим отображения шеснадцатиричных чисел.



-------------

Если честно, то я расстроен обсуждением в этой ветке. Самые активные и технические прозорливые пользователи и те ни пальцем не пошевелили провести двухминутный опыт, которой бы показал, что всё работает как нужно. Только многодневные броски грудью на ветряные мельницы в лучших традициях славного дона Кихота

И ладно бы только в этой ветке...


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 18.11.2015, 12:47   #20
serg-el
Senior Member
 
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата:
Сообщение от Arsie Посмотреть сообщение
В SMLogix десятичные числа отображаются со знаком (в так называемом "дополнительном коде"). Т.е. числа отображаются в диапазоне от -32768 до 32767. Если ввести на вход DI число "64000", то в SMLogix будет отображено число "-1536". Тем не менее, счётчик всё равно будет считать от 0 до 64000, т.к. он не учитывает выводимый на экран знак. Если вам некомфортно наблюдать счёт отрицательных чисел, можно переключить отображение входа DI и выхода DO в режим отображения шеснадцатиричных чисел.
Хм. А я в свою очередь расстроен тем, что счётчики оказывается используют uint16, в то время как вся остальная математика у вас использует int16. При чем в справке это прямо и явно не указано.
Либо я плохо ищу?


__________________
Всё, что нельзя выразить в цифрах — это не наука, это — мнение.
serg-el вне форума   Ответить с цитированием
Старый 18.11.2015, 12:51   #21
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Ограничения TimeToTick

Цитата
Сообщение от serg-el Посмотреть сообщение
Хм. А я в свою очередь расстроен тем, что счётчики оказывается используют uint16, в то время как вся остальная математика у вас использует int16. При чем в справке это прямо и явно не указано.
Либо я плохо ищу?
У меня нет слов. Вы отквотили кусок из справки и спрашиваете о том, есть это в справке или нет

http://dl.segnetics.com/WebHelp/SMLo...eg_shl_ctu.htm


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ограничения на запросы в Modbus (решено) Scorpio Вопросы о SMH2010 11 16.12.2014 16:45


Часовой пояс GMT +4, время: 00:55.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023