PDA

Просмотр полной версии : Функциональные блоки на языке ST



Страницы : [1] 2 3

Денисов Максим Сергеевич
08.08.2023, 17:52
Коллеги!
Рады представить вам Функциональные блоки на текстовом языке ST в Owen Logic:)

Поддержан вызов функции и функционального блока внутри функционального блока;
При вызове ФБ внутри ФБ поддержано обращение к входам и выходам ФБ через точку;
Поддержаны локальные одномерные массивы.

ФБ на ST поддерживают приборы: ПР100(М02), ПР102, ПР200, ПР103, ПР205 и ИПП120.

Данная версия Owen Logic является бета версией!

Скачать Owen Logic 2.4.332(beta) (https://disk.yandex.ru/d/LA3y9k6EziyPzA)

Если в процессе работы с новой версией вы обнаружите баг или у вас есть предложения по развитию ФБ на ST, то можете поделиться в этой теме или прислать на почту soft@owen.ru

UPD (15.08.23):
Выпущена релизная версия Owen Logic 2.4 с ФБ на ST

Cs-Cs
08.08.2023, 18:07
Первый коммент! Подпишусь на тему, буду следить за новостями.
1. Что с задачей переработки списка переменных и окна переменных в OWL?
2. В каких ПРках поддержаны FB на ST? Особенно интересует ПР200 и ПР205 =)

Денисов Максим Сергеевич
08.08.2023, 18:25
1. Переработка списка и таблицы переменных в процессе проработки требований
2. Поддержаны приборы: ПР100(М02), ПР102, ПР200, ПР103, ПР205 и ИПП120 (добавлю эту информацию в заголовок)

kondor3000
08.08.2023, 19:21
Это круто, первый ФБ заработал,
только хорошо бы ещё сделать, чтобы после изменения входов, выходов, была строка заменить ФБ, приходится удалять блок и вставлять новый 69380

И хорошо бы пример вставки функции в ФБ и вставки ФБ в ФБ.

Ollema
08.08.2023, 21:02
Ого! Вот это новость, спасибо, попробую.

Ollema
08.08.2023, 22:28
К сожалению, данные ФБ нельзя вставлять в макросы...

IVM
08.08.2023, 23:16
К сожалению, данные ФБ нельзя вставлять в макросы...

Может макросы теперь и не нужны.

Ollema
08.08.2023, 23:25
Может макросы теперь и не нужны.

Да, тоже об этом подумал - можно же большой ФБ создать.

1exan
09.08.2023, 07:01
1. Переработка списка и таблицы переменных в процессе проработки требований
2. Поддержаны приборы: ПР100(М02), ПР102, ПР200, ПР103 и ПР205 (добавлю эту информацию в заголовок)

Планируется ли поддержка целочисленных переменных со знаком? Может существует какая-то неочевидная причина её отсутствия?

Рогов Алексей
09.08.2023, 14:06
69388

Добрый день!

Подскажите, пожалуйста, как решить задачу с демультиплексором без последующих преобразований в бул.

Денисов Максим Сергеевич
09.08.2023, 14:26
Так исторический сложилось, что в owen logic и в программируемых реле используется именно беззнаковый int, в планах конечно есть добавление новых типов данных

Dimensy
09.08.2023, 14:34
69388

Добрый день!

Подскажите, пожалуйста, как решить задачу с демультиплексором без последующих преобразований в бул.

Наверное, так?


function_block functionblock1 //имя функционального блока.

//
var_input //объявление входных переменных

N : udint; //входная переменная для
end_var

var_output //объявление выходных переменных
Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14, Q15 : bool; //выходная переменная с типом данных bool
end_var

var //объявление локальных переменных

end_var
Q0 := N.0;
Q1 := N.1;
Q2 := N.2;
Q3 := N.3;
Q4 := N.4;
Q5 := N.5;
Q6 := N.6;
Q7 := N.7;
Q8 := N.8;
Q9 := N.9;
Q10 := N.10;
Q11 := N.11;
Q12 := N.12;
Q13 := N.13;
Q14 := N.14;
Q15 := N.15;
end_function_block

Денисов Максим Сергеевич
09.08.2023, 14:35
69388

Добрый день!

Подскажите, пожалуйста, как решить задачу с демультиплексором без последующих преобразований в бул.

Думаю так будет верно

69389

Рогов Алексей
09.08.2023, 14:41
Спасибо!
Изучаем дальше!

1exan
09.08.2023, 18:06
При использовании вызова внутри ФБ другого ФБ при запуске симуляции выходит ошибка

System.InvalidOperationException: Sequence contains no elements
at System.Linq.ThrowHelper.ThrowNoElementsException()
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
at ProgramRelayFBD.ApplicationLayer.ST.AddScrollToFun ctionBlockCommand.CreateArguments(CompilerExceptio n exception)
at ProgramRelayFBD.ApplicationLayer.ST.AddScrollToFun ctionBlockCommand.Build(StFunctionBlockElement element, ProgramCode program, ICompiledProgramNetworkRepository compiledProgramNetworkRepo)
at ProgramRelayFBD.ApplicationLayer.ST.SimulateFuncti onBlockElementService.Initialize(StFunctionBlockEl ement element, ProgramCode program, ICompiledProgramNetworkRepository compiledFunctionRepo, IBuildFunctionBlockElementService buildFunctionBlockElement)
at ProgramRelayFBD.InfrastructureLayer.Adapters.FormP resenter.<>c__DisplayClass299_0.b__1(FunctionBlockBuildingSta rtedEvent ev)
at DomainTemplates.DomainEvents.RaiseEvent[T](T event, IEnumerable`1 actions)
at ProgramRelayFBD.DomainLayer.Simulation.SimulateCom pilerState.HandleBuildElement(IBuildingElement builder, ProgramCode program, ICompiler compiler)
at Owen.Compiling.ProgramLinker.CompilingElements(Pro gramCode program, IEnumerable`1 elements, CancellationToken cancellationToken)
at ProgramRelayFBD.DomainLayer.Compilers.BaseCompiler .Compiling(Generator generator, ProgramItem programItem, Stream stream, CancellationToken cancellationToken)
at ProgramRelayFBD.DomainLayer.Series200.CompilerSeri es200.<>c__DisplayClass7_0.b__1()
at System.Threading.ExecutionContext.RunFromThreadPoo lDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal (Task& currentTaskSlot, Thread threadPoolThread)

1exan
09.08.2023, 18:29
Мне показалось что какая то фигня с выравниванием. Какой состав объявлений?

Да прямо стандартная болванка fb, обёрнутая в неё-же (перепривязаны вход-выходы)

function_block functionblock1 //имя функционального блока.

// Пример функционального блока на ST, который является счетчиком и используется для прямого счета.
// Операция «прямой счет» выполняется по переднему фронту импульса на входе «U»,
// что увеличивает значение выходного сигнала «Q».
// При поступлении на вход Res логической «1», выход счетчика «Q» устанавливается в значение входа «N».

var_input //объявление входных переменных
U : bool; //входная переменная с типом данных bool
Res : bool; //входная переменная с типом данных bool
N : udint; //входная переменная для значения счетчика после сброса
end_var

var_output //объявление выходных переменных
Q : udint; //выходная переменная с типом данных udint
end_var

var //объявление локальных переменных
CounterValue : udint; //переменная для текущего значения счетчика
RTrig : bool; //переменная для определения переднего фронта на входе «U»
end_var

if Res then
CounterValue := 0;
end_if
if U and not RTrig and not Res then
CounterValue := (CounterValue + 1);
RTrig := U;
end_if
if not U and RTrig then
RTrig := false;
end_if
Q := CounterValue;

end_function_block

function_block functionblock2 //имя функционального блока.

// Пример функционального блока на ST, который является счетчиком и используется для прямого счета.
// Операция «прямой счет» выполняется по переднему фронту импульса на входе «U»,
// что увеличивает значение выходного сигнала «Q».
// При поступлении на вход Res логической «1», выход счетчика «Q» устанавливается в значение входа «N».

var_input //объявление входных переменных
U : bool; //входная переменная с типом данных bool
Res : bool; //входная переменная с типом данных bool
N : udint; //входная переменная для значения счетчика после сброса
end_var

var_output //объявление выходных переменных
Q : udint; //выходная переменная с типом данных udint
end_var

var //объявление локальных переменных
CounterValue : functionblock1; //переменная для текущего значения счетчика
end_var

CounterValue(U := U, Res:= Res, N := N, Q => Q);

end_function_block

kondor3000
09.08.2023, 20:06
перед CounterValue обьявите например 3...4 буля

//я тоже в матрёшки сыграл. До 4-х дошел, дальше было лень

Точно, достаточно поместить хоть 1 булевую или целочисленную, до или после объявления ФБ, то всё работает. Баг налицо. 69393


var //объявление локальных переменных
//x1 : bool;
fbCTU1:functionblock1; //переменная для текущего значения счетчика
x2 : udint;
end_var

Закомментировал обе переменных, сразу баг 69394 вот я вчера намучился, никак не работало(((

Эдуард_Н
10.08.2023, 04:17
А как эти ФБ теперь сохраняются?

kondor3000
10.08.2023, 08:00
А как эти ФБ теперь сохраняются?

Как у вас макросы сохранялись? Так и ФБ и функции, только у них свои папки.

Эдуард_Н
10.08.2023, 11:52
Как у вас макросы сохранялись? Так и ФБ и функции, только у них свои папки.

Спасибо, прошляпил я это.

Денисов Максим Сергеевич
10.08.2023, 13:29
При использовании вызова внутри ФБ другого ФБ при запуске симуляции выходит ошибка

System.InvalidOperationException: Sequence contains no elements
at System.Linq.ThrowHelper.ThrowNoElementsException()
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
at ProgramRelayFBD.ApplicationLayer.ST.AddScrollToFun ctionBlockCommand.CreateArguments(CompilerExceptio n exception)
at ProgramRelayFBD.ApplicationLayer.ST.AddScrollToFun ctionBlockCommand.Build(StFunctionBlockElement element, ProgramCode program, ICompiledProgramNetworkRepository compiledProgramNetworkRepo)
at ProgramRelayFBD.ApplicationLayer.ST.SimulateFuncti onBlockElementService.Initialize(StFunctionBlockEl ement element, ProgramCode program, ICompiledProgramNetworkRepository compiledFunctionRepo, IBuildFunctionBlockElementService buildFunctionBlockElement)
at ProgramRelayFBD.InfrastructureLayer.Adapters.FormP resenter.<>c__DisplayClass299_0.b__1(FunctionBlockBuildingSta rtedEvent ev)
at DomainTemplates.DomainEvents.RaiseEvent[T](T event, IEnumerable`1 actions)
at ProgramRelayFBD.DomainLayer.Simulation.SimulateCom pilerState.HandleBuildElement(IBuildingElement builder, ProgramCode program, ICompiler compiler)
at Owen.Compiling.ProgramLinker.CompilingElements(Pro gramCode program, IEnumerable`1 elements, CancellationToken cancellationToken)
at ProgramRelayFBD.DomainLayer.Compilers.BaseCompiler .Compiling(Generator generator, ProgramItem programItem, Stream stream, CancellationToken cancellationToken)
at ProgramRelayFBD.DomainLayer.Series200.CompilerSeri es200.<>c__DisplayClass7_0.b__1()
at System.Threading.ExecutionContext.RunFromThreadPoo lDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal (Task& currentTaskSlot, Thread threadPoolThread)

Спасибо, что отписались по ошибке, взяли в работу.

Михаил Троицкий
10.08.2023, 17:13
[ATTACH=CONFIG]69423[/ATT
В новой версии вылетает ошибка, при попытке изменить имя макроса

Денисов Максим Сергеевич
10.08.2023, 17:45
Прикрепите ваш проект и укажите имя какого макроса изменяете

djgoblin007
10.08.2023, 18:43
Добрый день!
Есть ли возможность в ФБ, определенном пользователем, создать экземпляр системного ФБ, например RS, и обратиться к нему в тексте программы ST?

Dimensy
10.08.2023, 19:14
Добрый день!
Есть ли возможность в ФБ, определенном пользователем, создать экземпляр системного ФБ, например RS, и обратиться к нему в тексте программы ST?

Ну, ведь, в первом посте написано

Поддержан вызов функции и функционального блока внутри функционального блока;

kondor3000
10.08.2023, 22:47
Добрый день!
Есть ли возможность в ФБ, определенном пользователем, создать экземпляр системного ФБ, например RS, и обратиться к нему в тексте программы ST?

Системные ФБ не поддерживаются ( по крайней мере пока), но никто не мешает написать свои и они работают, проверено уже. 69425

Чем ST и хорош, вот такую портянку 69426 можно заменить 5 строками кода 69427Тут есть, например R_TRIG, SEL и MOD, которых пока тоже нет.

Рогов Алексей
11.08.2023, 08:15
Вот теперь два вопроса:
Как сделать ФБ энергонезависимым
Как их вызывать в программе, вот два входа, например
function_block RS_1 //имя функционального блока.

var_input //объявление входных переменных
S : bool; //входная переменная с типом данных bool - установка
R : bool; //входная переменная с типом данных bool - сброс

end_var

var_output //объявление выходных переменных
Q : bool; //выходная переменная с типом данных bool
end_var

var //объявление локальных переменных

RTrig : bool; //переменная «»
end_var

if R then
RTrig := false;
end_if
if S and not R then

RTrig := S;
end_if
if not R and RTrig then
RTrig := true;
end_if
Q := RTrig ;

end_function_block

rovki
11.08.2023, 08:43
Системные ФБ не поддерживаются ( по крайней мере пока), но никто не мешает написать свои и они работают, проверено уже. 69425

Чем ST и хорош, вот такую портянку 69426 можно заменить 5 строками кода 69427Тут есть, например R_TRIG, SEL и MOD, которых пока тоже нет.

Заменили 15квадратиков портянкой из 30 строк;) .В схеме сразу видно работу ,а тут еще читать строки нужно и представлять в голове общий алгоритм ,складывая строки...

melky
11.08.2023, 09:08
rovki читать надо разработчику макроса. Разработчику программы достаточно знать что выполняет макрос.

lagutin
11.08.2023, 09:16
Здраствуйте! А это у всех так. Какой то вирус обнаруживает? И главное прям блокировка полная. Его и в скачанных файлах даже нет и не просит типа "все равно запустить"... Выключать антивирус? У меня в общем то стандартный защитник на вин10...69429

Валенок
11.08.2023, 09:19
rovki читать надо разработчику макроса. Разработчику программы достаточно знать что выполняет макрос.
)) Когда макрос такой специализированный это одно и тоже лицо
(но я за ST если что)

melky
11.08.2023, 09:29
Валенок не важно, читать надо при разработке, чтобы макрос выполнял требуемое и не вызывал ошибок. Дальше уже не важно, если он выполняет свою функцию и занимает меньше места.

Не знаю, на чем Овен делал свое поделие, но проекты занимают архи много места на диске. Я уже показывал как-то, что можно многое сократить, но не уверен, что json это позволяет. Но вот кто делает этот json мог подумать головой и уменьшить размер проекта как минимум вдвое.
Плюс у них какая-то графическая ерунда, вместо координатной системы, что тоже увеличивает размеры проектов....

Рогов Алексей
11.08.2023, 09:35
Не знаю, как у Вас - но у меня предубеждение к линиям задержки, SR и Т триггерам. (много копий на эту тему сломано)... Уж лучше ST и похоже, использование текста здорово экономит память устройства. Так как быть с энергонезависимыми переменными? За подсказки спасибо, учусь. И как сделать реверсивный счётчик, чтобы в обратку целые числа не с максимально возможного считал, а с последнего или по внешней уставке, без линий задержки.

1exan
11.08.2023, 09:53
Не знаю, как у Вас - но у меня предубеждение к линиям задержки, SR и Т триггерам. (много копий на эту тему сломано)... Уж лучше ST и похоже, использование текста здорово экономит память устройства. Так как быть с энергонезависимыми переменными? За подсказки спасибо, учусь. И как сделать реверсивный счётчик, чтобы в обратку целые числа не с максимально возможного считал, а с последнего или по внешней уставке, без линий задержки.

Как только в программе на ST вы сначала читаете значение переменной, затем используете его в коде, а потом чуть ниже записываете эту переменную, то получаете ту-же линию задержки, только в виде суслика

melky
11.08.2023, 09:59
1exan хоть суслик и есть (а есть он всегда) зато его не видно :)

kondor3000
11.08.2023, 10:19
Не знаю, как у Вас - но у меня предубеждение к линиям задержки, SR и Т триггерам. (много копий на эту тему сломано)... Уж лучше ST и похоже, использование текста здорово экономит память устройства. Так как быть с энергонезависимыми переменными? За подсказки спасибо, учусь. И как сделать реверсивный счётчик, чтобы в обратку целые числа не с максимально возможного считал, а с последнего или по внешней уставке, без линий задержки.

Линия задержки это просто присвоение переменной через цикл. Ей надо научиться пользоваться, хорошая штука))) Аналог присвоения переменной через R_TRIG

По поводу реверсивного счётчика, добавьте на вход , переменную D и этот код. По сбросу на выход присваивается из переменной N,
можете переделать присвоение, через R_trig


if Res then Q := N; end_if // Код для 32 битного реверсивного счётчика CTUD
if U and not RTrig and not Res then Q := (Q + 1); RTrig := U; end_if
if D and not RTrig and not Res then Q := (Q - 1); RTrig := D; end_if
if not U and not D and RTrig then RTrig := false; end_if

melky
11.08.2023, 10:22
kondor3000 а напишите код на ST как сформировать аналог линии задержки пожалуйста. Чтобы в любой макрос вставить можно было.

kondor3000
11.08.2023, 10:37
а напишите код на ST как сформировать аналог линии задержки пожалуйста. Чтобы в любой макрос вставить можно было.

В макросах аналог не нужен, там линия задержки и так есть, а на ST это присвоение через F_Trig. Думаю F_Trig, сами напишите)

melky
11.08.2023, 10:38
Ну так я это и попросил показать кодом.

capzap
11.08.2023, 10:40
Ну так я это и попросил показать кодом.

сложно открыть библиотеку oscat и посмотреть как триггеры пишутся?

melky
11.08.2023, 10:43
capzap при чем тут сам триггер? речь о какой-то требуемой переменной, которая должна изменить свое состояние только на следующем цикле.

Кстати есть макрос от AI на 8 насосов, у него в ОЛ за счет линии обратной связи все считалось правильно. На CodeSys повторить не удалось, хотя вроде тоже сделали специальный FBD, эмулирующий линию задержки.
в том макросе наличие обратной связи было очень важным моментом.

capzap
11.08.2023, 10:47
capzap при чем тут сам триггер? речь о какой-то требуемой переменной, которая должна изменить свое состояние только на следующем цикле.

Кстати есть макрос от AI на 8 насосов, у него в ОЛ за счет линии обратной связи все считалось правильно. На CodeSys повторить не удалось, хотя вроде тоже сделали специальный FBD, эмулирующий линию задержки.
в том макросе наличие обратной связи было очень важным моментом.

так Вы раскройте хоть раз в жизни исходники, да даже пускай это standart.lib там как раз реализация RS триггера будет и найдете как линия задержки выполняется. Только посты строчите не задумываясь

Pvalp
11.08.2023, 11:02
Вот теперь два вопроса:
Как сделать ФБ энергонезависимым
Как их вызывать в программе, вот два входа, например
function_block RS_1 //имя функционального блока.

var_input //объявление входных переменных
S : bool; //входная переменная с типом данных bool - установка
R : bool; //входная переменная с типом данных bool - сброс

end_var

var_output //объявление выходных переменных
Q : bool; //выходная переменная с типом данных bool
end_var

var //объявление локальных переменных

RTrig : bool; //переменная «»
end_var

if R then
RTrig := false;
end_if
if S and not R then

RTrig := S;
end_if
if not R and RTrig then
RTrig := true;
end_if
Q := RTrig ;

end_function_block

Добрый день.
А как поведет себя макрос, когда if S and R..., это задумывалось как RS или SR триггер?

melky
11.08.2023, 11:08
блин, я спросил, так куча вопросов и наставлений. Привести код для примера было бы быстрее.
з.ы. не силен в ST...

Валенок
11.08.2023, 11:14
Линия задержи:
отправка данных в "точку взятия" для следующего цикла == "Точка взятия" юзает данные с прошлого цикла
Пример кода:

i++

Рогов Алексей
11.08.2023, 11:14
Добрый день.
А как поведет себя макрос, когда if S and R..., это задумывалось как RS или SR триггер?

Это как пример, и это RS триггер, с лишней веткой. SR всё - таки не для промышленности, вероятно для аварийного освещения или пожаротушения. В промке главное стоп и аварийный стоп

melky
11.08.2023, 12:05
Валенок ну ты как всегда лаконичен, но нифига понятнее не стало :)

IVM
11.08.2023, 12:13
Заменили 15квадратиков портянкой из 30 строк;) .В схеме сразу видно работу ,а тут еще читать строки нужно и представлять в голове общий алгоритм ,складывая строки...

Процесс запущен и не надо пытаться остановить поезд, набирающий ход.;) Кому квадратики, а кому строки. Свобода выбора - это всегда хорошо.

Рогов Алексей
11.08.2023, 12:19
Процесс запущен и не надо пытаться остановить движущийся поезд.;) Кому квадратики, а кому строки. Свобода выбора - это всегда хорошо.

При построчном воспроизведении изображения - из телевидения - не забываем гасить обратный ход луча. К теме сусликов. Обратный ход луча не видно (если погашен) но он существует.

IVM
11.08.2023, 12:22
При построчном воспроизведении изображения - из телевидения - не забываем гасить обратный ход луча. К теме сусликов. Обратный ход луча не видно (если погашен) но он существует.

Вы кажется не тот пост комментируете У меня в посте никаких сусликов нет.;)

Валенок
11.08.2023, 12:51
Валенок ну ты как всегда лаконичен, но нифига понятнее не стало :)
i++
=>
i := i + 1;

Что в i ? => то. что было до того
Что было до того ? => то, что было после предыдущего цикла

Валенок
11.08.2023, 13:00
Это как пример, и это RS триггер, с лишней веткой. SR ...
После таких примеров rovki и недоволен кол-вом строк))

function_block RS

var_input
S : bool; //установка
R : bool; //сброс
end_var

var_output
Q : bool;
end_var

Q := not R and (Q or S);

end_function_block


function_block SR

var_input
S : bool; //установка
R : bool; //сброс
end_var

var_output
Q : bool;
end_var

Q := (Q and not R) or S;

end_function_block

melky
11.08.2023, 13:00
i++ это же увеличение переменной на 1, что тоже самое что и i := i + 1

или я чего-то не догоняю в ST? а как при этом с переменными float, bool, отрицательным int ?
Точно самому надо разбираться, чем понять вышеописанное :)

Валенок
11.08.2023, 13:04
i++ это же увеличение переменной на 1, что тоже самое что и i := i + 1..
пропустили выше ..

petera
11.08.2023, 14:08
Задержка на один цикл

VAR_INPUT
IN: UDINT;
END_VAR
VAR_OUTPUT
OUT: UDINT;
END_VAR
VAR
M: UDINT;
END_VAR

OUT:= M;
M:= IN;

melky
11.08.2023, 14:57
petera Big Thanks...

Что-то мне сдается, что если использовать, используя R-Trig то само значение будет задерживаться на два цикла, так как еще необходимо сам R-Trig дергать каждый цикл

Код приведенный kondor3000 больше напоминает MOVE с EN + задержка(или без задержки)

melky
11.08.2023, 15:36
Как у вас макросы сохранялись? Так и ФБ и функции, только у них свои папки.

А я так и не понял, как сохранить в отдельный файл FB на ST, покажите скринами. Только Создание макроса доступно при их отсутствии, а FB есть в проекте.

Имеется ввиду как сохранение макроса в виде файла tpl, tple для загрузки в другом проекте

petera
11.08.2023, 16:05
А я так и не понял, как сохранить в отдельный файл FB на ST, покажите скринами. Только Создание макроса доступно при их отсутствии, а FB есть в проекте.

Имеется ввиду как сохранение макроса в виде файла tpl, tple для загрузки в другом проекте
Сохраняй код как текстовый документ и копи/пасте в другом проекте

Денисов Максим Сергеевич
11.08.2023, 16:11
А я так и не понял, как сохранить в отдельный файл FB на ST, покажите скринами. Только Создание макроса доступно при их отсутствии, а FB есть в проекте.

Имеется ввиду как сохранение макроса в виде файла tpl, tple для загрузки в другом проекте

Пока это недоступно, сейчас работаем над этим, выпустим данный функционал осенью

kondor3000
11.08.2023, 16:15
А я так и не понял, как сохранить в отдельный файл FB на ST, покажите скринами. Только Создание макроса доступно при их отсутствии, а FB есть в проекте.

Имеется ввиду как сохранение макроса в виде файла tpl, tple для загрузки в другом проекте

Пока копипастом, для себя сделал шаблон с рукописными основными функциями и ФБ.

melky
11.08.2023, 16:27
Понятно, спасибо. А то увидел про сохранение и начал искать где... и ушел в ступор... :)

kondor3000
11.08.2023, 20:09
Пример таймера TON, который можно использовать в ФБ 69439
Для работы таймера нужна подача системных секунд, и задача РТ в секундах, линия задержки программная.


function_block TON // ФБ TON

var_input //объявление входных переменных
In : bool; // Вход включения (выключения) таймера
S : udint; // Подача системных секунд
PT : udint; // Задача времени таймера в сек.
end_var
var_output //объявление выходных переменных
Q : bool; // Выход таймера
ET: udint; //выходная переменная с типом данных udint
end_var
var //объявление локальных переменных
S1 : udint; // Аналог Линии задержки
end_var

if IN and ET<PT and S<>S1 then
S1:=S; ET:=ET+1; else ET:=ET; end_if

if IN and ET=PT then
ET:=ET; Q:=true; end_if

if not IN then
ET:=0; Q:=false; end_if

end_function_block


И пример вызова таймера в ФБ,


var_input //объявление входных переменных
In : bool;
Sek : udint;
end_var
var_output //объявление выходных переменных
Q : bool;
ET: udint;
end_var

var //объявление локальных переменных
S1 : udint;
TON1:TON;
end_var

TON1(In:=In,S:=Sek,PT:=10,Q=>Q,ET=>ET);

end_function_block

rovki
11.08.2023, 20:16
rovki читать надо разработчику макроса. Разработчику программы достаточно знать что выполняет макрос.

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

rovki
11.08.2023, 20:26
Думал, что ST в овен лоджике расширит возможности для разработчиков программ, а тут соревнуются как сделать элементарный триггер, линию задержки, таймер...Занять ся что ли нечем... Или это для тех кто не владеет фбд???Адепты ПЛК 63;), назад в будущее :p

Валенок
11.08.2023, 23:54
.. как сделать элементарный триггер, линию задержки, таймер...
Дык в ST (верю что пока) недоступен полный квадратиковый функционал. Банальная подготовка базовых инструментов.

IVM
12.08.2023, 00:23
Думал, что ST в овен лоджике расширит возможности для разработчиков программ, а тут соревнуются как сделать элементарный триггер, линию задержки, таймер...Занять ся что ли нечем... Или это для тех кто не владеет фбд???Адепты ПЛК 63;), назад в будущее :p

Квадратики в FBD не пустые ящики, они имеют внутреннее наполнение. Ранее новые FB могли создавать только программисты ОВЕН, теперь это может делать любой пользователь, владеющий ST. Как это легко делается было наглядно показано. Простор для творчества пытливого ума значительно расширился.;)

melky
12.08.2023, 10:51
rovki фокус в другом, в возможностях.

Пример как вы говорите элементарный TON с выходом ET сколько прошло времени. На квадратиках с использованием написанного программистами Овен Ton в недрах firmware ПРки вывод времени работы таймера приводит к добавлению новый квадратиков. И так по различным FB....

cond33
12.08.2023, 13:15
Не хватает в ФБ системных переменных времени которые инкрементировались бы каждые 1мс, 10мс, 100мс, 1с. Они бы сильно упростили задачи работающие по времени в ФБ (например ПИД регуляторы, функция рампы и др.).

rovki
12.08.2023, 13:52
Дык в ST (верю что пока) недоступен полный квадратиковый функционал. Банальная подготовка базовых инструментов.

А зачем их дублировать ,создавать в ST????

rovki
12.08.2023, 13:55
Квадратики в FBD не пустые ящики, они имеют внутреннее наполнение. Ранее новые FB могли создавать только программисты ОВЕН, теперь это может делать любой пользователь, владеющий ST. Как это легко делается было наглядно показано. Простор для творчества пытливого ума значительно расширился.;)

Так макросы же были -тыщи...зачем их дублировать в ФБ , а не создавать новые ?

rovki
12.08.2023, 14:00
rovki фокус в другом, в возможностях.

Пример как вы говорите элементарный TON с выходом ET сколько прошло времени. На квадратиках с использованием написанного программистами Овен Ton в недрах firmware ПРки вывод времени работы таймера приводит к добавлению новый квадратиков. И так по различным FB....

Все это уже реализовано в макросах давно...Нового функционала для создания проектов не заметил . Вижу только ,что новые программисты подтянулись к ПР, те кто на ST работал. НО тогда это просто маркетинг(расширение пользовательской аудитории) ,а не расширение функционала.

melky
12.08.2023, 14:12
rovki кроме вопросов реализации имеет место еще понятия объема информации для достижения той же цели.
Ну и почему народ начал просить ST изначально вспомните? - массивы и еще что-то, что в квадратиках в принципе было недоступно никогда.

IVM
12.08.2023, 14:40
Так макросы же были -тыщи...зачем их дублировать в ФБ , а не создавать новые ?

Макросы при помощи квадратиков создаются. Это не во всех случаях удобно. Никто не собирается дублировать макросы. А вот при создании чего-то нового можно будет подумать делать макрос в квадратиках или FB на ST.

Валенок
12.08.2023, 15:29
А зачем их дублировать ,создавать в ST????
пишу

var
x : rtrig;
end_var
а там - дуля. Я ж сказал:

в ST .. недоступен полный квадратиковый функционал



...Никто не собирается дублировать макросы...
Поправлю для специально для rovki
Никто не собирается дублировать доступные макросы

Валенок
12.08.2023, 15:40
Не хватает в ФБ системных переменных времени которые инкрементировались бы каждые 1мс, 10мс, 100мс, 1с. Они бы сильно упростили задачи работающие по времени в ФБ (например ПИД регуляторы, функция рампы и др.).
Сильно поддерживаю.
Хотя бы 1 функцию (доступную и в ST и в квадратиках) - циклический счетчик мс типа GetTickCount
Пусть даже будет неюзаемая входная палка.
Или системная переменная (хоть и readonly)

Lukas
12.08.2023, 17:55
Не понимаю вообще? Почему, пользователи ST не хотят использовать ПЛК. Ведь они поддерживают в полной мере ST? Зачем лезете в реле которое изначально создано для тех кто "мыслит на языке электрических схем, и цифровой логики"?. Уверен, что дальнейшая интеграция реле в ST приведет к отказу большой части потребителя. Популярность ПР именно в использовании простого, понятного программирования для простых электриков. (вспомните самую первую среду разработки ПР )

1exan
12.08.2023, 18:09
Не понимаю вообще? Почему, пользователи ST не хотят использовать ПЛК. Ведь они поддерживают в полной мере ST? Зачем лезете в реле которое изначально создано для тех кто "мыслит на языке электрических схем, и цифровой логики"?. Уверен, что дальнейшая интеграция реле в ST приведет к отказу большой части потребителя. Популярность ПР именно в использовании простого, понятного программирования для простых электриков. (вспомните самую первую среду разработки ПР )

Тоже не понимаю почему мыслители "электрическими схемами" используют FBD в OL, а не пользуют LD в ПЛК, наслаждаясь в полной мере контактами и катушками реле.

Lukas
12.08.2023, 18:33
сами то верите в то что написали? Популярность ПР не в простоте, а в дешевизне относительно плк. С такой логикой как у Вас предположу что Вы фанат кнопочного телефона, ведь изначально он создан чтоб звонить. Про дальнейшую интеграцию вообще не понятно, кто то у Вас отбирает квадратики? Именно для Вас, квадрратоделов, стараются делать упрощенную реализацию "скользящих" окон для нахождения среднего и т.п. дополнений

Отвечу просто: Пользуйся смартфоном. Кнопочный оставь "квадратоделам". Так понятнее?

Lukas
12.08.2023, 18:36
Тоже не понимаю почему мыслители "электрическими схемами" используют FBD в OL, а не пользуют LD в ПЛК, наслаждаясь в полной мере контактами и катушками реле.

Было же для особо одаренных написано: электрических схем, и цифровой логики. Зачем вырвал кусок? Так не прилично.

rovki
12.08.2023, 19:02
Макросы при помощи квадратиков создаются. Это не во всех случаях удобно. Никто не собирается дублировать макросы. А вот при создании чего-то нового можно будет подумать делать макрос в квадратиках или FB на ST.
Пока только это и наблюдаю..

rovki
12.08.2023, 19:06
rovki кроме вопросов реализации имеет место еще понятия объема информации для достижения той же цели.
Ну и почему народ начал просить ST изначально вспомните? - массивы и еще что-то, что в квадратиках в принципе было недоступно никогда.

Наверное мне не повезло- в своих сотнях проектов на ПР так и не удалось переполнить память или стек, не задумывался об оптимальности кода (просто его не видел). И массивы были и очереди...
Просили одно, а делают другое, что не пост, так тревиальщина.

1exan
12.08.2023, 19:10
Было же для особо одаренных написано: электрических схем, и цифровой логики. Зачем вырвал кусок? Так не прилично.

Ну так те кто используют ST, тоже иногда мыслят "цифровой логикой"

rovki
12.08.2023, 19:13
Сильно поддерживаю.
Хотя бы 1 функцию (доступную и в ST и в квадратиках) - циклический счетчик мс типа GetTickCount
Пусть даже будет неюзаемая входная палка.
Или системная переменная (хоть и readonly)

Не, пусть будет st. Может когда появятся ФБ, которые не возможно реализовать на фбд. ПЛК стоит в два раза дороже. Маркетинг...

rovki
12.08.2023, 19:24
В условиях малых сил программистов овен лоджик, одно беспокоит - в угоду маркетинга не реализовали десяток хотелок от пользователей ПР... А так пусть будет на всякий случай ST, разработчики услышали и решили поправить финансовое положение за счёт Тех кто использовал ПЛК, но...

rovki
12.08.2023, 19:41
Есть куча задач, которые практически не возможно реализовать на фбд и на ПР. При ограничениях быстродействия входов, малого количества интерфейсов.. На днях сдал заказчику установку для оплавления подстроечных резисторов. Попробовал сделать на фбд, помучился и сын сделал в коде. Получилось около 5000 строк на С.. Управление 3 шаговиками..со всякими автоподстройками.. Получилось типа 3д принтера... И, внимание.... Контроллер ардуино нано,...
https://youtube.com/shorts/IqbaC2UJyeI

Lukas
12.08.2023, 20:20
Ну так те кто используют ST, тоже иногда мыслят "цифровой логикой"

Иногда! В случае с ПР подразумевалось ВСЕГДА!

capzap
12.08.2023, 20:27
Иногда! В случае с ПР подразумевалось ВСЕГДА!

ну и кто из адептов квадратиков пользуется только таблицами истинности? Иные даже возмущаются что я упоминаю про анализ и синтез схем

Lukas
12.08.2023, 20:52
ну и кто из адептов квадратиков пользуется только таблицами истинности? Иные даже возмущаются что я упоминаю про анализ и синтез схем

Ну я иногда пользуюсь таблицами истинности. И? И? Ты упоминай хоть что. Но изначально ПР был разработан для пользователей электрических схем и цифровой логики. И популярным ПР стал именно по этому! А теперь "почитатели текстового языка" ввиду более дешевой стоимости и не желания вникать в "квадратики" пытаются внедрить ST в среду разработки. Дальнейшим шагом будет вытеснение FBD из лоджика совсем! Так идите вы в/на ПЛК сейчас! И не трогайте ПР!

IVM
12.08.2023, 21:11
Никак не могу понять почему пользователей FBD так возмущается появлением ST в OL, чем он им мешает ?

Валенок
12.08.2023, 21:12
Не, пусть будет st...
Вам - не надо, не вопрос. Я согласен на "только в ST".
Видите как отвечает ST-шник. В отличии от :

.. Так идите вы в/на ПЛК сейчас! И не трогайте ПР!..



Не, пусть будет st...
Но самое главное - это была просьба о расширении функционала лоджика. Не ST, не FB - а именно Лоджика. В Лоджике есть простой способ замера времени между двумя событиями в мс ? (не путать с циклами которые могут плавать)

Валенок
12.08.2023, 21:15
... что не пост, так тревиальщина.
Вы видимо не внимательны. (повтор):

...Никто не собирается дублировать макросы...
Поправлю для специально для rovki
Никто не собирается дублировать доступные макросы

Валенок
12.08.2023, 21:21
А теперь "почитатели текстового языка" ввиду более дешевой стоимости..
Уважаемый Lukas !
Ваши деньги меня не волнуют, почему Вас волнуют мои ?

Валенок
12.08.2023, 21:30
Никак не могу понять почему пользователей FBD так возмущается появлением ST в OL, чем он им мешает ?
Всё - было
69499

Сергей0308
12.08.2023, 21:38
Они разбираются в ST, и могут на нём сделать круче чем в ОЛ на FBD, но тут безграмотные(как они считают) люди, которые в ST совсем не шарят делают из них(из большинства из них) клоунов, поэтому они и недолюбливают "квадратики", а соревноваться на равных в квадратиках им мозгов не хватает! Даже не совсем так, зачем им голову ломать, если на ST им это можно легко сделать!
Так это они с ПЛК в ПР припёрлись, а не на оборот! В смысле, хотят прийти в монастырь со своим уставом!

Валенок
12.08.2023, 21:43
...
Так это они с ПЛК в ПР припёрлись, а не на оборот! В смысле, хотят прийти в монастырь со своим уставом!
Ну вот видите, IVM ? Всё - было.





...зачем им голову ломать, если на ST им это можно легко сделать..
И действительно, зачем делать легко когда можно голову ломать ))

wwowa
12.08.2023, 21:46
Пошли "священные войны" всегда заканчивающиеся затяжной позиционной войной:rolleyes:
Вот плагиат из кодесис пид-а. Вроде все работает на первый взгляд. И процесс копипаста занимает очень мало времени. По мне бы лучше справку они подтянули на уровень.. Для многих было бы полезней.ИМХО.https://drive.google.com/file/d/1qCtcdziUGgW8y-u4CVLMf5zc9D_fxOQt/view?usp=drive_link

IVM
12.08.2023, 22:13
Они разбираются в ST, и могут на нём сделать круче чем в ОЛ на FBD, но тут безграмотные(как они считают) люди, которые в ST совсем не шарят делают из них(из большинства из них) клоунов, поэтому они и недолюбливают "квадратики", а соревноваться на равных в квадратиках им мозгов не хватает! Даже не совсем так, зачем им голову ломать, если на ST им это можно легко сделать!
Так это они с ПЛК в ПР припёрлись, а не на оборот! В смысле, хотят прийти в монастырь со своим уставом!

Эта писанина похожа на бред. Представители ST не имеют никаких претензий к тем, кто программируется в OL на FBD. Каждый сам решает какой язык и железо использовать.

Сергей0308
12.08.2023, 22:48
Всё правильно валенок пишет - это конкуренция чистой воды! В смысле, цены поднялись и ПР быстро развивается, поэтому многие стали на ПР переходить, где возможностей ПР хватает! А там FBD, сторонники ST лишаются части пирога, поэтому недолюбливают сторонников FBD и лоббируют ST в ОЛ! Хотя в ОЛ и ПР других, более актуальных проблем и недостатков хватает. Улучшений и расширения функционала годами ждут и не могут дождаться сторонники ПР, например сигналов нажатия кнопок в программе. Просто так ничего не бывает!

kondor3000
12.08.2023, 22:57
Если кому то интесесно, пока тут перепалка идёт, переписал среднюю программу с Макросов на ФБ и функции. 69500
Задействованная память увеличилась немного, на 1-2% зато вес файлов уменьшился больше чем в 2 раза. Скрин

Прогр управление 6 нагрузками 6 реж 12 шагов _Макросы_фунции_5.owle 234 Кб
Прогр управление 6 нагрузками 6 реж 12 шагов_5_2_ФБ_функции_.owle 109 Кб

Валенок
12.08.2023, 23:05
Прогр управление 6 нагрузками 6 реж 12 шагов _Макросы_фунции_5.owle 234 Кб
Прогр управление 6 нагрузками 6 реж 12 шагов_5_2_ФБ_функции_.owle 109 Кб
А сами то программы где?

kondor3000
12.08.2023, 23:09
А сами то программы где?

Программы интелектуальная собственность))) За основу взят ваш Шаговик, переделанный и дописанный)

Сергей0308
12.08.2023, 23:17
Программы интелектуальная собственность))) За основу взят ваш Шаговик, переделанный и дописанный)

Ситникова на Вас нет, тот сразу бы объяснил чья это собственность, если за основу взят чей то код!

kondor3000
12.08.2023, 23:20
Ситникова на Вас нет, тот сразу бы объяснил чья это собственность, если за основу взят чей то код!

Так и не выкладываю, пусть автор Валенок выложит, тем более он тут.

Валенок
12.08.2023, 23:24
Да я уж и не сохранил )) Это ж был просто пример. Если внезапно есть тот пример - любопытно было посмотреть на предмет текущего наличия еще и макросов (хотя более правильно - функ.блоков)

kondor3000
12.08.2023, 23:47
Да я уж и не сохранил )) Это ж был просто пример. Если внезапно есть тот пример - любопытно было посмотреть на предмет текущего наличия еще и макросов (хотя более правильно - функ.блоков)

Вот оригинал Шаговик, автор Валенок
Переделанный Макросы и функции
Новый, ФБ и Функции

Если поставить задержку на всех 6 Входах в блоки State, то пропадёт жёлтое предупреждение.

IVM
13.08.2023, 00:41
Всё правильно валенок пишет - это конкуренция чистой воды! В смысле, цены поднялись и ПР быстро развивается, поэтому многие стали на ПР переходить, где возможностей ПР хватает! А там FBD, сторонники ST лишаются части пирога, поэтому недолюбливают сторонников FBD и лоббируют ST в ОЛ! Хотя в ОЛ и ПР других, более актуальных проблем и недостатков хватает. Улучшений и расширения функционала годами ждут и не могут дождаться сторонники ПР, например сигналов нажатия кнопок в программе. Просто так ничего не бывает!

В CoDeSys 5 языков программирования. Я так думаю это для того что бы всем удобно было. А ты как думаешь ?

Сергей0308
13.08.2023, 01:21
В CoDeSys 5 языков программирования. Я так думаю это для того что бы всем удобно было. А ты как думаешь ?

Для удобства кого? Вы серьёзно так думаете или притворяетесь? Допустим один пользователь пишет(программирует) на ST, другой на FBD, каждому из них до лампочки, что там ещё 4 языка присутствует, будь там хоть 100 языков! Это увеличит число потенциальных пользователей ПО при остальных равных условиях. Для удобства пользователей создают и расширяют библиотеки, интерфейс ПО, вот в ОЛ эти проклятые подсказки замучали(вчера мучился), выскакивают и не дают линию связи провести, короче, для удобства не могут даже эти подсказки убрать, столько все на них сетовали, это же вредительство чистой воды, просто нет слов!
Короче, это делается чтобы больше пользователей было и ради большей прибыли, чтобы не проиграть в конкурентной борьбе. В смысле, с развитием новых языков их добавляют(не так давно МЗТА добавила ST, у них собственное ПО), чтобы пользователи на этих языках не ушли к конкурентам! Производителям ПЛК и ПР в принципе до лампочки на каком языке их будут программировать, им главное, чтобы их покупали! Овену особого смысла нет ST в ОЛ развивать, тогда их ПЛК будут меньше покупать! Я так думаю, это делается для развития собственного ПО, как у МЗТА, чтобы со временем отказаться от CoDeSys! Овен своих планов не скрывает! Вот над пользователями ПР и экспериментируют, как над мышами!

capzap
13.08.2023, 07:51
ST в ОЛ свершившийся факт и появившийся не вчера, что все пытаются оспорить не понятно. Если кому то не нравятся недоработки на холсте, текстовый (альтернативный) язык лишен этого, комментарии можете писать сколько угодно большого объема, есть циклы, есть массивы которых нет в квадратах и реализация таковых громоздкая или вообще не реализуемая, в конце концов в тексте при большом желании можно отработать функционал на других компьютерных языках где присутствует модульное тестирование (https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%BE%D 0%B5_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0 %B2%D0%B0%D0%BD%D0%B8%D0%B5), если код выходит за рамки функционала таких библиотек как oscat

rovki
13.08.2023, 10:48
Если кому то интесесно, пока тут перепалка идёт, переписал среднюю программу с Макросов на ФБ и функции. 69500
Задействованная память увеличилась немного, на 1-2% зато вес файлов уменьшился больше чем в 2 раза. Скрин

Прогр управление 6 нагрузками 6 реж 12 шагов _Макросы_фунции_5.owle 234 Кб
Прогр управление 6 нагрузками 6 реж 12 шагов_5_2_ФБ_функции_.owle 109 Кб

Для пользователя важна занимаемая память в МК , а не величина файла на ПК..

Валенок
13.08.2023, 10:58
Короче, это делается чтобы больше пользователей было и ради большей прибыли, чтобы не проиграть в конкурентной борьбе.!
2+2=4
69525


... будь там хоть 100 языков! Это увеличит число потенциальных пользователей ПО при остальных равных условиях. Для удобства пользователей создают и расширяют библиотеки, интерфейс ПО,.....
Тут напутана причинно-следственная часть. Нужно:

Для удобства пользователей создают и расширяют библиотеки, интерфейс ПО,..... это увеличит число потенциальных пользователей ПО
Как Вы думаете зачем в кинотеатрах мучают клиентов мягкими креслами ? Ради удобства клиентов ?


.... вот в ОЛ эти проклятые подсказки замучали(вчера мучился), выскакивают и не дают линию связи провести,..
Желтая линия замучила ?


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


...Овену особого смысла нет ST в ОЛ развивать, тогда их ПЛК будут меньше покупать! ..
Т.е. Вы считате что если человеку удобней на ST, которого нет в ПР, он метнется на Овен-ПЛК старт которого от 40тыр ?
ПЛК покупают из-за бОльших возможностей, но пока могут покупать. И одна из возможностей - ST. Когда в задаче именно это станет определяющим

... не так давно МЗТА добавила ST ...




...Вот над пользователями ПР и экспериментируют, как над мышами!
И что не так с пользователями ПР ? Их принудительно заставляют пользоватся ST ? Этот вопрос звучит через страницу но внятного ответ до сих пор нет.

rovki
13.08.2023, 11:02
Сейчас есть онлайн база макросов, а есть ли аналогичная база для ФБ, что бы "квадратисты" могли воспользоваться в своих проектах??? Вот тогда ОЛ будет одно целое, а не как сейчас - отдельно для "художников" и отдельно для "писателей" ...

rovki
13.08.2023, 11:07
2+2=4
И что не так с пользователями ПР ? Их принудительно заставляют пользоватся ST ? Этот вопрос звучит через страницу но внятного ответ до сих пор нет.

Да нет же. ОЛ делает 1(1,5) программиста. Люди годами просят расширить функционал ОЛ ,который не относится к языку да же, а тут все силы бросаются на ST. Потому такая реакция. Думаю внятно ответил. Все банально и прозаично.
А если LD поднянуть ,то еще пользователей добавиться, но застонут квадратисты и строчкисты . В FLProg есть FBD, LD и возможность создавать блоки пользователей (БП) на FBD и С++ это аналог макросов и ФБ. И там тоже один автор- Сергей Глущенко. Как то успевает...

Валенок
13.08.2023, 11:09
Для пользователя важна занимаемая память в МК , а не величина файла на ПК..
Для пользователя важно быстрое решение поставленной задачи.

rovki
13.08.2023, 11:22
.https://owen.ru/forum/attachment.php?attachmentid=69526&d=1691911124
А может Маркс ошибался - не всегда огромная прибыль суть преступления ??? В век научно технического прогресса.

Валенок
13.08.2023, 11:23
Да нет же. ОЛ делает 1(1,5) программиста. Люди годами просят расширить функционал ОЛ ,который не относится к языку да же,
Видимо расширение только функционала ПР не настолько окупает ЗП 1(1,5) программиста что можно положить на расширение клиентской базы при использовании ST.
"а тут все силы бросаются на ST" - видимо что-то (например что КДС - немецкая) повлияло. МТЗА опять же.

rovki
13.08.2023, 11:25
Для пользователя важно быстрое решение поставленной задачи.

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

rovki
13.08.2023, 11:27
Видимо расширение только функционала ПР не настолько окупает ЗП 1(1,5) программиста что можно положить на расширение клиентской базы при использовании ST.
"а тут все силы бросаются на ST" - видимо что-то (например что КДС - немецкая) повлияло. МТЗА опять же.

Согласен - чисто менеджерский подход. Даже следующий шаг в этом направлении подсказал.

capzap
13.08.2023, 11:41
Сейчас есть онлайн база макросов, а есть ли аналогичная база для ФБ, что бы "квадратисты" могли воспользоваться в своих проектах??? Вот тогда ОЛ будет одно целое, а не как сейчас - отдельно для "художников" и отдельно для "писателей" ...

https://ftp.owen.ru/CoDeSys3/98_Books/oscat_basic333_ru.pdf Третий раз уже упомяну в этой теме

Валенок
13.08.2023, 11:43
А может Маркс ошибался - не всегда огромная прибыль суть преступления..
Не ошибался. Только Вы слова перевернули

Валенок
13.08.2023, 11:47
Это не связано с обьемом памяти проекта в файле для одной и той же задачи
Но связано с особенностями яыка

IVM
13.08.2023, 11:48
Сейчас есть онлайн база макросов, а есть ли аналогичная база для ФБ, что бы "квадратисты" могли воспользоваться в своих проектах??? Вот тогда ОЛ будет одно целое, а не как сейчас - отдельно для "художников" и отдельно для "писателей" ...

Глазом не успеете моргнуть как появится база ФБ, но не аналогичная, а дополняющая базу макросов.

Валенок
13.08.2023, 11:50
..
А если LD поднянуть ,то еще пользователей добавиться, но застонут квадратисты и строчкисты . ..
Строчкисти нигде выше пока стонали.
И КДС как-то не стонут. Им - пофиг т.к. нет ничего в LD чего не было бы в ST
Квадратисты стонут по самому факту появления ST

IVM
13.08.2023, 11:52
Да нет же. ОЛ делает 1(1,5) программиста. Люди годами просят расширить функционал ОЛ ,который не относится к языку да же, а тут все силы бросаются на ST. Потому такая реакция. Думаю внятно ответил. Все банально и прозаично.
А если LD поднянуть ,то еще пользователей добавиться, но застонут квадратисты и строчкисты . В FLProg есть FBD, LD и возможность создавать блоки пользователей (БП) на FBD и С++ это аналог макросов и ФБ. И там тоже один автор- Сергей Глущенко. Как то успевает...

А пользователи FLProg то же стонут по поводу трёх языков или радуются ?

Валенок
13.08.2023, 11:54
... а не как сейчас - отдельно для "художников" и отдельно для "писателей" ...
Да ? Сейчас:
В квадратиках можно юзать ST-функции/блоки, есть доступ к сетевым переменным и т.п.
В ST нельзя юзать ФБ-макросы, нет доступа к сетевым и т.п

Квадратисты:
Не надо нам ST !!

Строчкисты:
Сделайте ВСЕМ GetTickCount, сделайте И квадратистам доступ к битам через точку ...

IVM
13.08.2023, 12:02
Квадратисты, не надо посыпать голову пеплом. Осваивайте ST !!!

Валенок
13.08.2023, 12:17
Квадратисты, не надо посыпать голову пеплом. Осваивайте ST !!!
Ну вот зачем Вы их пугаете ?
Если они ранее обходились без ST то сейчас могут обходится без ST. Инструментарий же не сузился.
Если только сами захотят.

IVM
13.08.2023, 12:37
Ну вот зачем Вы их пугаете ?
Если они ранее обходились без ST то сейчас могут обходится без ST. Инструментарий же не сузился.
Если только сами захотят.

Я не пугаю и заставляют, а даю совет. Ученье свет...

rovki
13.08.2023, 13:06
А пользователи FLProg то же стонут по поводу трёх языков или радуются ?

Радуются, потому что блоки создаются для работы в FBD , а сами блоки пишут "избранные" которые пишут в коде для квадратистов. Вот такой симбиоз

rovki
13.08.2023, 13:08
Да ? Сейчас:
В квадратиках можно юзать ST-функции/блоки, есть доступ к сетевым переменным и т.п.
В ST нельзя юзать ФБ-макросы, нет доступа к сетевым и т.п

Квадратисты:
Не надо нам ST !!

Строчкисты:
Сделайте ВСЕМ GetTickCount, сделайте И квадратистам доступ к битам через точку ...

Я про базу ОНЛАЙН ФБ. Пока не будет базы с общим доступом , будут такие разговоры

rovki
13.08.2023, 13:13
Инструментарий же не сузился.
.
Но и не расширился, давно просил сделать плоттер- вывод данных из онлайн отладки на графики из заданных точек .И еще десяток фишек...

IVM
13.08.2023, 14:47
Но и не расширился, давно просил сделать плоттер- вывод данных из онлайн отладки на графики из заданных точек .И еще десяток фишек...

А для чего это надо ?

capzap
13.08.2023, 15:14
А для чего это надо ?

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

IVM
13.08.2023, 15:47
Появление ST в OL - это свершившимся факт, отмотать историю назад не получится. Квадратчикам надо это четко понять и успокоиться. То что ОВЕН не желает исполнять хотелки отдельных пользователей не имеет к продвижению ST никакого отношения.

IVM
13.08.2023, 15:56
Допустим один пользователь пишет(программирует) на ST, другой на FBD, каждому из них до лампочки, что там ещё 4 языка присутствует, будь там хоть 100 языков.
Вот вы пишите на FBD и вам должно быть до лампочки (сами сказали ;)) что есть ещё ST. Ан нет, вам почему-то очень не нравится что в OL есть еще ST.

Мне FBD не до лампочки. В проектах для ПЛК я всегда использую и ST и FBD, они прекрасно дополняют друг друга. Теперь это стало возможным и в ПР.

Сергей0308
13.08.2023, 17:15
Вот вы пишите на FBD и вам должно быть до лампочки (сами сказали;)) что есть ещё ST. Ан нет, вам почему-то очень не нравится что есть еще ST.

Вы поймите, мне до лампочки ST появится или LD! Раздражает вовсе не это, а что элементарные косяки не могут поправить(уже писал об этом)! Просто с ST их ещё больше будет, вот и весь очевидный расклад! Если в более простых(примитивных) вещах не можешь "разобраться", в более сложные вещи лучше совсем не соваться, только людей насмешишь! В итоге ни первое ни второе до ума не доведут в обозримом будущем и от этого никто не выиграет, все останутся в проигрыше, а планы можно писать какие угодно, мечтать не вредно!

IVM
13.08.2023, 17:43
Вы поймите, мне до лампочки ST появится или LD! Раздражает вовсе не это, а что элементарные косяки не могут поправить(уже писал об этом)! Просто с ST их ещё больше будет, вот и весь очевидный расклад! Если в более простых(примитивных) вещах не можешь "разобраться", в более сложные вещи лучше совсем не соваться, только людей насмешишь! В итоге ни первое ни второе до ума не доведут в обозримом будущем и от этого никто не выиграет, все останутся в проигрыше, а планы можно писать какие угодно, мечтать не вредно!

Не надо нагнетать. Все будет хоршо.

rovki
13.08.2023, 18:34
А для чего это надо ?

А что плохого в осциллографе.? Сразу скажу, что не пользуюсь симулятором практически... Но многим визуализация онлайн с использованием аналоговых сигналов не помешает.

rovki
13.08.2023, 18:38
Вот вы пишите на FBD и вам должно быть до лампочки (сами сказали ;)) что есть ещё ST. Ан нет, вам почему-то очень не нравится что в OL есть еще ST.

Мне FBD не до лампочки. В проектах для ПЛК я всегда использую и ST и FBD, они прекрасно дополняют друг друга. Теперь это стало возможным и в ПР.

Да, только там куча готовых библиотек и кодекс не прогрммеры овен пишут.

rovki
13.08.2023, 18:46
Люди не против нового языка, уясните наконец. Людей возмущает, что в условиях ограниченных ресурсов (программистов) силы направляются исходя не из просьб постоянных пользователей ПР, а учитывается только маркетинг(что не плохо для бизнеса) . Но раз мы на форуме и есть сообщество, то и его голос имеет смысл слышать ( в том числе для бизнеса), потому как много стало появлятся альтернатив...
Привлечем одних, но можем потерять других.

IVM
13.08.2023, 18:59
Они разбираются в ST, и могут на нём сделать круче чем в ОЛ на FBD, но тут безграмотные(как они считают) люди, которые в ST совсем не шарят делают из них(из большинства из них) клоунов, поэтому они и недолюбливают "квадратики", а соревноваться на равных в квадратиках им мозгов не хватает! Даже не совсем так, зачем им голову ломать, если на ST им это можно легко сделать!
Так это они с ПЛК в ПР припёрлись, а не на оборот! В смысле, хотят прийти в монастырь со своим уставом!

А этот злой пост разве не ярый противник ST в OL написал.

capzap
13.08.2023, 18:59
Люди не против нового языка, уясните наконец. Людей возмущает, что в условиях ограниченных ресурсов (программистов) силы направляются исходя не из просьб постоянных пользователей ПР, а учитывается только маркетинг(что не плохо для бизнеса) . Но раз мы на форуме и есть сообщество, то и его голос имеет смысл слышать ( в том числе для бизнеса), потому как много стало появлятся альтернатив...
Привлечем одних, но можем потерять других.
Пару лет назад собирали команду которая по замыслу должна была тестировать выход новой версии ОЛ, давать предложения что нужно сделать в первую очередь. Где эта зондер-команда? Это они сейчас смакуют что разработчики ОЛ ни чего не умеют, не могут написать ни новые хотелки, ни старые ошибки устранить. Вот поэтому и силы направляются в ту сторону, где придут опытные и адекватные пользователи

rovki
13.08.2023, 19:12
Я не входил в эту команду, хотя и был на совещаниях у руководства, но давно.. Уже и руководство другое. Стареем. На форуме 13 лет и более адекватных, опытных, самоотверженных, бескорыстных подьзователей не видел на многих других форумах. Мы не ноем, а переживаем за наше( в какой-то степени) устройство. мы не смакуем,а тестируем, стриимся усовершенствовать прибор,криьикуем конструктивно и предлогаем..Вышка, за долгие годы подготовила электронщиков гораздо больше чем программистов и им хлеба хватит ещё на несколько поколений, особенно с такими приборами как ПР и ОЛ(фбд).
Для руководства Овен- расширяйте диапазон планирования, хотя бы на 10 лет. Не всегда сиюминутная прибыль приводит к прорыву.

rovki
13.08.2023, 19:22
Нафлудили в теме... Поэтому заканчиваю, всё что хотел сказать, сказал. Спасибо.

IVM
13.08.2023, 19:44
Нафлудили в теме... Поэтому заканчиваю, всё что хотел сказать, сказал. Спасибо.

Тема по ST явно не ваша тема. Ничего полезного вы в этой теме не сказали.

Сергей0308
13.08.2023, 20:12
Да нет у них никакого стратегического планирования, бросает их из стороны в сторону, ещё недавно представители Овена утверждали что не будет никакого ST в ОЛ, затем что ФБ на ST никогда не будет, надеюсь понимаете к чему веду! Насчёт пользователей определяющих стратегию развития - даже смешно звучит! Лучше неоптимальным путём двигаться к цели, чем шарахаться из крайности в крайность, ещё Ленин об этом писал в начале прошлого века в книге "Шаг вперёд, два назад"! Мне кажется проблема с определением целей и приоритетов!

rovki
13.08.2023, 20:53
Тема по ST явно не ваша тема. Ничего полезного вы в этой теме не сказали.

А вы????????молчу, молчу... На личность не переходите.

melky
13.08.2023, 21:05
Надоело все читать, ибо пустое. Давайте обратимся к зарубежным аналогам, пусть там не ST, но все же есть функционал создавать на текстовых языках то, что в ОЛ есть старые макросы.

И это появилось в программируемых реле некоторых зарубежных ПР далеко не вчера..

Онлайн база? эта та, в которой FB с ошибками и у производителя не доходят руки исправлять? а все новое появляется на форуме?

Рогов Алексей
14.08.2023, 07:42
Добрый день!

Почитал Ваши письма, даа...
Хочу, с Вашего позволения, огласить свою позицию:
1. Для меня программирование - это инструмент для диагностики станков, наравне с кувалдой, паяльником и гаечным ключом. Очень удобно оперативно находить неисправность подключая ноутбук к оборудованию
2. Есть у нас станок, где программа написана на трёх машинных языках и комментарии на двух человеческих - не русских, очевидно, писали разные люди и возможно в разных странах проживающие - и ведь смогли договориться, а нам компания Овен предоставила замечательный русскоязычный ОЛ.
3. Особая благодарность ребятам за помощь в написании функции преобразования шестнадцатеричного кода в целое и функциональный блок обратно и RS - триггер. Вероятно своими вопросами я спровоцировал некоторых товарищей.
4. Непосредственно ОЛ занимаюсь 2 года - для систем малой автоматизации ПР 200 лучше не придумаешь, свои немногочисленные проекты писал на FB и ST, где удобнее там и применяю.
Спасибо!
Давайте жить дружно, мне вот например, совсем не с кем даже поговорить на эту тему.

Денисов Максим Сергеевич
14.08.2023, 11:10
Для удобства кого? Вы серьёзно так думаете или притворяетесь? Допустим один пользователь пишет(программирует) на ST, другой на FBD, каждому из них до лампочки, что там ещё 4 языка присутствует, будь там хоть 100 языков! Это увеличит число потенциальных пользователей ПО при остальных равных условиях. Для удобства пользователей создают и расширяют библиотеки, интерфейс ПО, вот в ОЛ эти проклятые подсказки замучали(вчера мучился), выскакивают и не дают линию связи провести, короче, для удобства не могут даже эти подсказки убрать, столько все на них сетовали, это же вредительство чистой воды, просто нет слов!
Короче, это делается чтобы больше пользователей было и ради большей прибыли, чтобы не проиграть в конкурентной борьбе. В смысле, с развитием новых языков их добавляют(не так давно МЗТА добавила ST, у них собственное ПО), чтобы пользователи на этих языках не ушли к конкурентам! Производителям ПЛК и ПР в принципе до лампочки на каком языке их будут программировать, им главное, чтобы их покупали! Овену особого смысла нет ST в ОЛ развивать, тогда их ПЛК будут меньше покупать! Я так думаю, это делается для развития собственного ПО, как у МЗТА, чтобы со временем отказаться от CoDeSys! Овен своих планов не скрывает! Вот над пользователями ПР и экспериментируют, как над мышами!

Мы как добавляем новый функционал в приложение, так и исправляем старые баги. В новой версии поправили появление комментариев, теперь они не должны мешать при присоединении линий связи, обязательно попробуйте и обсудим с вами помогла ли данная доработка исправить ситуацию

Сергей0308
14.08.2023, 11:57
Мы как добавляем новый функционал в приложение, так и исправляем старые баги. В новой версии поправили появление комментариев, теперь они не должны мешать при присоединении линий связи, обязательно попробуйте и обсудим с вами помогла ли данная доработка исправить ситуацию

Я пользуюсь последней актуальной версией ОЛ:

69593

В ней подсказки всплывают и мешают линию связи провести!
Не знаю, может там чего и поправили, в смысле, может чуть ранее подсказки ещё больше мешали, я пропустил этот момент(эти промежуточные версии ОЛ).
Проверил, новых обновлений нет, короче, непонятно, как попробовать то, чего нет? Вы напишите версию ОЛ которую попробовать, чтобы понятно было, какую версию ждать?

melky
14.08.2023, 12:00
Видимо версию, указанную в данной теме.

Сергей0308
14.08.2023, 12:40
Мы как добавляем новый функционал в приложение, так и исправляем старые баги. В новой версии поправили появление комментариев, теперь они не должны мешать при присоединении линий связи, обязательно попробуйте и обсудим с вами помогла ли данная доработка исправить ситуацию

Кажется я в преведущей версии ОЛ проект делал, короче, последнюю версию ОЛ пока не пробовал, попробую на днях обязательно, спасибо, если поправили!

kondor3000
14.08.2023, 19:15
После оптимизации проекта, выкинул ненужные переменные в блоках и ненужные блоки, встроил таймер в блок GetState, переделав его на ФБ fbGetSt , 69597
а так же лишние переменные в проекте ( появились при переделке),
загрузку ЭСППЗУ удалось даже уменьшить на 1 % по сравнению с макросами ( было 26% стало 25%)
и на 1% меньше загрузка ПЗУ по сравнению с неоптимизированным проектом.

Денисов Максим Сергеевич
15.08.2023, 11:08
Всем большое спасибо, за участие в бета тесте Owen Logic 2.4 и описание багов, с которыми вы столкнулись в ходе тестирования!

Сегодня выпускаем полноценный релиз Owen Logic 2.4.334 с исправленными ошибками.

capzap
15.08.2023, 12:13
Вот теперь два вопроса:
Как сделать ФБ энергонезависимым
Как их вызывать в программе, вот два входа, например
function_block RS_1 //имя функционального блока.

var_input //объявление входных переменных
S : bool; //входная переменная с типом данных bool - установка
R : bool; //входная переменная с типом данных bool - сброс

end_var

var_output //объявление выходных переменных
Q : bool; //выходная переменная с типом данных bool
end_var

var //объявление локальных переменных

RTrig : bool; //переменная «»
end_var

if R then
RTrig := false;
end_if
if S and not R then

RTrig := S;
end_if
if not R and RTrig then
RTrig := true;
end_if
Q := RTrig ;

end_function_block

попросил Алису проверить код 69607
вот что она ответила :)
69608
Видимо разработчикам надо усовершенствовать интерфейс объявлений


ЗЫ а это ответ на содержимое кода поста от Валенка https://owen.ru/forum/showthread.php?t=38239&p=414036&viewfull=1#post414036 в таком же формате

Данный код написан на языке VHDL и описывает два функциональных блока: RS-триггер (RS Flip-Flop) и SR-триггер (SR Flip-Flop).

RS-триггер представляет собой двухступенчатый триггер, который имеет два входа (S и R) и один выход (Q). При подаче сигнала на вход S триггер устанавливается в единичное состояние, а при подаче сигнала на вход R триггер сбрасывается в нулевое состояние.

SR-триггер также является двухступенчатым триггером, но вместо двух входов имеет один вход (S) и два выхода (Q и R). При установке триггера (S = 1) на первый вход и сбросе (R = 0) на второй вход, триггер переходит в единичное состояние на выходе Q.

Оба функциональных блока реализованы с помощью оператора not и операции логического “или” (or) и “и” (and). Функция Q в обоих блоках вычисляется путем применения логических операций над другими входными и выходными сигналами.

В целом, код написан корректно и соответствует описанию функциональных блоков RS и SR триггеров. Однако, в данном коде не указаны параметры для входных и выходных сигналов, поэтому для корректной работы кода необходимо определить их значения в соответствии с требованиями проекта.

capzap
15.08.2023, 14:14
ну бывает, она и Путину не смогла ответить на вопрос

вот еще скормил код https://owen.ru/forum/showthread.php?t=38239&p=414009&viewfull=1#post414009
ответ следующий
Данный фрагмент написан на языке программирования SETL

В данном фрагменте кода используется условная конструкция if-else для проверки условий и выполнения соответствующих действий.

Если Res равно true, то переменная Q принимает значение N.
Если U равно true и RTrig и Res не равны true, тогда Q увеличивается на 1 и устанавливается значение RTrig равным U.
Если D равно true и RTrig и Res не равны true, тогда значение Q уменьшается на 1, а значение RTrig устанавливается равным D.
Если RTrig не равен false, то RTrig принимает значение false.

Данный фрагмент кода не содержит ошибок, но он может быть улучшен в нескольких аспектах:

– Использование переменных с более понятными именами, например, U вместо Res, D вместо RTrig, Q вместо N.
– Оптимизация кода, например, использование циклов вместо повторных проверок условий.
– Проверка входных данных перед использованием в коде, например, проверка того, что Res и U не равны false.

Сергей И
15.08.2023, 17:59
В телеграм-канале овена написано, что новая версия OL помимо всего прочего теперь поддерживает одномерные массивы (круто!). В справке упоминаний об этом я не нашел, но редактор ST вроде не ругается, когда объявляешь массив. Возможно, вы забыли справку обновить)

Dimensy
15.08.2023, 18:59
Всем большое спасибо, за участие в бета тесте Owen Logic 2.4 и описание багов, с которыми вы столкнулись в ходе тестирования!

Сегодня выпускаем полноценный релиз Owen Logic 2.4.334 с исправленными ошибками.

А побитовые логические операции в ST так и не завезли :(

capzap
16.08.2023, 08:07
Прикольно. Но пока масло-масляное а про оптимизацию - вода
(видимо - пока вода. Если коровы начнут летать, то мне в космосе делать нечего)

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

Денисов Максим Сергеевич
16.08.2023, 09:54
А побитовые логические операции в ST так и не завезли :(

Доступны такие побитовые операции: SHL, SHR, DC32, CD32. Логические операции: NOT, AND, OR, XOR.
Также доступно обращением к битам переменной типа udint, например: N.31 := True; (где N - переменная udint, 31 - номер бита) или использование в конструкции if N.31 and not N.24 then...

capzap
16.08.2023, 10:01
Доступны такие побитовые операции: SHL, SHR, DC32, CD32. Логические операции: NOT, AND, OR, XOR.
Также доступно обращением к битам переменной типа udint, например: N.31 := True; (где N - переменная udint, 31 - номер бита) или использование в конструкции if N.31 and not N.24 then...

скорее всего имелось ввиду 69623 нельзя сразу целочисленное прогнать через маску

Ruslanadm
16.08.2023, 11:52
Вопрос к разработчикам, может конечно, его раньше и задавали, но ответа не нашел к сожалению.
Планируется ли в принципе использование функций и функциональных блоков ST внутри макросов, или нет?
И если да, то когда примерно это может произойти?

ASo
16.08.2023, 12:11
http://ftp-ow.owen.ru/softupdate/OWEN%20Logic/Setup/Archive/

Валенок
16.08.2023, 12:13
to ASo
опс.
Посмотрим

//
еще бы чек лист что исправлено/добавлено

nnnn1
16.08.2023, 12:19
https://owen.ru/uploads/384/re_owen_logic_2.4_1-ru-125098-1.5.pdf

Валенок
16.08.2023, 12:22
to nnnn1
ну вооще

читаем ...

Сергей0308
16.08.2023, 12:40
Всем большое спасибо, за участие в бета тесте Owen Logic 2.4 и описание багов, с которыми вы столкнулись в ходе тестирования!

Сегодня выпускаем полноценный релиз Owen Logic 2.4.334 с исправленными ошибками.

Мельком посмотрел новую версию, лучше стало с всплывающими окнами, но при выделении и перемещении элемента(группы элементов) на холсте всплывающая подсказка загораживает место, куда перемещаю элемент, приходится вслепую ставить, затем поправлять, это конечно не так критично, просто небольшое неудобство!

ASo
16.08.2023, 13:01
to ASo
опс.
Посмотрим

//
еще бы чек лист что исправлено/добавлено

http://ftp-ow.owen.ru/softupdate/OWEN%20Logic/
infoOf...

zaychenko
17.08.2023, 00:37
Когда планируется добавление стандартных FB типа R_TRIG, TON, TOF, PID и т.д. (библиотеки standard и util из Codesys)?

melky
17.08.2023, 08:37
zaychenko так вы можете сами добавить, или вы хотите как Валенок писал
x := r_trig; ?

1exan
17.08.2023, 08:41
Триггеры то ладно, но каких-то средств для работы с временнЫми интервалами точно не хватает

yura2507
17.08.2023, 10:47
Да, библиотеки конечно не хватает...
Городить все стандартные блоки лениво...
Да и отсутствие TIME не очень радует, хотя программа не даёт использовать имя TIME в качестве переменной, скорее всего работы ведутся и имя переменной уже зарезервировано.
Использую для тестов время цикла, не знаю на сколько такой вариант верный, но, как мне кажется, он более менее точный:

function_block times


var_input
T_cycle:udint;
end_var

var_output
T : udint;
end_var

var
M:udint;
end_var

M:=T;
T:=M+T_cycle;

end_function_block

А Таймер TOF получился такой (используя ФБ ST Tites)

function_block TOF

var_input
IN:bool;
PT:udint;
T_cycle:udint;
end_var

var_output
Q:bool;
ET:udint;
end_var

var
M:bool;
StartTime:udint;
T:times;
end_var

T();
T.T_cycle:=T_cycle;
if IN then
Q:=true;
ET:=0;
else
if M then
StartTime:=T.T;
end_if

if Q then
ET:=T.T-StartTime;
if ET>=PT then
Q:=false;
ET:=PT;
end_if
end_if
end_if
M:=IN;


end_function_block

zaychenko
17.08.2023, 14:36
zaychenko так вы можете сами добавить, или вы хотите как Валенок писал
x := r_trig; ?

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

Валенок
17.08.2023, 14:42
Я хочу просто писать код, используя стандартные библиотечные элементы,...
Видимо тогда ждите.
Кому нужно решать задачи здесь и сейчас - тот (yura2507) их решает

Валенок
17.08.2023, 14:54
..
Использую для тестов время цикла, не знаю на сколько такой вариант верный, но, как мне кажется, он более менее точный:

Ну как временный эрзац. Если задача тяжелая - то может имеет смысл проверить "циклов за секунду"
А по поводу fb times - даже сейчас нужен ли он ? Во всех блоках типа TON/TOF/BLINK/PID/... локальный "readonly" t := t + 1 изобразит TIME()

Внезапно оказавшийся 1.754мс за цикл тоже не проблема и сейчас

yura2507
18.08.2023, 08:44
6966169662
В ПР205 (думаю что и в 103-ем),есть системное время в мс, и их можно использовать для реального времени блоков TON\TOF\TP и прочих.

melky
18.08.2023, 08:54
yura2507 а не могли бы выкладывать код закрывая его тегами, чтобы можно было развернуть и скопировать? спасибо.

yura2507
18.08.2023, 11:13
R_TRIG Триггер переднего фронта, от слова Raise

function_block R_TRIG

var_input
I:bool;
end_var

var_output
Q : bool;
end_var

var
M:bool;
end_var

Q:=false;
if I and not M then Q:=true; end_if
M:=I;

end_function_block

F_TRIG Триггер заднего фронта, от слова Fall

function_block F_TRIG

var_input
I:bool;
end_var

var_output
Q : bool;
end_var

var
M:bool;
end_var

Q:=false;
if not I and M then Q:=true; end_if
M:=I;

end_function_block

melky
18.08.2023, 11:30
Спасибо, полезно, когда ни на что не остается свободного времени и кто-то уже переписал или создал FB на ST...

petera
18.08.2023, 11:54
R_TRIG Триггер переднего фронта, от слова Raise

function_block R_TRIG

var_input
I:bool;
end_var

var_output
Q : bool;
end_var

var
M:bool;
end_var

Q:=false;
if I and not M then Q:=true; end_if
M:=I;

end_function_block

F_TRIG Триггер заднего фронта, от слова Fall

function_block F_TRIG

var_input
I:bool;
end_var

var_output
Q : bool;
end_var

var
M:bool;
end_var

Q:=false;
if not I and M then Q:=true; end_if
M:=I;

end_function_block


function_block R_TRIG

var_input
I:bool;
end_var

var_output
Q : bool;
end_var

var
M:bool;
end_var
(*
Q:=false;
if I and not M then Q:=true; end_if
*)
Q:=I and not M;
M:=I;

end_function_block


function_block F_TRIG

var_input
I:bool;
end_var

var_output
Q : bool;
end_var

var
M:bool;
end_var
(*
Q:=false;
if not I and M then Q:=true; end_if
*)
Q:=not I and NOT M;
M:=NOT I;

end_function_block

capzap
18.08.2023, 11:59
[CODE]function_block F_TRIG

var_input
I:bool;
end_var

var_output
Q : bool;
end_var

var
M:bool;
end_var
(*
Q:=false;
if not I and M then Q:=true; end_if
*)
Q:=not I and NOT M;
M:=NOT I;

end_function_block

NOT лишние

всё же не понимаю почему в исходники oscat не заглянуть, почему кто то из форумчан должен что то выкладывать

Newcomer
18.08.2023, 13:18
R_TRIG Триггер переднего фронта, от слова Raise

function_block R_TRIG

var_input
I:bool;
end_var

var_output
Q : bool;
end_var

var
M:bool;
end_var

Q:=false;
if I and not M then Q:=true; end_if
M:=I;

end_function_block

F_TRIG Триггер заднего фронта, от слова Fall

function_block F_TRIG

var_input
I:bool;
end_var

var_output
Q : bool;
end_var

var
M:bool;
end_var

Q:=false;
if not I and M then Q:=true; end_if
M:=I;

end_function_block

То, что вы называете передним фронтом называется просто фронт. То, что вы называете задним фронтом называется срез.

Ибо, передний фронт - масло масляное, а задний фронт - полный абсурд. Фронт - это то, что спереди.

https://ru.wikipedia.org/wiki/Фронт

melky
18.08.2023, 13:25
capzap выкладывать чтобы каждый не писал по кругу одно и то же, тем более из oscat.
Посмотрел, кто-то уже выдернул TOF, значит можно его себе не переписывать а переписать то, чего еще нет.

Рогов Алексей
18.08.2023, 13:39
Ну в программе ОЛ они так называются:
1. Детектор переднего фронта
2. Детектор заднего фронта

yura2507
18.08.2023, 15:32
То, что вы называете передним фронтом называется просто фронт. То, что вы называете задним фронтом называется срез.

Ибо, передний фронт - масло масляное, а задний фронт - полный абсурд. Фронт - это то, что спереди.

https://ru.wikipedia.org/wiki/Фронт

Вот так, выложишь что-то, для таких же не особо далёких как и сам (я про себя), чтобы упростить жизнь всем, и узнаешь кучу нового, в том числе и о себе. Будем внимательней и прочитаем стандарт IEC 61131-3, где про фронт и срез говорится следующим маслом - R_TRIG - Rising Edge Detector, F_TRIG - Falling Edge Detector. Обратимся к официальной справке Овен Лоджик, там сказано следующее - Детектор переднего фронта импульса (RTRIG). Обратимся к CodeSys2.3 - Функциональный блок R_TRIG генерирует импульс по переднему фронту входного сигнала. Ну и CodeSys 3.5 - Функциональный блок для выявления переднего фронта.
Вынужден учиться на том, что дают.

melky
18.08.2023, 15:38
Да будет так, первый фронт, и Второй фронт = тушенка и все что там с этим было связано :)

Newcomer
18.08.2023, 15:46
Ну в программе ОЛ они так называются:
1. Детектор переднего фронта
2. Детектор заднего фронта

Безграмотно они в OL называются.

Должно быть так:
1. Детектор фронта
2. Детектор среза

Коротко и грамотно. ;)

