📄 control.crn
字号:
_END NEW $$$.RUN
: FILENAME ." control " ;
1 0 $VAR *_HSV_SEMA
1024 0 $VAR *_HSV_TEMP
0 TASK &_INIT_IO
0 TASK &average
0 TASK &average_test
0 TASK &chart1
0 TASK &control_loop
0 TASK &guocheng
0 TASK &Powerup
0 TASK &TimerConvert
0 IVAR ^ctrl_loop_flg
0 FVAR ^data_101
0 FVAR ^data_102
0 FVAR ^data_t1
0 FVAR ^data_t1_total
0 FVAR ^data_t2
0 FVAR ^data_t2_total
0 FVAR ^deltat
0 IVAR ^endflag
0 IVAR ^flag
0 IVAR ^I
0 IVAR ^I1
0 IVAR ^In1
0 IVAR ^In2
0 FVAR ^JWT_OFF
0 FVAR ^JWT_ON
0 IVAR ^MODE
0 IVAR ^qb1
0 IVAR ^qb2
0 IVAR ^qbks
0 IVAR ^start_end
0 IVAR ^startflag
0 IVAR ^stat1
0 IVAR ^t_m
0 IVAR ^t_min
0 IVAR ^t_s
0 FVAR ^t_SET
0 IVAR ^temp1
0 FVAR ^TI101_data
0 FVAR ^TI102_data
0 UTVAR ^timer1
0 FVAR ^total1
0 FVAR ^total2
10 0 $VAR *data
10 0 $VAR *qbks_time
10 0 $VAR *time
201 0 FTABLE }data_table1
201 0 FTABLE }data_table2
51 0 FTABLE }out_table
51 0 FTABLE }table_t2
$0000000000000000.. 32769 3.000000 0.010000 0.000000 2001 $C0A8005D 0 MBOARD %controller
SPOINT 0.0 INPUT 0 %controller
0 POINT ~DI_101
SPOINT 0.0 INPUT 1 %controller
0 POINT ~DI_102
SPOINT 0.0 INPUT 2 %controller
0 POINT ~DI_103
SPOINT 0.0 OUTPUT 4 %controller
0 POINT ~DO_101
SPOINT 0.0 OUTPUT 5 %controller
0 POINT ~DO_102
SPOINT 0.0 OUTPUT 6 %controller
0 POINT ~DO_103
SPOINT 0.0 OUTPUT 7 %controller
0 POINT ~DO_104
APOINT -20.0000 0 8 %controller
0 POINT ~TI_101
40.0000 -20.0000 ~TI_101 SET.SCALE
APOINT -20.0000 0 9 %controller
0 POINT ~TI_102
40.0000 -20.0000 ~TI_102 SET.SCALE
APOINT 0.0000 169 12 %controller 0 POINT ~AO_101
APOINT 0.0000 169 13 %controller 0 POINT ~AO_201
100.0000 0.0000 ~AO_201 SET.RANGE
1 0.0000 0.0000 0.0000 0.0000 0.0000 100.0000 20.0000 30.0000
1.0000 0.0000 0.0000 -1.0000 1.0000 0.0000
20.0000 20.0000 ~AO_101
$30000004 0 %controller 0 PID |TIC_101
1 0.0000 0.0000 0.0000 100.0000 0.0000 100.0000 20.0000 30.0000
1.0000 0.0000 0.0000 1.0000 0.0000 0.0000
20.0000 20.0000 ~AO_201
$30000000 1 %controller 0 PID |TIC_201
: 5_0
1 JUMP ;
: 5_11
10 DELAY
~TI_101 @@ ^I @@ }data_table1 TABLE!
~TI_102 @@ ^I @@ }data_table2 TABLE!
^I @@ 1 + ^I1 @!
^I1 @@ 200 > IF
0 ^I1 @!
THEN
^total1 @@ ^I @@ }data_table1 TABLE@ F+ ^I1 @@ }data_table1 TABLE@ F- ^total1 @!
^total2 @@ ^I @@ }data_table2 TABLE@ F+ ^I1 @@ }data_table2 TABLE@ F- ^total2 @!
^I @@ 1 + ^I @!
^I @@ 200 > IF
0 ^I @!
THEN
^total1 @@ 2.000000e+002 F/ ^data_101 @!
^total2 @@ 2.000000e+002 F/ ^data_102 @!
1 JUMP ;
: 5_16
100 DELAY
1 199 1 + 0 DO? I ^I @!
^I @@ 1 + }data_table1 TABLE@ ^I @@ }data_table1 TABLE!
^I @@ 1 + }data_table2 TABLE@ ^I @@ }data_table2 TABLE!
1 +LOOP
~TI_101 @@ 200 }data_table1 TABLE!
~TI_102 @@ 200 }data_table2 TABLE!
^total1 @@ 200 }data_table1 TABLE@ F+ 0 }data_table1 TABLE@ F- ^total1 @!
^total2 @@ 200 }data_table2 TABLE@ F+ 0 }data_table2 TABLE@ F- ^total2 @!
^total1 @@ 2.000000e+002 F/ ^data_101 @!
^total2 @@ 2.000000e+002 F/ ^data_102 @!
-3 JUMP ;
T: T5
DUMMY
5_0
5_11
5_16
T;
&average ' T5 SETTASK
: 10_0
0 JUMP ;
: 10_2
500 DELAY
^data_101 @@ ^In1 @@ }out_table TABLE!
^data_102 @@ ^In1 @@ }table_t2 TABLE!
^In1 @@ 1 + ^In2 @!
^In2 @@ 50 > IF
0 ^In2 @!
THEN
^data_t1_total @@ ^In1 @@ }out_table TABLE@ F+ ^In2 @@ }out_table TABLE@ F- ^data_t1_total @!
^data_t2_total @@ ^In1 @@ }table_t2 TABLE@ F+ ^In2 @@ }table_t2 TABLE@ F- ^data_t2_total @!
^In1 @@ 1 + ^In1 @!
^In1 @@ 50 > IF
0 ^In1 @!
THEN
^data_t1_total @@ 5.000000e+001 F/ ^data_t1 @!
^data_t2_total @@ 5.000000e+001 F/ ^data_t2 @!
-2 JUMP ;
T: T10
DUMMY
10_0
10_2
T;
&average_test ' T10 SETTASK
: 1_0
4 JUMP ;
: 1_14
~DO_101 ON
4 JUMP ;
: 1_16
~DO_101 OFF
~DO_102 OFF
0
^qb2 @!
-3 JUMP ;
: 1_20
~DO_102 ON
1
^qbks @!
10.0 FDELAY
0
^qb2 @!
0
^qb1 @!
~DO_102 OFF
0 JUMP ;
: 1_25
-5 JUMP ;
: 1_12
TRUE
~DI_101 @@
^qb1 @@ LAND
LAND
IF -5 ELSE -4 THEN JUMP ;
: 1_18
TRUE
~DO_101 @@
^qb2 @@ LAND
LAND
IF -4 ELSE -7 THEN JUMP ;
T: T1
DUMMY
1_0
1_14
1_16
1_20
1_25
1_12
1_18
T;
&chart1 ' T1 SETTASK
: 7_0
0 JUMP ;
: 7_43
^MODE @@ 1 = IF
^data_t1 @@ ^t_SET @@ F- ^deltat @!
ELSE
^data_t1 @@ ^data_t2 @@ F- ^deltat @!
THEN
^deltat @@ 5 I>F F> IF
-6 ^flag @!
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
|TIC_201 100 I>F $0008.. 3 ROLL EX.!PID
20 I>F ^JWT_ON @!
0 I>F ^JWT_OFF @!
^JWT_ON @@ FDELAY
ELSE
^deltat @@ 2 I>F F>= ^deltat @@ 5 I>F F< LAND IF
-5 ^flag @!
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
|TIC_201 100 I>F $0008.. 3 ROLL EX.!PID
10 I>F ^JWT_ON @!
0 I>F ^JWT_OFF @!
^JWT_ON @@ FDELAY
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
ELSE
^deltat @@ 5.000000e-001 F>= ^deltat @@ 2 I>F F< LAND IF
-4 ^flag @!
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
|TIC_201 100 I>F $0008.. 3 ROLL EX.!PID
5 I>F ^JWT_ON @!
0 I>F ^JWT_OFF @!
^JWT_ON @@ FDELAY
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
ELSE
^deltat @@ 1.000000e-001 F>= ^deltat @@ 5.000000e-001 F< LAND IF
-3 ^flag @!
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
|TIC_201 100 I>F $0008.. 3 ROLL EX.!PID
5 I>F ^JWT_ON @!
0 I>F ^JWT_OFF @!
^JWT_ON @@ FDELAY
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
ELSE
^deltat @@ 5.000000e-002 F>= ^deltat @@ 1.000000e-001 F< LAND IF
-2 ^flag @!
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
|TIC_201 100 I>F $0008.. 3 ROLL EX.!PID
10 I>F ^JWT_ON @!
3 I>F ^JWT_OFF @!
^JWT_ON @@ FDELAY
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
ELSE
^deltat @@ 3.000000e-002 F>= ^deltat @@ 5.000000e-002 F< LAND IF
-2 ^flag @!
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
|TIC_201 100 I>F $0008.. 3 ROLL EX.!PID
5 I>F ^JWT_ON @!
3 I>F ^JWT_OFF @!
^JWT_ON @@ FDELAY
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
ELSE
^deltat @@ 1.000000e-002 F>= ^deltat @@ 5.000000e-002 F< LAND IF
-1 ^flag @!
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
|TIC_201 100 I>F $0008.. 3 ROLL EX.!PID
5 I>F ^JWT_ON @!
5 I>F ^JWT_OFF @!
^JWT_ON @@ FDELAY
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
ELSE
^deltat @@ 1.000000e-002 F< ^deltat @@ -1.000000e-002 F>= LAND IF
0 ^flag @!
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
1.000000e-001 FDELAY
ELSE
^deltat @@ -1.000000e-002 F< ^deltat @@ -5.000000e-002 F>= LAND IF
1 ^flag @!
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
2 I>F ^JWT_ON @!
7 I>F ^JWT_OFF @!
|TIC_101 8 I>F $0008.. 3 ROLL EX.!PID
^JWT_ON @@ FDELAY
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
ELSE
^deltat @@ -5.000000e-002 F< ^deltat @@ -1.000000e-001 F>= LAND IF
1 ^flag @!
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
3 I>F ^JWT_ON @!
5 I>F ^JWT_OFF @!
|TIC_101 8 I>F $0008.. 3 ROLL EX.!PID
^JWT_ON @@ FDELAY
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
ELSE
^deltat @@ -1.000000e-001 F< ^deltat @@ -2.000000e-001 F>= LAND IF
2 ^flag @!
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
4 I>F ^JWT_ON @!
5 I>F ^JWT_OFF @!
|TIC_101 10 I>F $0008.. 3 ROLL EX.!PID
^JWT_ON @@ FDELAY
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
ELSE
^deltat @@ -2.000000e-001 F< ^deltat @@ -3.000000e-001 F>= LAND IF
3 ^flag @!
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
5 I>F ^JWT_ON @!
3 I>F ^JWT_OFF @!
|TIC_101 10 I>F $0008.. 3 ROLL EX.!PID
^JWT_ON @@ FDELAY
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
ELSE
^deltat @@ -3.000000e-001 F< ^deltat @@ -4.000000e-001 F>= LAND IF
4 ^flag @!
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
3 I>F ^JWT_ON @!
3 I>F ^JWT_OFF @!
|TIC_101 20 I>F $0008.. 3 ROLL EX.!PID
^JWT_ON @@ FDELAY
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
ELSE
^deltat @@ -4.000000e-001 F< ^deltat @@ -5.000000e-001 F>= LAND IF
5 ^flag @!
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
4 I>F ^JWT_ON @!
2 I>F ^JWT_OFF @!
|TIC_101 30 I>F $0008.. 3 ROLL EX.!PID
^JWT_ON @@ FDELAY
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
ELSE
^deltat @@ -5.000000e-001 F< ^deltat @@ -1 I>F F>= LAND IF
6 ^flag @!
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
5 I>F ^JWT_ON @!
2 I>F ^JWT_OFF @!
|TIC_101 70 I>F $0008.. 3 ROLL EX.!PID
^JWT_ON @@ FDELAY
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
ELSE
7 ^flag @!
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
5 I>F ^JWT_ON @!
0 I>F ^JWT_OFF @!
|TIC_101 100 I>F $0008.. 3 ROLL EX.!PID
^JWT_ON @@ FDELAY
|TIC_101 0 I>F $0008.. 3 ROLL EX.!PID
^JWT_OFF @@ FDELAY
THEN THEN THEN THEN THEN THEN THEN THEN THEN THEN THEN THEN THEN THEN THEN
-2 JUMP ;
T: T7
DUMMY
7_0
7_43
T;
&control_loop ' T7 SETTASK
: 8_0
7 JUMP ;
: 8_84
|TIC_201 0 I>F $0008.. 3 ROLL EX.!PID
|TIC_101 8 I>F $0008.. 3 ROLL EX.!PID
11 JUMP ;
: 8_85
150.0 FDELAY
|TIC_101
50 I>F $0008.. 3 ROLL EX.!PID
|TIC_201
0 I>F $0008.. 3 ROLL EX.!PID
120.0 FDELAY
|TIC_101
15 I>F $0008.. 3 ROLL EX.!PID
|TIC_201
0 I>F $0008.. 3 ROLL EX.!PID
600.0 FDELAY
20 JUMP ;
: 8_88
&control_loop STOP.T
0
^ctrl_loop_flg @!
|TIC_201
0 I>F $0008.. 3 ROLL EX.!PID
|TIC_101
0 I>F $0008.. 3 ROLL EX.!PID
3 JUMP ;
: 8_93
^endflag @@ 1 = IF
0 ^startflag @!
0 ^endflag @!
THEN
13 JUMP ;
: 8_96
-6 JUMP ;
: 8_100
&chart1 START.T
^stat1 @!
2 JUMP ;
: 8_101
300 DELAY
0 JUMP ;
: 8_104
10 JUMP ;
: 8_110
12 JUMP ;
: 8_115
&control_loop START.T
^stat1 @!
1
^ctrl_loop_flg @!
-7 JUMP ;
: 8_120
50 DELAY
9 JUMP ;
: 8_123
^timer1 StopTimer
0
^qbks @!
0
^ctrl_loop_flg @!
0
^endflag @!
0
^startflag @!
&control_loop STOP.T
&chart1 STOP.T
" 00:00:00"
*qbks_time $MOVE
|TIC_101
0 I>F $0008.. 3 ROLL EX.!PID
|TIC_201
0 I>F $0008.. 3 ROLL EX.!PID
-8 JUMP ;
: 8_124
&control_loop START.T
^stat1 @!
7 JUMP ;
: 8_125
&control_loop STOP.T
-14 JUMP ;
: 8_127
10000.0
^timer1 @!
*qbks_time TIME>$
1 JUMP ;
: 8_129
20 DELAY
3 JUMP ;
: 8_81
TRUE
^MODE @@
1 =
LAND
IF 3 ELSE -4 THEN JUMP ;
: 8_94
TRUE
^startflag @@
0 =
LAND
IF -16 ELSE -10 THEN JUMP ;
: 8_99
TRUE
1
^startflag @@ =
LAND
IF -14 ELSE -13 THEN JUMP ;
: 8_116
TRUE
1
^ctrl_loop_flg @@ =
LAND
IF -17 ELSE -11 THEN JUMP ;
: 8_122
TRUE
^endflag @@
1 =
LAND
IF -10 ELSE -11 THEN JUMP ;
: 8_130
TRUE
^qbks @@
1 =
LAND
IF -8 ELSE -7 THEN JUMP ;
T: T8
DUMMY
8_0
8_84
8_85
8_88
8_93
8_96
8_100
8_101
8_104
8_110
8_115
8_120
8_123
8_124
8_125
8_127
8_129
8_81
8_94
8_99
8_116
8_122
8_130
T;
&guocheng ' T8 SETTASK
: 0_0
&average START.T
^stat1 @!
&average_test START.T
^stat1 @!
0 JUMP ;
: 0_14
&guocheng START.T
^stat1 @!
&TimerConvert START.T
^stat1 @!
0 JUMP ;
T: T0
DUMMY
0_0
0_14
T;
&Powerup ' T0 SETTASK
: 9_0
500 DELAY
*data 0 DATE>$
*time TIME>$
0 JUMP ;
: 9_1
^timer1 @@F ^temp1 F@!
^temp1 @@F 6.000000e+001 F/ 5.000000e-001 F- Round ^t_m F@!
^t_m @@ 0 < IF
0 ^t_m @!
THEN
^temp1 @@ 60 ^t_m @@ * - ^t_s @!
^t_m @@ ^t_min @@ <> IF
^start_end @@ 1 = ^qbks @@ 1 = LAND 0 ^t_m @@ <= LAND ^t_m @@ 30 <= LAND IF
~DO_104 @@I 0 = IF
1 ~DO_104 @!
ELSE
0 ~DO_104 @!
THEN
THEN
^t_m @@ ^t_min @!
THEN
-2 JUMP ;
T: T9
DUMMY
9_0
9_1
T;
&TimerConvert ' T9 SETTASK
CREATE T.ARRAY
&average ,
&average_test ,
&chart1 ,
&control_loop ,
&guocheng ,
&Powerup ,
&TimerConvert ,
0 ,
CREATE V.ARRAY
^ctrl_loop_flg ,
^data_101 ,
^data_102 ,
^data_t1 ,
^data_t1_total ,
^data_t2 ,
^data_t2_total ,
^deltat ,
^endflag ,
^flag ,
^I ,
^I1 ,
^In1 ,
^In2 ,
^JWT_OFF ,
^JWT_ON ,
^MODE ,
^qb1 ,
^qb2 ,
^qbks ,
^start_end ,
^startflag ,
^stat1 ,
^t_m ,
^t_min ,
^t_s ,
^t_SET ,
^temp1 ,
^TI101_data ,
^TI102_data ,
^total1 ,
^total2 ,
*data ,
*qbks_time ,
*time ,
*_HSV_SEMA ,
*_HSV_TEMP ,
0 ,
CREATE TI.ARRAY
^timer1 ,
0 ,
CREATE PTR.ARRAY
0 ,
CREATE TA.ARRAY
}data_table1 ,
}data_table2 ,
}out_table ,
}table_t2 ,
0 ,
CREATE PTRTABLE.ARRAY
0 ,
CREATE B.ARRAY
%controller ,
0 ,
CREATE P.ARRAY
~DI_101 ,
~DI_102 ,
~DI_103 ,
~DO_101 ,
~DO_102 ,
~DO_103 ,
~DO_104 ,
~AO_101 ,
~AO_201 ,
~TI_101 ,
~TI_102 ,
0 ,
CREATE PID.ARRAY
|TIC_101 ,
|TIC_201 ,
0 ,
CREATE E/R.ARRAY
0 ,
CREATE E/RGROUP.ARRAY
0 ,
T: T_INIT_IO
$00000000000033F7.. %controller ENABLES!
|TIC_101 ENABLE
|TIC_201 ENABLE
%controller ENABLE
0 ^ctrl_loop_flg @!
0.00000000 ^data_101 @!
0.00000000 ^data_102 @!
0.00000000 ^data_t1 @!
0.00000000 ^data_t1_total @!
0.00000000 ^data_t2 @!
0.00000000 ^data_t2_total @!
0.00000000 ^deltat @!
0 ^endflag @!
0 ^flag @!
0 ^I @!
0 ^I1 @!
0 ^In1 @!
0 ^In2 @!
0.00000000 ^JWT_OFF @!
0.00000000 ^JWT_ON @!
0 ^MODE @!
0 ^qb1 @!
0 ^qb2 @!
0 ^qbks @!
0 ^start_end @!
0 ^startflag @!
0 ^stat1 @!
0 ^t_m @!
0 ^t_min @!
0 ^t_s @!
0.00000000 ^t_SET @!
0 ^temp1 @!
0.00000000 ^TI101_data @!
0.00000000 ^TI102_data @!
0.0 ^timer1 SetTimer
0.00000000 ^total1 @!
0.00000000 ^total2 @!
0.00000000 0 -1 }data_table1 InitTable
0.00000000 0 -1 }data_table2 InitTable
0.00000000 0 -1 }out_table InitTable
0.00000000 0 -1 }table_t2 InitTable
" "
*data $MOVE
" 00:00:00"
*qbks_time $MOVE
" "
*time $MOVE
&Powerup START.T DROP
T;
&_INIT_IO ' T_INIT_IO SETTASK
: _RUN
CLEARERRORS
&_INIT_IO START.T DROP
;
: DATESTAMP ." 10/24/06 " ;
: TIMESTAMP ." 19:01:06 " ;
MAKECHECK
CLEAR.BREAKS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -