PDA

Просмотр полной версии : Цикл программы в ПЛК



Serjay
27.11.2017, 18:33
Здравствуйте коллеги!!
Подскажите как посмотреть сколько по времени (цикл) будет крутится написанная программа в ПЛК.
Где это можно посмотреть в Codesys 2.3 и 3.5?
Будет ли это видно если запустить эмулятор??

Scream
27.11.2017, 18:53
Где это можно посмотреть в Codesys 2.3 и 3.5?

В конфигурации ПЛК добавить модуль Statistics (2.3)



Будет ли это видно если запустить эмулятор??

Нет

Serjay
28.11.2017, 17:15
В конфигурации ПЛК добавить модуль Statistics (2.3)



Нет

Спасибо))

С 2.3 все понятно))

Serjay
28.11.2017, 17:16
А как быть с 3.5????

Serjay
29.11.2017, 09:41
Фигею тихо. Сутки выяснять как померить время. Руками не ?

Руками, это с секундомером что ли??

Serjay
29.11.2017, 09:43
Last cycle time in mks в Statistics (2.3) это как понимать?
Я имею ввиду миллисекунда или какая то другая единица измерения времени??

krollcbas
29.11.2017, 21:26
Время цикла считаю обычно сам:
Cycle:=Cycle+1;(*Прибавляет 1 в каждом цикле*)
TON(IN:= NOT TON.Q, PT:=T#1s);(*Делаю короткий импульс через каждую секунду*)
TON1(IN:= NOT TON1.Q, PT:=T#1m);(*Делаю короткий импульс через каждую минуту*)
R_TRIG(CLK:=TON.Q);(*Ловлю передний фронт, после того как досчиталась секунда*)
IF R_TRIG.Q THEN Cycle_M_tmp:=Cycle; Cycle:=0; END_IF;(*Передаю значение сколько насчиталось во временную переменную*)
IF Cycle_M_tmp>0 THEN Cycle_M:00/INT_TO_REAL(Cycle_M_tmp); END_IF;(*Избегая деления на 0, передаю количество миллисекунд в одном цикле на панель*)

petera
29.11.2017, 22:37
Время цикла считаю обычно сам:
Cycle:=Cycle+1;(*Прибавляет 1 в каждом цикле*)
TON(IN:= NOT TON.Q, PT:=T#1s);(*Делаю короткий импульс через каждую секунду*)
TON1(IN:= NOT TON1.Q, PT:=T#1m);(*Делаю короткий импульс через каждую минуту*)
R_TRIG(CLK:=TON.Q);(*Ловлю передний фронт, после того как досчиталась секунда*)
IF R_TRIG.Q THEN Cycle_M_tmp:=Cycle; Cycle:=0; END_IF;(*Передаю значение сколько насчиталось во временную переменную*)
IF Cycle_M_tmp>0 THEN Cycle_M:00/INT_TO_REAL(Cycle_M_tmp); END_IF;(*Избегая деления на 0, передаю количество миллисекунд в одном цикле на панель*)

Однако.... http://www.owen.ru/forum/attachment.php?attachmentid=16915&d=1425224217
Помещаем в начало PLC_PRG

(*Время цикла*)
t1:=TIME();
delta := t1 - prevScanTime;
prevScanTime := t1;

delta - искомое время цикла в мс

А если добавить в конце PLC_PRG


t2:=TIME()-t1;
то в t2 увидим время выполнения самой программы в мс

Scream
29.11.2017, 22:48
Last cycle time in mks в Statistics (2.3) это как понимать?
Я имею ввиду миллисекунда или какая то другая единица измерения времени??

Написано же mks
Это какая то другая еденица измерения времени.

Дмитрий Артюховский
30.11.2017, 10:05
циферки конечно хорошо, но представление о мире получается если отсчеты по циклам раскладывать в массив значительной длины а потом смотреть его целиком, также весьма наглядно вывести логическую переменную на вывод, инвертировать ее в каждом цикле и смотреть осциллографом - снимается множество вопросов ))

Алексей Геннадьевич
01.12.2017, 08:48
На вопрос блондинки о способе померить время оборота движка сбежались все автомеханики с округи.
Причем блондинка может быть офигительной художницей/фигуристкой/врачом/... но судя по вопросу - ей ни на кой это время.
Ооочень вкусно.:D

Serjay
1) В конфигурации задач в онлайн-режиме посмотреть что мешает? Вероисповедание или отсутствие ПЛК?
2) Поставить в конфигураторе задач время выполнения цикла в nn мс и не парится.
3) Задачу нужно выполнять не более чем за 0,1 мс? - вам в прямое программирование микроконтроллеров и создание устройства с нуля, скорее всего.