melky
18.08.2023, 15:56
Newcomer мне кажется излишне придираться там, где все прекрасно понимают о чем речь. Если вдруг вы не поняли о чем, то надо что-то менять в датском королевстве.

Валенок
19.08.2023, 19:22
to Денисов Максим Сергеевич

Фабрики рабочим !
Это
. всем ПР !
Глобальное - ST-шникам !

---
Когда 335 ?

gmz_001
20.08.2023, 08:24
Не могу понять где ашыпка. При первом запуске внутренняя переменная EMA(t) := входному значению, все последующие итерации выполняются по формуле расчета скользящего экспоненциального. Но при симуляции получается иначе. Первый проход так-же считается по формуле EMA(t) = coef * input + (1 - coef) * EMA(t-1), хотя сброс переменной первого запуска проходит и сброс фильтра, если его активировать, так-же выполняется.


function_block EMA // Фильтр экспоненциальное скользящее среднее

var_input
input : real; // Вход
coeff : real; // Коэффициент от 1(min) до 0(max)
reset : bool; // Сброс фильтра
end_var

var_output
output : real; // Выход
end_var

var
EMAt : real;
first_run : bool := true;
end_var

if (reset = true) OR (first_run = true) then
EMAt := input;
first_run := false;
else
EMAt := coeff * input +(1 - coeff)*EMAt;
end_if

output := EMAt;

end_function_block

Leon7
20.08.2023, 09:58
Нет ошибки. При симуляции считает правильно. 2.4.334.0
Возможно в составе чего-то большего не так симулятор считает, но один блок на холсте без ошибок.
if reset OR first_run then - так короче, переменные и так булевы.

rovki
20.08.2023, 21:06
Безграмотно они в OL называются.

Должно быть так:
1. Детектор фронта
2. Детектор среза

Коротко и грамотно. ;)

Зачем так категорично ? https://ru.wikipedia.org/wiki/%D0%A4%D1%80%D0%BE%D0%BD%D1%82_%D1%81%D0%B8%D0%B3% D0%BD%D0%B0%D0%BB%D0%B0

rovki
20.08.2023, 21:15
То, что вы называете передним фронтом называется просто фронт. То, что вы называете задним фронтом называется срез.

Ибо, передний фронт - масло масляное, а задний фронт - полный абсурд. Фронт - это то, что спереди.

https://ru.wikipedia.org/wiki/Фронт

разница между фронтами в военном деле, строительстве итд отличается от понятий в электричестве ,слегка. Ссылка выше

hr0nik
21.08.2023, 08:29
https://ru.wikipedia.org/wiki/Фронт
Цитата из вашей же ссылки:
"Фронт сигнала — переход цифрового сигнала из состояния «ноль» в состояние «единица» (передний фронт) или обратно (задний фронт)."

Newcomer
21.08.2023, 09:39
Зачем так категорично ? https://ru.wikipedia.org/wiki/%D0%A4%D1%80%D0%BE%D0%BD%D1%82_%D1%81%D0%B8%D0%B3% D0%BD%D0%B0%D0%BB%D0%B0

По ссылке, в самом начале, написано ровно то о чем я писал. Далее там дают пояснения к неграмотным выражениям. ;)

Newcomer
21.08.2023, 10:13
разница между фронтами в военном деле, строительстве итд отличается от понятий в электричестве ,слегка. Ссылка выше

Смысл слова фронт везде одинаков.

Сергей0308
21.08.2023, 14:40
Слова могут иметь несколько значений, в зависимости от контекста! Например: во время ВОВ был Волховский фронт, явно, фронт здесь в другом значении!

Василий Кашуба
21.08.2023, 16:55
Смысл слова фронт везде одинаков.
В военном значении Фрон это линия обороны, а тыл не имеет линейного значения. Линии тыла нет.

rovki
21.08.2023, 17:23
Речь была о фронтах эл. сигнала (импульса), а ссылка была на военные действия. При этом есть конкретное понятие (ссылку дал) , да и учили нас давно так.

kondor3000
22.08.2023, 00:34
ФБ для конвертации BCD формата панелей, HEX в DEC и обратно DEC в HEX, пришлось переделать из функций, для приёма времени из панели ИП320.
Время там в шестнадцатиричной системе, да ещё и совмещено год с месяцем, день с часами, минуты с секундами.
В панелях СП307, СП310 время тоже передаётся в BCD формате, только отдельными регистрами.
Чтобы их разделить функции не достаточно. На скрине 2308 (год 23, месяц 08) принимается как 8968 69715


function_block HEX_DEC // Конвертация из Шестнадцатиричной в Десятичную
var_input
x: udint;
end_var
var_output //объявление выходных переменных
Q,Q1,Q2 : udint;
end_var
Q := x/4096 MOD 16*1000+x/256 MOD 16*100+x/16 MOD 16*10+x MOD 16;
Q1:=Q/100; Q2:=Q-Q1*100;
end_function_block



function_block DEC_HEX // Конвертация из Десятичной в Шестнадцатиричную
var_input
x: udint;
end_va
var_output //объявление выходных переменных
Q,Q1,Q2 : udint;
end_var
var
a,b,c,d: udint;
end_var
a:=x/1000; b:=(x-a*1000)/100; c:=(x-a*1000-b*100)/10; d:=x-a*1000-b*100-c*10;
Q := a*4096 + b*256+c*16+d; Q1:=Q/100; Q2:=Q-Q1*100;
end_function_block

melky
22.08.2023, 09:28
kondor3000 мы думаем про один и тот же BCD ? в BCD каждая тетрада не может быть больше 9

Валенок
22.08.2023, 10:42
Имхо, перепутаны названия. То что здесь названо DEC_HEX, это не "из Десятичной в Шестадцатиричную", а наоборот.
И вторая аналогично))

kondor3000
22.08.2023, 11:45
Имхо, перепутаны названия. То что здесь названо DEC_HEX, это не "из Десятичной в Шестадцатиричную", а наоборот.
И вторая аналогично))

Да , названия перепутал, исправил названия и скрин))


мы думаем про один и тот же BCD ? в BCD каждая тетрада не может быть больше 9

Это BCD, который применяют в панелях, в ИП320 и СП31хх, там нет букв, как в шестнадцатиричной системе, только числа.
На СП310 например число 89, это 59 секунд, но там всё по отдельности, год, месяц, число и т. д., поэтому ФБ универсальный, для любой панели.

melky
22.08.2023, 13:19
kondor3000 странное BCD, обычно число 89 в HEX выглядит так же 0х89 или наоборот. И букв там действительно нет. только цифры в тетрадах байта.

Или вы ошиблись с первым числом, написав его как 89 вместо 59 ????

kondor3000
22.08.2023, 14:41
kondor3000 странное BCD, обычно число 89 в HEX выглядит так же 0х89 или наоборот. И букв там действительно нет. только цифры в тетрадах байта.

Или вы ошиблись с первым числом, написав его как 89 вместо 59 ????

Вот скрин работы ПЛК слейва с панелью ИП320 мастер , то же число 8968 69718
и число больше 9 не может быть, то есть 10 - это в шеснадцатиричной системе как раз А,
а число 89 - HEX, как раз 59 - DEC, это я прошёл ещё несколько лет назад, работая с СП310.

melky
22.08.2023, 14:47
kondor3000 извиняюсь, забыл что ОЛ не показывает в HEX переменные а только в виде десятичный значений


На скрине 2308 (год 23, месяц 08) принимается как 8968 а 8968 это и есть HEX 2308, туплю... :)

ЭдМахалыч
22.08.2023, 14:53
Извиняюсь, что не совсем в тему!
Вопрос, собственно в универсальном счетчике, а именно: его выход, как я понял, 16ти битный. Как можно решить вопрос, если мне 65535 недостаточно? Есть ли простое решение?

melky
22.08.2023, 15:00
ЭдМахалыч если вы про ОЛ, то там все переменные 32-х битные. Просто нужно сделать свой счетчик, а не использовать штатный. Их вроде было много...
Простое решение ADD +-1 после R-Trig. Используя SEL например для аккумулирования. А, надо плюсовать или отнимать, так как переменные целочисленные беззнаковые.

Для передачи по сети, надо разделять значение счетчика на два регистра.

ЭдМахалыч
22.08.2023, 15:04
Спасибо. Мне для обработки инкрементного энкодера, но не суть. Нашел такой вариант http://ftp-ow.owen.ru/softupdate/OWEN%20Logic/OnlineMacroes/Timer%20and%20counter/CTN32.pdf

kondor3000
22.08.2023, 15:25
Спасибо. Мне для обработки инкрементного энкодера, но не суть. Нашел такой вариант http://ftp-ow.owen.ru/softupdate/OWEN%20Logic/OnlineMacroes/Timer%20and%20counter/CTN32.pdf

Нафик искать то? Нажимаете создать ФБ, добавляете 1 вход D и меняете копипастом, код на этот https://owen.ru/forum/showthread.php?t=38239&page=4#36
Получаете 32 битный счётчик CTUD на ST. 69722

Сергей0308
22.08.2023, 15:36
Спасибо. Мне для обработки инкрементного энкодера, но не суть. Нашел такой вариант http://ftp-ow.owen.ru/softupdate/OWEN%20Logic/OnlineMacroes/Timer%20and%20counter/CTN32.pdf

Для работы с энкодером скорости(быстродействия) обычных дискретных входов не хватит, короче, для этой цели придумали специальные быстрые входы, имеются у ПР103(205), короче там уже всё придумано, в смысле привязываешь переменную к счётчику энкодера и всё! И нередко 16-битные счётчики используются, в смысле, счётчик при достижении крайних значений не останавливается, а гоняет по кругу, короче для подсчёта это не будет иметь разницы какой там счётчик, в смысле, 16-битный или 32-битный!
А так 32 битный счётчик можно здесь найти в посте#6462: https://owen.ru/forum/showthread.php?t=9398&page=647
И, вроде, в менеджере компонентов был аналогичный.

ЭдМахалыч
23.08.2023, 11:11
Сергей, спасибо! Уже решил как привычней - накатал ST-блок.
А скорость импульса у меня маленькая - 85Гц в потолке (~12мс/имп), но это 1,5м винт ШВП (шаг 4мм) на пиле и 500 имп/об...
Короче написать блок на ST для меня быстрей (12 лет практики на STM32:)
Просто стало интересно - в стандарте нет 32-битных блоков?

