模拟量编程问题请教

已锁定

旁观者——清

  • 帖子

    75
  • 精华

    0
  • 被关注

    2

论坛等级:游侠

注册时间:2010-01-27

普通 普通 如何晋级?

模拟量编程问题请教

607

2

2010-05-30 11:05:02

下面的程序编的是比例阀的程序:
请教如何分析这段程序?
L DBNO
T #db_Speicher //DB-Register retten
L DINO //DI-Register retten
T #di_Speicher //DB-Register retten
TAR1 #AR1_Speicher //AR1 retten
TAR2 #AR2_Speicher //AR2 retten

// -## Plausibilit鋞spr黤ung

A(
L #Typ_Ausgang
L 1
)
O
A(
L #Typ_Ausgang
L 4
>I
)
O
A(
L #Typ_Eingang
L 1
)
O
A(
L #Typ_Eingang
L 2
>I
)
= #PAFE
JCN KFEH
L 0
T #Ausgabe
JU ENDE
KFEH: NOP 0

OPN #DB_Antrieb //DB mit Positionen und geschwindigkeiten oeffnen

A #FU_Fehler
JC FU1
A #Start_1 // Ziel 1 anfahren
JC M010
A #Start_2 // Ziel 2 anfahren
JC M011
A #Start_3 // Ziel 3 anfahren
JC M012
A #Start_4 // Ziel 4 anfahren
JC M013
A #Start_5 // Ziel 5 anfahren
JC M014
A #Start_6 // Ziel 6 anfahren
JC M015
A #Start_7 // Ziel 7 anfahren
JC M016
A #Start_8 // Ziel 8 anfahren
JC M017
A #Start_9 // Ziel 9 anfahren
JC M018
A #Start_10 // Ziel 10 anfahren
JC M019
A #Start_11 // Ziel 11 anfahren
JC ST11
A #Start_12 // Ziel 12 anfahren
JC ST12
A #Start_13 // Ziel 13 anfahren
JC ST13
A #Start_14 // Ziel 14 anfahren
JC ST14
A #Start_15 // Ziel 15 anfahren
JC ST15

FU1: L DBD 138 // keine Bewegung, letzte Zielposition laden
T #Zielposition
L 0
T #Beschleunigung
T #Verzoegerung
JU M003 // weiter mit Positionsfenster berechnen

M010: L DBD 4 // Ziel 1 anfahren
T #Zielposition
L DBW 76
T #Beschleunigung
L DBW 78
T #Verzoegerung
L DBW 162
T #override
JU M003

M011: L DBD 8 // Ziel 2 anfahren
T #Zielposition
L DBW 80
T #Beschleunigung
L DBW 82
T #Verzoegerung
L DBW 164
T #override
JU M003

M012: L DBD 12 // Ziel 3 anfahren
T #Zielposition
L DBW 84
T #Beschleunigung
L DBW 86
T #Verzoegerung
L DBW 166
T #override
JU M003

M013: L DBD 16 // Ziel 4 anfahren
T #Zielposition
L DBW 88
T #Beschleunigung
L DBW 90
T #Verzoegerung
L DBW 168
T #override
JU M003

M014: L DBD 20 // Ziel 5 anfahren
T #Zielposition
L DBW 92
T #Beschleunigung
L DBW 94
T #Verzoegerung
L DBW 170
T #override
JU M003

M015: L DBD 24 // Ziel 6 anfahren
T #Zielposition
L DBW 96
T #Beschleunigung
L DBW 98
T #Verzoegerung
L DBW 172
T #override
JU M003

M016: L DBD 28 // Ziel 7 anfahren
T #Zielposition
L DBW 100
T #Beschleunigung
L DBW 102
T #Verzoegerung
L DBW 174
T #override
JU M003

M017: L DBD 32 // Ziel 8 anfahren
T #Zielposition
L DBW 104
T #Beschleunigung
L DBW 106
T #Verzoegerung
L DBW 176
T #override
JU M003

M018: L DBD 36 // Ziel 9 anfahren
T #Zielposition
L DBW 108
T #Beschleunigung
L DBW 110
T #Verzoegerung
L DBW 178
T #override
JU M003

M019: L DBD 40 // Ziel 10 anfahren
T #Zielposition
L DBW 112
T #Beschleunigung
L DBW 114
T #Verzoegerung
L DBW 180
T #override
JU M003

ST11: L DBD 44 // Ziel 11 anfahren
T #Zielposition
L DBW 116
T #Beschleunigung
L DBW 118
T #Verzoegerung
L DBW 182
T #override
JU M003

ST12: L DBD 48 // Ziel 12 anfahren
T #Zielposition
L DBW 120
T #Beschleunigung
L DBW 122
T #Verzoegerung
L DBW 184
T #override
JU M003

ST13: L DBD 52 // Ziel 13 anfahren
T #Zielposition
L DBW 124
T #Beschleunigung
L DBW 126
T #Verzoegerung
L DBW 186
T #override
JU M003

ST14: L DBD 56 // Ziel 14 anfahren
T #Zielposition
L DBW 128
T #Beschleunigung
L DBW 130
T #Verzoegerung
L DBW 188
T #override
JU M003

ST15: L DBD 60 // Ziel 15 anfahren
T #Zielposition
L DBW 132
T #Beschleunigung
L DBW 134
T #Verzoegerung
L DBW 190
T #override
JU M003

// Parameter f黵 Positionierungs-FB laden

M003: L DBW 150 // Zeitbasis f黵 Stoprampe [sec]
L DBW 136 // Stoprampe in [%]
*I
DTR
L 1.000000e+002
/R
T #Stopzeit // Stopzeit [sec]

L DBW 66
T #Regelfenster
L DBW 72
T #Min_Geschwindigkeit

L DBW 74
L #override
*I
L 100
/I
T #Max_Geschwindigkeit


L DBW 148
T #WegbasisRampen

L #Typ_Eingang
L 2
==I
JC MTS1

L #Istposition
T #Istposition_Help // Istposition als DINT
T DBD 0 // Istposition f黵 Anzeige im OP
JU AR1

MTS1: L #Istposition
T #Istposition_Help // Istposition als DINT

LAR1 P##Istposition_Help

A #Reset_Err
R #Err_MagMTS
A L [AR1,P#0.3] // Auswertung Err_Magnet
S #Err_MagMTS
L 0
T LB [AR1,P#0.0]
A L [AR1,P#1.7] // Istposition Neg.
JCN pos
L DW#16#FF
T LB [AR1,P#0.0] // PEB 黚erblenden mit 255
pos: NOP 0

L #Istposition
SLD 8
SRD 8
T #Istposition_Help // Istposition als DINT
T DBD 0 // Istposition f黵 Anzeige im OP

AR1: NOP 0

L #Zielposition
T DBD 138 // aktuelle Zielposition f黵 Anzeige auf OP
L DBW 154
T #Rest_Geschwindigkeit // aktuelle Restgeschwindigkeit


// Freigabe Positionierung

A #Einr_pos // Sperren der Positionierung nach dem Umschalten
O #Einr_neg // von Einrichten auf einen Starteingang
L S5T#2S
SF #Sperrzeit

AN #Sperrzeit
AN #Selbsth_pos // Vor in Selbsthaltung
AN #Selbsth_neg // Zur. in Selbsthaltung
AN #FU_Fehler
A(
O #Start_1
O #Start_2
O #Start_3
O #Start_4
O #Start_5
O #Start_6
O #Start_7
O #Start_8
O #Start_9
O #Start_10
O #Start_11
O #Start_12
O #Start_13
O #Start_14
O #Start_15
)
= #Freigabe // Freigabe, wenn mindest. 1 Startbefehl, kein Einr., keine Selbsth.

// Preset Encoder

OPN #DB_Antrieb

L #Typ_Eingang
L 2
==I
JC MTS2

L DBD 144 // Encoder Wert wenn kein Preset
T #Encoder
AN #Preset
JC M004
L DBD 144 // Presetwert Encoder
L DW#16#80000005 // Preset Encoder auf Presetwert
OD
T #Encoder
JU M004

MTS2: L 0 // Encoder Wert wenn kein Preset
T #Encoder
AN #Preset
JC M004
L DBD 144 // Presetwert Encoder
CAW
SLD 8 // f黵 MTS aufbereiten STATUS/HIGH/MEDIUM/LOW Byte
L DW#16#12000000 // Preset Encoder auf Presetwert
OD
T #Encoder

M004: NOP 0


// Positionsfenster Zielposition 1 berechnen

L DBD 4 // Zielposition 1
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z1
L DBD 4 // Zielposition 1
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z1

// Positionsfenster Zielposition 2 berechnen

L DBD 8 // Zielposition 2
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z2
L DBD 8 // Zielposition 2
L DBW 64 // Positionsfenster
+D

// Positionsfenster Zielposition 3 berechnen

T #PosFensterEnde_Z2
L DBD 12 // Zielposition 3
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z3
L DBD 12 // Zielposition 3
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z3

// Positionsfenster Zielposition 4 berechnen

L DBD 16 // Zielposition 4
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z4
L DBD 16 // Zielposition 4
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z4

// Positionsfenster Zielposition 5 berechnen

L DBD 20 // Zielposition 5
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z5
L DBD 20 // Zielposition 5
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z5

// Positionsfenster Zielposition 6 berechnen

L DBD 24 // Zielposition 6
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z6
L DBD 24 // Zielposition 6
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z6

// Positionsfenster Zielposition 7 berechnen

L DBD 28 // Zielposition 7
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z7
L DBD 28 // Zielposition 7
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z7

// Positionsfenster Zielposition 8 berechnen

L DBD 32 // Zielposition 8
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z8
L DBD 32 // Zielposition 8
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z8

// Positionsfenster Zielposition 9 berechnen

L DBD 36 // Zielposition 9
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z9
L DBD 36 // Zielposition 9
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z9

// Positionsfenster Zielposition 10 berechnen

L DBD 40 // Zielposition 10
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z10
L DBD 40 // Zielposition 10
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z10

// Positionsfenster Zielposition 11 berechnen

L DBD 44 // Zielposition 11
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z11
L DBD 44 // Zielposition 11
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z11

// Positionsfenster Zielposition 12 berechnen

L DBD 48 // Zielposition 12
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z12
L DBD 48 // Zielposition 12
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z12

// Positionsfenster Zielposition 13 berechnen

L DBD 52 // Zielposition 13
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z13
L DBD 52 // Zielposition 13
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z13

// Positionsfenster Zielposition 14 berechnen

L DBD 56 // Zielposition 14
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z14
L DBD 56 // Zielposition 14
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z14

// Positionsfenster Zielposition 15 berechnen

L DBD 60 // Zielposition 15
L DBW 64 // Positionsfenster
-D
T #PosfensterAnfang_Z15
L DBD 60 // Zielposition 15
L DBW 64 // Positionsfenster
+D
T #PosFensterEnde_Z15


R #InZiel_1 // Reset Ziel erreicht
R #InZiel_2
R #InZiel_3
R #InZiel_4
R #InZiel_5
R #InZiel_6 // Reset Ziel erreicht
R #InZiel_7
R #InZiel_8
R #InZiel_9
R #InZiel_10
R #InZiel_11
R #InZiel_12
R #InZiel_13
R #InZiel_14
R #InZiel_15

L #Istposition_Help // Zielposition 1 erreicht
L #PosfensterAnfang_Z1
JC M005
L #Istposition_Help
L #PosFensterEnde_Z1
>D
JC M005
= #InZiel_1

M005: L #Istposition_Help // Zielposition 2 erreicht
L #PosfensterAnfang_Z2
JC M006
L #Istposition_Help
L #PosFensterEnde_Z2
>D
JC M006
= #InZiel_2

M006: L #Istposition_Help // Zielposition 3 erreicht
L #PosfensterAnfang_Z3
JC M007
L #Istposition_Help
L #PosFensterEnde_Z3
>D
JC M007
= #InZiel_3

M007: L #Istposition_Help // Zielposition 4 erreicht
L #PosfensterAnfang_Z4
JC M008
L #Istposition_Help
L #PosFensterEnde_Z4
>D
JC M008
= #InZiel_4

M008: L #Istposition_Help // Zielposition 5 erreicht
L #PosfensterAnfang_Z5
JC M009
L #Istposition_Help
L #PosFensterEnde_Z5
>D
JC M009
= #InZiel_5

M009: L #Istposition_Help // Zielposition 6 erreicht
L #PosfensterAnfang_Z6
JC M021
L #Istposition_Help
L #PosFensterEnde_Z6
>D
JC M021
= #InZiel_6

M021: L #Istposition_Help // Zielposition 7 erreicht
L #PosfensterAnfang_Z7
JC M022
L #Istposition_Help
L #PosFensterEnde_Z7
>D
JC M022
= #InZiel_7

M022: L #Istposition_Help // Zielposition 8 erreicht
L #PosfensterAnfang_Z8
JC M023
L #Istposition_Help
L #PosFensterEnde_Z8
>D
JC M023
= #InZiel_8

M023: L #Istposition_Help // Zielposition 9 erreicht
L #PosfensterAnfang_Z9
JC M024
L #Istposition_Help
L #PosFensterEnde_Z9
>D
JC M024
= #InZiel_9

M024: L #Istposition_Help // Zielposition 10 erreicht
L #PosfensterAnfang_Z10
JC Z11
L #Istposition_Help
L #PosFensterEnde_Z10
>D
JC Z11
= #InZiel_10

Z11: L #Istposition_Help // Zielposition 11 erreicht
L #PosfensterAnfang_Z11
JC Z12
L #Istposition_Help
L #PosFensterEnde_Z11
>D
JC Z12
= #InZiel_11

Z12: L #Istposition_Help // Zielposition 12 erreicht
L #PosfensterAnfang_Z12
JC Z13
L #Istposition_Help
L #PosFensterEnde_Z12
>D
JC Z13
= #InZiel_12

Z13: L #Istposition_Help // Zielposition 13 erreicht
L #PosfensterAnfang_Z13
JC Z14
L #Istposition_Help
L #PosFensterEnde_Z13
>D
JC Z14
= #InZiel_13

Z14: L #Istposition_Help // Zielposition 14 erreicht
L #PosfensterAnfang_Z14
JC Z15
L #Istposition_Help
L #PosFensterEnde_Z14
>D
JC Z15
= #InZiel_14

Z15: L #Istposition_Help // Zielposition 15 erreicht
L #PosfensterAnfang_Z15
JC FB35
L #Istposition_Help
L #PosFensterEnde_Z15
>D
JC FB35
= #InZiel_15



FB35: CALL "FB30 PPV-DG" , #DB_FB_POS
Zielposition :=#Zielposition
Istposition :=#Istposition_Help
Beschleunigung :=#Beschleunigung
Verzoegerung :=#Verzoegerung
ZeitStoprampe :=#Stopzeit
Min_Geschwindigkeit :=#Min_Geschwindigkeit
Max_Geschwindigkeit :=#Max_Geschwindigkeit
Rest_Geschwindigkeit:=#Rest_Geschwindigkeit
Regelfenster :=#Regelfenster
WegbasisRampe :=#WegbasisRampen
Vmax_Wegbasis :=100
Freigabe :=#Freigabe
Regelposition :=#InRegelf
Sollgeschw_Prozent :=#V_aktuell

OPN #DB_Antrieb // DB mit Positionen und Geschwindigkeiten aufrufen
A #Einr_pos // Im Einrichtbetrieb positive Ausgangsspannung
O #Selbsth_pos // In Selbsthaltung positive Ausgangsspannung
JC M001
A #Einr_neg // Im Einrichtbetrieb negative Ausgangsspannung
O #Selbsth_neg // In Selbsthaltung negative Ausgangsspannung
JC M002
JU M026


M001: L DBW 68 // Im Einrichtbetrieb positive Ausgangsspannung
DTR
T #V_aktuell
OPN #DB_FB_POS
SET
R DBX 56.2 // Stopp Flanke l鰏chen
R DBX 56.5 // Stopp aktiv negativ
R DBX 56.6 // Stopp aktiv positiv
OPN #DB_Antrieb
JU M026

M002: L DBW 70 // Im Einrichtbetrieb negative Ausgangsspannung
NEGD
DTR
T #V_aktuell
OPN #DB_FB_POS
SET
R DBX 56.2 // Stopp Flanke l鰏chen
R DBX 56.5 // Stopp aktiv negativ
R DBX 56.6 // Stopp aktiv positiv
OPN #DB_Antrieb

M026: L #V_aktuell
AN #Richtungsumkehr //Zylinderhub in pos. oder neg. Wegrichtung
JC M027
L -1.000000e+000
*R
T #V_aktuell
M027: L 0.000000e+000
>=R
= #Geschw_Pos //Positive oder negative Geschwindigkeit
AN #Geschw_Pos //negative Geschwindigkeit
JC M020

L #Typ_Ausgang
L 2
==I
JC _IP // Ausgabe Strom
TAK
L 3
==I
JC _NPS // Ausgabe Drehzahl Betrieb Micromaster MM4xx
TAK
L 4 // Ausgabe Drehzahl Betrieb Lenzeumrichter 82xx
==I
JC _NPL

// -## Ausgabe Spannung positiv

L #V_aktuell
L 2.764800e+004 //100% <-> 27648 <-> +10V
*R
L 1.000000e+002
/R
RND
T #Ausgabe //Ausgabe Geschwindigkeit Analogausgabe 0 - +10V

JU ENDE

// -## Ausgabe Strom positiv

_IP: L #V_aktuell //100% <-> 27648 <-> +20mA
L 1.382400e+004 //0% <-> 13834 <-> 12mA
*R
L 1.000000e+002
/R
L 1.382400e+004
+R
RND
T #Ausgabe //Ausgabe Geschwindigkeit Analogausgabe 4-20mA

L 1728
/I
L 4
+I
T DBW 142 //Anzeige OP 4-20mA
JU ENDE

// -## Ausgabe Drehzahl Betrieb mit Lenzeumrichter 82xx positiv

_NPL: L #V_aktuell
ITD
DTR
L #Max_n_Motor // maximale Drehzahl vom Motor
*R
L 2.764800e+004
/R
RND
T #Ausgabe

JU ENDE

// -## Ausgabe Drehzahl Betrieb mit Micromaster MM4xx positiv

_NPS: L #V_aktuell
L 1.638400e+004 // 100% -> 16384 = 4000Hex = 50Hz
*R
L 1.000000e+002
/R
RND
T #Ausgabe //Ausgabe Drehzahl Motor (0 - 16384 => 0 - 100%)

JU M028

M020: L #Typ_Ausgang
L 2
==I
JC _IN
TAK
L 3
==I
JC _NNS
TAK
L 4
==I
JC _NNL

// -## Ausgabe Spannung negativ

L #V_aktuell //-100% <-> -27648 <-> -10V
L 2.764800e+004
*R
L 1.000000e+002
/R
RND
T #Ausgabe //Ausgabe Geschwindigkeit Analogausgabe 0 - -10V

JU ENDE

// -## Ausgabe Strom negativ

_IN: L #V_aktuell //-100% <-> 0 <-> +4mA
L -1.382400e+004 //0% <-> 13834 <-> 12mA (Vaktuell ist negativ)
*R
L 1.000000e+002
/R
L 1.382400e+004
TAK
-R
RND
T #Ausgabe //Ausgabe Geschwindigkeit Analogausgabe 4-20mA

L 1728
/I
L 4
+I
T DBW 142 //Anzeige OP 4-20mA
JU ENDE

// -## Ausgabe Drehzahl Betrieb mit Lenzeumrichter 82xx negativ

_NNL: L #V_aktuell
ITD
DTR
L #Max_n_Motor // maximale Drehzahl vom Motor
*R
L 2.764800e+004
/R
RND
T #Ausgabe

JU ENDE

// -## Ausgabe Drehzahl Betrieb mit Micromaster MM4xx negativ

_NNS: L #V_aktuell
L 1.638400e+004 // 100% -> 16384 = 4000Hex = 50Hz
*R
L 1.000000e+002
/R
RND
T #Ausgabe //Ausgabe Drehzahl Motor (0 - -16384 => 0 - -100%)

M028: NOP 0

L #f_50_87Hz
ABS
T #f_50_87Hz
L 5.000000e+001
JCN M029
T #f_50_87Hz
M029: TAK
L 8.700000e+001
>R
JCN M030
T #f_50_87Hz
M030: NOP 0

L #Ausgabe
ITD
DTR
L #f_50_87Hz
*R
L 5.000000e+001
/R
RND
T #Ausgabe

ENDE: L #V_aktuell // -100% <-> +100%
RND
T DBW 152 // Anzeige OP -100% <-> +100%


OPN DB [#db_Speicher] //DB-Register wiederherstellen
OPN DI [#di_Speicher] //DI-Register wiederherstellen
LAR1 #AR1_Speicher //AR1 wiederherstellen
LAR2 #AR2_Speicher //AR2 wiederherstellen
模拟量编程问题请教 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54756条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。