Генератор случайных чисел LAD FBD

Инженерное программное обеспечение
Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Генератор случайных чисел LAD FBD

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

Может надо написать %MB0?

Это счëтчик, который прирастает на единицу с частотой 10 Гц. То есть это и есть тактовый генератор.

Henek
Любитель
Сообщения: 44
Зарегистрирован: 30 апр 2018, 00:42

Re: Генератор случайных чисел LAD FBD

Сообщение Henek »

Это счëтчик, который прирастает на единицу с частотой 10 Гц. То есть это и есть тактовый генератор.
Думаю и даже на верняка знаю что тактовый генератор молотит далеко за 16мГц
А счетчик да. Я в курсе. Работает.
Но как обращатся к тактовому генератору и его делителям? Вот в чем еще один вопрос. Я его изначально задавал. Сименс паскуды знают как это делать.

основная проблемма в этом
Осталась ошибка в строке
так не работает
#Time_0 := MB0 ;
так скотина тоже не работает
#Time_0 := (MB0) ;

Henek
Любитель
Сообщения: 44
Зарегистрирован: 30 апр 2018, 00:42

Re: Генератор случайных чисел LAD FBD

Сообщение Henek »

Может надо написать %MB0?
Таже фигня. Нихрена не работает. Та же ошибка. Какого хрена ему блин нужно? Он должен присваивать моментальное значение регистра.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Генератор случайных чисел LAD FBD

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

Clock_byte вместо MB0 не примет, блин? Как там в PLC TAGS этот байт по умолчанию прописывается?

Henek
Любитель
Сообщения: 44
Зарегистрирован: 30 апр 2018, 00:42

Re: Генератор случайных чисел LAD FBD

Сообщение Henek »

Добре Михайло.
Чую что не в ту степь меня несет.
MB0 это не то пальто. Это однобайтовый регистр где побитно лежат результаты деления тактового генератора. Каждый бит %Mх.х тикает по своему и имеет формат BOOL. MB0 не факт что имеет формат TIME, завтра пропишу его как следует может что и выйдет. Ошибка где то здесь я думаю.
Голова уже болит весь день с одной цифрой ковырятся.
Подскажите как правильно в SCL инициализировать системные блоки и функции правильно.
Например таймер TON.
В область объявления переменных нужно его объявлять в формате?
VAR
timer_name: TON;
END_VAR

В области тела программы таймер прописывается в таком формате?
"IEC_Timer_0_DB".TON ( //Либо нужно прописать "timer_name": TON(
IN:=_bool_in_,
PT:=_time_in_,
Q=>_bool_out_,
ET=>_time_out_);

В каком виде еще можно его прописать?
Может есть рабочий пример где можно подсмотреть.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Генератор случайных чисел LAD FBD

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

Область объявления переменных - это таблица, которая вылазит сверху, если нажать кнопочку "треугольник вниз". Соответственно, границы этой области (VAR...END_VAR) указывать не надо и все объявления, в том числе таймера делаются там. Это область локальных переменных. Есть ещё глобальная область - таблица PLC Tags.

Пример:

Код: Выделить всё

"IEC_Timer_0_DB".TON ( //Либо нужно прописать "timer_name": TON(
IN:=true,
PT:=T#1M30S50MS, // 1 минута 30 секунд 50 миллисекунд
Q=>#timer_out; // ET не используется, например
Можно не писать

Код: Выделить всё

Q=>#timer_out;
а сразу использовать булевый "IEC_Timer_0_DB".Q везде в программе.

Henek
Любитель
Сообщения: 44
Зарегистрирован: 30 апр 2018, 00:42

Re: Генератор случайных чисел LAD FBD

Сообщение Henek »

Область объявления переменных - это таблица, которая вылазит сверху, если нажать кнопочку "треугольник вниз".
Да, именно об этой области я и говорю. VAR/END_VAR я написал просто по привычке чтоб как то текстом обозначить что это переменные и какие именно это переменные IN/OUT/TEMP.....
Счетчику нужно в области объявления переменных(таблице) присваивать имя например? Или не обязательно но можно? Или нельзя?
В "IEC_Timer_0_DB".TON ( что обозначает надпись "IEC_Timer_0_DB"? Это имя счетчика? Или имя дата блока? Почему его нужно писать в кавычках? Если это имя блока то где, как и когда объявляется этот блок? Или это и есть объявление блока?
Где и как можно счетчике присвоить имя? Очень люблю присваивать имена, например TaktTimer_10ms. Другими словамичтоб глянул в программу и сразу понял что это за "балалайка", а не лазил по таблицам свойств выяснять что ж это я такого написал полгода назад, это очень удобно на самом деле. Я понимаю что существуют коментарии, но для этого нужен исходник, и как положено через год исходник гдето в офисе, а ты в командировке, звониш колеге чтоб срочно прислал по хрен пойми как работающему мобильному интернету, а чтоб хоть как то принять лезеш на крышу здания и получаеш не тот файл или не ту версию. Хотя интернет у нас работает в большинстве мест как швейцарские часы всеравно присваивать осознаные имена всему что можно считаю хорошим делом.
С входами выходами понятно всё.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Генератор случайных чисел LAD FBD

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

"IEC_Timer_0_DB" пишется в кавычках, потому что это символьное имя, эквивалент аппаратного имени датаблока DB1 или какой там номер датаблоку присвоился? Смотреть в PLC Tags.
ТИА Портал сам проставляет кавычки, где надо. Помогает, так никто никогда не запоминает, где ставить кавычки, а где нет.

Посмотри обязательно "внутрянку" этого датаблока и всё станет понятно. Датаблок искать в дереве проекта слева.

Есть второй тип функции таймера, которая не требует создания отдельного датаблока типа "IEC_Timer_0_DB". Я больше люблю использовать "бездатаблочный" вариант, так как таймеров очень много, куда мне столько датаблоков на каждый чих? Не знаю как в SCL, но LAD/FBD тот вариант таймера доступен.

Насчёт присвоения имён типа TaktTimer_10ms попробуй следующее: создай глобальный датаблок с символьным именем "Таймер", внутрь напихай сколько тебе угодно таймеров типа Пауза_после_закалки, Takt_10ms, Отключение_насоса1, присвой им всем тип IEC_Timer. После этого в программе ты можешь использовать эти таймеры, обращаясь к ним следующим образом:

Код: Выделить всё

Таймер.Пауза_после_закалки
Таймер.Takt_10ms
Таймер.Отключение_насоса1
Так гораздо прикольнее.
Можно и локальные таймеры создавать, только надо в разделе STAT это делать.

Henek
Любитель
Сообщения: 44
Зарегистрирован: 30 апр 2018, 00:42

Re: Генератор случайных чисел LAD FBD

Сообщение Henek »

"IEC_Timer_0_DB" пишется в кавычках, потому что это символьное имя, эквивалент аппаратного имени датаблока DB1 или какой там номер датаблоку присвоился? Смотреть в PLC Tags.
Вы меня не совсем правильно пониманиете. Давайте представим что я извращенец, уж поверте я такой :)
И я не пишу вообще в LAD и FBD. Именно так происходит последних 3 года, директор запретил пользоватся этими языками (просто решил сменить работу вот и готовлюсь).
Создаем проект в SCL. Прямо Main(OB1 по сименсовки) начинаем писать в SCL.
или какой там номер датаблоку присвоился
Как же ж он присвоился если его еще нет?
В LAD всё просто, взял с библиотеки перетянул и ТР сам создает дата блок, в папке system block которую тоже создает автоматом.
Это выглядит вот так
Изображение
А в SCL как? Как это всё добро создавать? В ручную add block -> data block? Как в таком случае объяснить что этот дата блок принадлежит таймеру, (системному блоку)? Как в него впихать все переменные если я их не знаю? Смею заметить этот автоматом созданый системный дата блок запрещен для редактирования, на картинке видно, что и не удивительно. Да и глупо думать что кто то на память помнит состав переменных и форматы их во всех библиотечных блоках.
Посмотри обязательно "внутрянку" этого датаблока и всё станет понятно. Датаблок искать в дереве проекта слева.
Безусловно посмотрел. Именно оттуда взял этот вывод
MB0 это не то пальто. Это однобайтовый регистр где побитно лежат результаты деления тактового генератора. Каждый бит %Mх.х тикает по своему и имеет формат BOOL. MB0 не факт что имеет формат TIME
Правильно ли я Вас понял что в области объявления переменных не нужно объявлять таймер никаким способом?

Henek
Любитель
Сообщения: 44
Зарегистрирован: 30 апр 2018, 00:42

Re: Генератор случайных чисел LAD FBD

Сообщение Henek »

ООООООО. Всё МИХАЙЛО РАЗОБРАЛСЯ!!!!!!!!!!!!!!!!!!!!!!!!
БЛИН ВЪЕХАЛ :beer: :beer: :beer: :beer: :beer: :beer: :ura: :ura: :ura: :ura:

Henek
Любитель
Сообщения: 44
Зарегистрирован: 30 апр 2018, 00:42

Re: Генератор случайных чисел LAD FBD

Сообщение Henek »

Возвращаемся к истокам.
А где в программу взять генератор с частотой больше чем 10Гц? Например 1кГц сильно подошел бы.
Если не тяжело подскажите как у сименсов обозначения правильно писать
микросекунда - Ms
миллисекунда - ms
секунда - s или S

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Генератор случайных чисел LAD FBD

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

Минимальная единица времени - миллисекунда. Микросекунд не бывает. Размер букв не важен: ms, s, m, h, d.

С миллисекундами можно как раз до 1 кГц получить. Для этого выдерни из функции TON выход ET. Этот выход - это остаток времени в миллисекундах.

Ответить