ЭдМахалыч
23.08.2023, 13:13
Ещё вопрос к знатокам OL:
Возможно ли штатными средствами настроить состояние slave-устройства по умолчанию при отсутствии связи?
Т.е. защита от потери связи (по некоему таймауту запросов от мастера) или при включении (мастер дольше грузится).
Сейчас вопрос актуален для ПР102.
Заранее спасибо!

kondor3000
23.08.2023, 13:17
Ещё вопрос к знатокам OL:
Возможно ли штатными средствами настроить состояние slave-устройства по умолчанию при отсутствии связи?
Т.е. защита от потери связи (по некоему таймауту запросов от мастера) или при включении (мастер дольше грузится).
Сейчас вопрос актуален для ПР102.
Заранее спасибо!

Слейву вообще по барабану, если его опрашивают, он отвечает, если нет то молчит. Защиты тут не бывает, есть статус опроса, при условии работы мастера.
Вот в мастере и сделайте переменную статуса опроса.

Можно сделать раз в секунду, установку в слейве единичного бита, мастер должен его сбрасывать по получении,
если не сбросил например 5-7 сек, значит мастер отвалился.

melky
23.08.2023, 13:20
ЭдМахалыч тут вообще непонятно желание... Если программа внутри ПР крутится и обновляет данные, когда мастер подключится и прочет то, что на данный момент сформировала программа ПР.

Или вы хотите фиксировать некоторые данные, если было пропадание связи и потом вычитывать?

1exan
23.08.2023, 13:22
Ещё вопрос к знатокам OL:
Возможно ли штатными средствами настроить состояние slave-устройства по умолчанию при отсутствии связи?
Т.е. защита от потери связи (по некоему таймауту запросов от мастера) или при включении (мастер дольше грузится).
Сейчас вопрос актуален для ПР102.
Заранее спасибо!

Штатно в ПР даже средств контроля наличия связи с мастером нет (по крайней мере в ПР102)
Организуйте сами контроль связи с мастером и при отсутствии таковой в программе делайте нужные действия.

ЭдМахалыч
23.08.2023, 13:40
kondor и melky, все просто:
Мастер (СПК107) задает (по ModBus) включение какого то мощного и опасного устройства (допустим привод перемещения) через slave-устройство (ПР102), мастер его и отключает.
Теперь вопрос - как остановить двигатель, если мастер заглючил (сгорел, взорвался и т.п.) или "Вася" кабель перебил.
Вот это и есть "защита от потери связи. По OL я понял - штатного средства нет, будем делать по контрольному регистру.
Так что, ув. kondor слейву не по барабану, если через него управляют опасными исполнителями...

ЭдМахалыч
23.08.2023, 13:44
to 1exan. Это я уже понял, к сожалению. Но всё равно спасибо!

Сергей0308
23.08.2023, 14:00
kondor и melky, все просто:
Мастер (СПК107) задает (по ModBus) включение какого то мощного и опасного устройства (допустим привод перемещения) через slave-устройство (ПР102), мастер его и отключает.
Теперь вопрос - как остановить двигатель, если мастер заглючил (сгорел, взорвался и т.п.) или "Вася" кабель перебил.
Вот это и есть "защита от потери связи. По OL я понял - штатного средства нет, будем делать по контрольному регистру.
Так что, ув. kondor слейву не по барабану, если через него управляют опасными исполнителями...

Вот в соседней теме подобный вопрос обсуждали: https://owen.ru/forum/showthread.php?t=38286&page=2

ЭдМахалыч
23.08.2023, 14:04
Сергей, Спасибо, именно так и поступил.
Спасибо!!!

Dimensy
23.08.2023, 14:08
kondor и melky, все просто:
Мастер (СПК107) задает (по ModBus) включение какого то мощного и опасного устройства (допустим привод перемещения) через slave-устройство (ПР102), мастер его и отключает.
Теперь вопрос - как остановить двигатель, если мастер заглючил (сгорел, взорвался и т.п.) или "Вася" кабель перебил.
Вот это и есть "защита от потери связи. По OL я понял - штатного средства нет, будем делать по контрольному регистру.
Так что, ув. kondor слейву не по барабану, если через него управляют опасными исполнителями...

По хорошему сам контроллер должен контролировать состояние опасного механизма и при аварии его отключать

ЭдМахалыч
23.08.2023, 14:12
По хорошему сам контроллер должен контролировать состояние опасного механизма и при аварии его отключать

Конечно, ПР102 и контролирует его по датчикам и прочим условиям.
Но и отсутствие связи с устройством верхнего уровня (во многих случаях) он контролировать тоже должен уметь!

gmz_001
28.08.2023, 10:48
А как на данный момент решается вопрос с таймерами для ST ? Пока ничего лучше внешнего генератора, входа для тактовых импульсов и программных счетчиков с флагами внутри блока не придумал.

kondor3000
28.08.2023, 13:20
А как на данный момент решается вопрос с таймерами для ST ? Пока ничего лучше внешнего генератора, входа для тактовых импульсов и программных счетчиков с флагами внутри блока не придумал.

Внешний не нужен, нужно только время цикла T_zikl в ms, кол-во циклов считается как x:=x+1; внутри блока.
x * T_zikl= T таймера. Пока так.

Сема
08.09.2023, 11:27
Добрый день, а есть у вас на сайте список примеров, как эти ФБ правильно реализовывать?

kondor3000
08.09.2023, 11:53
Добрый день, а есть у вас на сайте список примеров, как эти ФБ правильно реализовывать?

Списка нет, а мой пример есть https://owen.ru/forum/showthread.php?t=38239&page=11#105
3 пример с ФБ и вложенными блоками.
В блоках fbTimer и fbIndik вложены несколько самописных блоков ФБ (TON, R_trig, SR_trig, F_trig) и функции SEL и fMOD.
Правда TON уже переписан на T_zikl, да и остальные тоже переписаны, а fMOD уже не нужен, есть MOD .

Alex_A
14.09.2023, 15:55
Добрый день
пытаемся использовать новый функционал с блоками на ST
проблема такая - создали переменные булевые в которые записывается состояние входов, создали свой простенький блок на ST - и переменная не меняется при активации входа. Если эту переменную не использовать никак с блоком ST - все работает нормально.
Если одну и ту же переменную импользовать и в блоке ST и с обычным блоком(например тригером) - на блок тригера приходит состояние переменной и входа соотв, а на блок ST - ничего не приходит и переменная не подсвечивается даже..
Это мы что-то не так делаем или баг в программе ?
70196

1exan
14.09.2023, 15:57
Добрый день
пытаемся использовать новый функционал с блоками на ST
проблема такая - создали переменные булевые в которые записывается состояние входов, создали свой простенький блок на ST - и переменная не меняется при активации входа. Если эту переменную не использовать никак с блоком ST - все работает нормально.
Если одну и ту же переменную импользовать и в блоке ST и с обычным блоком(например тригером) - на блок тригера приходит состояние переменной и входа соотв, а на блок ST - ничего не приходит и переменная не подсвечивается даже..
Это мы что-то не так делаем или баг в программе ?
70196

Привяжите "test2" к дискретному выходу

Alex_A
14.09.2023, 16:09
Спасибо, заработало.
Немного неочевидно, и ошибок он никаких не выдавал.

1exan
14.09.2023, 16:33
Спасибо, заработало.
Немного неочевидно, и ошибок он никаких не выдавал.

В справке есть про это

Newcomer
17.09.2023, 18:25
Добрый день

Есть ли код таймера TON на ST ? Или как организовать выдержку времени в FB на ST?

1exan
17.09.2023, 18:32
Добрый день

Есть ли код таймера TON на ST ? Или как организовать выдержку времени в FB на ST?

В настоящее время - только взяв в качестве опорного сигнала данные часов реального времени (если выдержки большие) или значение программного цикла. Короче, если литературно, то - окольными путями

Сергей0308
17.09.2023, 18:37
Это называется, если по простому: за что боролись, на то и напоролись!

Dimensy
17.09.2023, 19:05
Добрый день

Есть ли код таймера TON на ST ? Или как организовать выдержку времени в FB на ST?

Есть, вот https://youtu.be/agJTfeRnfy4?si=ogiKS0DFVC9OIVtJ

kondor3000
17.09.2023, 19:18
Добрый день

Есть ли код таймера TON на ST ? Или как организовать выдержку времени в FB на ST?

Вот таймеры TON, один работает от системных секунд, второй от времени цикла ПР.70249 Блок T_zikl выдаёт время цикла ПР.
TON от времени цикла намного точнее отсчитывает время. Их можно вставить в ФБ на ST.

Пример вставки таймера в ФБ


var //объявление переменных
TON1:TON_; //объявление экземпляра TON1 таймера TON_
end_var

TON1(In:=In, T_z:=T_zikl, PT:=PT, ET=>ET); // вызов экземпляра таймера TON1

Newcomer
17.09.2023, 20:43
Вот таймеры TON, один работает от системных секунд, второй от времени цикла ПР.70249 Блок T_zikl выдаёт время цикла ПР.
TON от времени цикла намного точнее отсчитывает время. Их можно вставить в ФБ на ST.

Пример вставки таймера в ФБ


var //объявление переменных
TON1:TON_;
end_var

TON1(In:=In, T_z:=T_zikl, PT:=PT, ET=>ET);

Я проще поступил. Завел на вход своего FB BLINK с периодом 1 сек.и отсчитываю в теле требуемые интервалы. Красота. ;) FB на ST - это вещь. Молодцы парни из ОВЕН.

kondor3000
17.09.2023, 22:46
Я проще поступил. Завел на вход своего FB BLINK с периодом 1 сек.и отсчитываю в теле требуемые интервалы. Красота. ;) FB на ST - это вещь. Молодцы парни из ОВЕН.

Это тоже самое, что TON с системными секундами, погрешность до целой секунды, в зависимости от того, в какой момент запустите.

IVM
18.09.2023, 06:16
Это тоже самое, что TON с системными секундами, погрешность до целой секунды, в зависимости от того, в какой момент запустите.

С BLINK нормальный вариант. Можно сделать период следования импульсов 10 или 100 мс и точность отсчёта времени увеличится.

1exan
18.09.2023, 06:23
В платформах типа ПР103 есть отдельный параметр "Время цикла", к которому можно привязать переменную и использовать её (сам не пробовал, но должно работать)

gmz_001
23.09.2023, 04:58
Вопрос по синтаксису st. Вызов функционального блока из функционального блока.



FB.varIn := value;
out := FB.varOut;


это не есть вызов ФБ, а только обращение к его переменным ?

1exan
23.09.2023, 09:19
Вопрос по синтаксису st. Вызов функционального блока из функционального блока.



FB.varIn := value;
out := FB.varOut;


это не есть вызов ФБ, а только обращение к его переменным ?

Вызов выглядит так:
FB( [необязательно: присвоение входов и чтение выходов] );

gmz_001
23.09.2023, 12:05
Про такую нотацию знаю, но вопрос возник по тому-что при ветвлении в if и case удобнее обращение через точку, ибо не нужна лишняя переменная. Понятно, нужно отдельно выполнять вызов без параметров.

1exan
23.09.2023, 15:10
Про такую нотацию знаю, но вопрос возник по тому-что при ветвлении в if и case удобнее обращение через точку, ибо не нужна лишняя переменная. Понятно, нужно отдельно выполнять вызов без параметров.

Ну через "точку" идет лишь запись значения на вход и чтение значения с выхода, и тут надо понимать, что


FB();
...
...
...
FB.varIn := value;
out := FB.varOut;

и


FB.varIn := value;
FB();
out := FB.varOut;


Могут иметь разные результаты

gmz_001
23.09.2023, 20:03
Это понятно. Разные значения переменных на момент выполнения блока.
Странное решение авторов стандарта все переменные считать статическими, сложно после обычных языков

Валенок
25.09.2023, 00:20
...Странное решение авторов стандарта все переменные считать статическими, сложно после обычных языков
А поля статически размещенных структур (record/struct/....) в каких-то там "обычных" языках ведут себя теперь как-то по другому ?

gmz_001
25.09.2023, 05:59
Не думал в этом ключе.

viewer
26.09.2023, 21:41
Подскажите как, при покупке, определить, что ПР100 является М02 и поддерживает ST?

Королев Кирилл
27.09.2023, 16:21
Подскажите как, при покупке, определить, что ПР100 является М02 и поддерживает ST?

Добрый день!

Если заказываете новый прибор, то он уже будет с индексом М02. Будет отметка на коробке и в паспорте.

Если у Вас старый прибор, то ПР100 М02 стали выпускаться, ориентировочно, с января 2021 года.

viewer
27.09.2023, 17:07
Спасибо за ответ.

Samel
28.09.2023, 16:00
Я так понял fb на ST еще очень сырые. Один и тот же код на 200 и 103 работает по разному