Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
uniset2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UniSet project repositories
uniset2
Commits
cc92ac94
Commit
cc92ac94
authored
Jul 01, 2014
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(IOBase): переименовл jar --> debounce
(оказалось более правильный перевод "антидребезга")
parent
bf515936
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
41 additions
and
41 deletions
+41
-41
IOControl.h
extensions/IOControl/IOControl.h
+1
-1
IOBase.h
extensions/include/IOBase.h
+25
-25
IOBase.cc
extensions/lib/IOBase.cc
+15
-15
No files found.
extensions/IOControl/IOControl.h
View file @
cc92ac94
...
...
@@ -81,7 +81,7 @@
<br>\b breaklim - пороговое значение для определения обырва датчика (используется для AI).
Если значение ниже этого порога, то выставляется признак обрыва датчика.
<br>\b
jardelay
- защита от дребезга. Задержка на дребезг, мсек.
<br>\b
debouncedelay
- защита от дребезга. Задержка на дребезг, мсек.
<br>\b ondelay - задержка на срабатывание, мсек.
<br>\b offdelay - задержка на отпускание, мсек.
<br>\b iofront - работа по фронту сигнала (для DI).
...
...
extensions/include/IOBase.h
View file @
cc92ac94
...
...
@@ -40,7 +40,7 @@ static const int NoSafety = -1;
ignore
(
false
),
invert
(
false
),
noprecision
(
false
),
jar
_state
(
false
),
debounce
_state
(
false
),
ondelay_state
(
false
),
offdelay_state
(
false
),
t_ai
(
UniSetTypes
::
DefaultObjectId
),
...
...
@@ -53,44 +53,44 @@ static const int NoSafety = -1;
bool
check_channel_break
(
long
val
);
/*!< проверка обрыва провода */
bool
check_
jar
(
bool
val
);
/*!< реализация фильтра против дребезга */
bool
check_
debounce
(
bool
val
);
/*!< реализация фильтра против дребезга */
bool
check_on_delay
(
bool
val
);
/*!< реализация задержки на включение */
bool
check_off_delay
(
bool
val
);
/*!< реализация задержки на отключение */
bool
check_front
(
bool
val
);
/*!< реализация срабатывания по фронту сигнала */
bool
check_off_delay
(
bool
val
);
/*!< реализация задержки на отключение */
bool
check_front
(
bool
val
);
/*!< реализация срабатывания по фронту сигнала */
IOController_i
::
SensorInfo
si
;
UniversalIO
::
IOType
stype
;
/*!< тип канала (DI,DO,AI,AO) */
IOController_i
::
CalibrateInfo
cal
;
/*!< калибровочные параметры */
Calibration
*
cdiagram
;
/*!< специальная калибровочная диаграмма */
long
breaklim
;
/*!< значение задающее порог определяющий обрыв (задаётся 'сырое' значение) */
long
value
;
/*!< текущее значение */
long
craw
;
/*!< текущее 'сырое' значение до калибровки */
long
cprev
;
/*!< предыдущее значение после калибровки */
UniversalIO
::
IOType
stype
;
/*!< тип канала (DI,DO,AI,AO) */
IOController_i
::
CalibrateInfo
cal
;
/*!< калибровочные параметры */
Calibration
*
cdiagram
;
/*!< специальная калибровочная диаграмма */
long
breaklim
;
/*!< значение задающее порог определяющий обрыв (задаётся 'сырое' значение) */
long
value
;
/*!< текущее значение */
long
craw
;
/*!< текущее 'сырое' значение до калибровки */
long
cprev
;
/*!< предыдущее значение после калибровки */
long
safety
;
/*!< безопасное состояние при завершении процесса */
long
defval
;
/*!< состояние по умолчанию (при запуске) */
DigitalFilter
df
;
/*!< реализация программного фильтра */
bool
nofilter
;
/*!< отключение фильтра */
bool
f_median
;
/*!< признак использования медианного фильтра */
bool
f_ls
;
/*!< признак использования адаптивного фильтра по методу наименьших квадратов */
bool
f_filter_iir
;
/*!< признак использования рекурсивного фильтра */
DigitalFilter
df
;
/*!< реализация программного фильтра */
bool
nofilter
;
/*!< отключение фильтра */
bool
f_median
;
/*!< признак использования медианного фильтра */
bool
f_ls
;
/*!< признак использования адаптивного фильтра по методу наименьших квадратов */
bool
f_filter_iir
;
/*!< признак использования рекурсивного фильтра */
bool
ignore
;
/*!< игнорировать при опросе */
bool
invert
;
/*!< инвертированная логика */
bool
noprecision
;
PassiveTimer
pt
Jar
;
/*!< таймер на дребезг */
PassiveTimer
pt
Debounce
;
/*!< таймер на дребезг */
PassiveTimer
ptOnDelay
;
/*!< задержка на срабатывание */
PassiveTimer
ptOffDelay
;
/*!< задержка на отпускание */
PassiveTimer
ptOffDelay
;
/*!< задержка на отпускание */
bool
jar
_pause
;
bool
debounce
_pause
;
Trigger
trOnDelay
;
Trigger
trOffDelay
;
Trigger
tr
Jar
;
Trigger
tr
debounce
;
bool
jar_state
;
/*!< значение для фильтра
дребезга */
bool
ondelay_state
;
/*!< значение для задержки включения */
bool
debounce_state
;
/*!< значение для фильтра анти
дребезга */
bool
ondelay_state
;
/*!< значение для задержки включения */
bool
offdelay_state
;
/*!< значение для задержки отключения */
// Порог
...
...
@@ -105,8 +105,8 @@ static const int NoSafety = -1;
enum
FrontType
{
ftUnknown
,
ft01
,
// срабатывание на переход "0-->1"
ft10
// срабатывание на переход "1-->0"
ft01
,
// срабатывание на переход "0-->1"
ft10
// срабатывание на переход "1-->0"
};
bool
front
;
// флаг работы по фронту
...
...
extensions/lib/IOBase.cc
View file @
cc92ac94
...
...
@@ -20,35 +20,35 @@ bool IOBase::check_channel_break( long val )
return
(
val
<
breaklim
);
}
// -----------------------------------------------------------------------------
bool
IOBase
::
check_
jar
(
bool
val
)
bool
IOBase
::
check_
debounce
(
bool
val
)
{
// нет защиты от дребезга
if
(
pt
Jar
.
getInterval
()
<=
0
)
if
(
pt
Debounce
.
getInterval
()
<=
0
)
{
jar
_state
=
val
;
debounce
_state
=
val
;
return
val
;
}
if
(
tr
Jar
.
change
(
val
)
)
if
(
tr
debounce
.
change
(
val
)
)
{
if
(
!
jar
_pause
)
if
(
!
debounce
_pause
)
{
// засекаем время...
jar
_pause
=
true
;
pt
Jar
.
reset
();
debounce
_pause
=
true
;
pt
Debounce
.
reset
();
}
}
if
(
jar_pause
&&
ptJar
.
checkTime
()
)
if
(
debounce_pause
&&
ptDebounce
.
checkTime
()
)
{
// пауза на дребезг кончилась
// сохраняем значение
jar
_state
=
val
;
jar
_pause
=
false
;
debounce
_state
=
val
;
debounce
_pause
=
false
;
}
// возвращаем ТЕКУЩЕЕ, А НЕ НОВОЕ значение
return
jar
_state
;
return
debounce
_state
;
}
// -----------------------------------------------------------------------------
bool
IOBase
::
check_on_delay
(
bool
val
)
...
...
@@ -226,10 +226,10 @@ void IOBase::processingAsDI( IOBase* it, bool set, SMInterface* shm, bool force
set
^=
true
;
// Проверяем именно в такой последовательности!
set
=
it
->
check_
jar
(
set
);
// фильтр дребезга
set
=
it
->
check_
debounce
(
set
);
// фильтр дребезга
set
=
it
->
check_on_delay
(
set
);
// фильтр на срабатывание
set
=
it
->
check_off_delay
(
set
);
// фильтр на отпускание
set
=
it
->
check_front
(
set
);
// работа по фронту (проверять после
jar
_xxx!)
set
=
it
->
check_front
(
set
);
// работа по фронту (проверять после
debounce
_xxx!)
{
uniset_rwmutex_wrlock
lock
(
it
->
val_lock
);
...
...
@@ -409,8 +409,8 @@ bool IOBase::initItem( IOBase* b, UniXML_iterator& it, SMInterface* shm,
b
->
value
=
b
->
defval
;
b
->
breaklim
=
it
.
getIntProp
(
"breaklim"
);
long
msec
=
it
.
getPIntProp
(
"
jar
delay"
,
UniSetTimer
::
WaitUpTime
);
b
->
pt
Jar
.
setTiming
(
msec
);
long
msec
=
it
.
getPIntProp
(
"
debounce
delay"
,
UniSetTimer
::
WaitUpTime
);
b
->
pt
Debounce
.
setTiming
(
msec
);
msec
=
it
.
getPIntProp
(
"ondelay"
,
UniSetTimer
::
WaitUpTime
);
b
->
ptOnDelay
.
setTiming
(
msec
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment