恭喜,你发布的帖子
发布于 2020-08-23 23:15:07
3楼
FUNCTION FC 19 : VOID
TITLE =
AUTHOR : NUMERIK
FAMILY : _800D
NAME : MCP_IFM
VERSION : 6.1
CODE_VERSION1
VAR_INPUT
BAGNo : BYTE ; //方式组号(面板信号传送到哪个方式组)
ChanNo : BYTE ; //通道号(面板信号传送到哪个通道)
SpindleIFNo : BYTE ; // 主轴号
END_VAR
VAR_OUTPUT
FeedHold : BOOL ; //进给保持
SpindleHold : BOOL ; //主轴停
END_VAR
VAR_TEMP
schmier : ARRAY [0 .. 15 ] OF BOOL ; //Schmierzellen fuer Flanken *
richtung : BYTE ; //方向键和快移键
richtung2 : BYTE ;
richtung3 : BYTE ; //dummy
achs_nr : BYTE ; //aktuell angewaehlte Achsnr. von MST
bb : ARRAY [0 .. 15 ] OF BOOL ; //BAG-Anwahlen
akt_db : WORD ; // Achtung, vorher Absolutzugriffe (*) !!!
max_bag : WORD ; // 方式组的个数
max_kan : WORD ; //通道的个数
max_axe : WORD ; //轴(包括进给轴和主轴)的个数
mst_ein01 : ARRAY [0 .. 15 ] OF BOOL ; //temporaere Eingaenge 0.0..1.7 * (lb12)
mst_ein23 : ARRAY [0 .. 15 ] OF BOOL ; //temporaere Eingaenge 2.0..3.7
mst_ein45 : ARRAY [0 .. 15 ] OF BOOL ; //temporaere Eingaenge 4.0..5.7
mst_ein67 : ARRAY [0 .. 15 ] OF BOOL ; //temporaere Eingaenge 6.0..7.7
mst_aus01 : ARRAY [0 .. 15 ] OF BOOL ; //temporaere Ausgaenge 0.0..1.7
mst_aus23 : ARRAY [0 .. 15 ] OF BOOL ; //temporaere Ausgaenge 2.0..3.7
mst_aus45 : ARRAY [0 .. 15 ] OF BOOL ; //temporaere Ausgaenge 4.0..5.7
mst_aus67 : ARRAY [0 .. 15 ] OF BOOL ; //temporaere Ausgaenge 6.0..7.7 *
loop_c : WORD ; //loop counter
increment : BYTE ; //INC信号
ba_inc : BYTE ; //Maschinenfunktion INC Rueckmeldung
param : INT ;
Poi_Aus : DWORD ; //Pointer Ausgaenge
MCP_db : WORD ; //Maschinensteuer DB
BAGN : BYTE ; //方式组的个数
mksaxisold : BYTE ; //Achsno old if new axis sel.
DB8Offs : DWORD ; //面板在DB8中的偏移
mkschange : BOOL ; //changed
wksold : BOOL ; //是WCS
mstt2 : BOOL ;
vskorr : BYTE ; //倍率信号
END_VAR
BEGIN
NETWORK
TITLE =
///NETZWERK Eingang
L DB7.DBW 128; //OB100中FB1的输出参数,方式组的个数
T #max_bag; //临时变量,只在此程序块(FC19)中有效
L DB7.DBW 130; //OB100中FB1的输出参数,通道的个数
T #max_kan;
L DB7.DBW 132; //OB100中FB1的输出参数,轴(包括进给轴和主轴)的个数
T #max_axe;
L #BAGNo; //FC19输入参数,方式组号
PUSH ;
AW W#16#F;
T #BAGN; //方式组的个数
POP ;
AW W#16#F0;
SET ;
JZ e001; //若此参数是B#16#0*,则表示是第一面板;若此参数是B#16#1*,则表示是第二面板
S #mstt2; //置第二面板标志,表示此FC19是处理第二面板信号的
LAR2 P#62.0; //第二面板在DB8中的偏移Offset im DB8 f. 2. MCP
LAR1 DB7.DBD 150; //第二面板的指针
JU e002;
e001: R #mstt2;
LAR2 P#0.0; //第一面板在DB8中的偏移Offset im DB8 f. 1. MCP
LAR1 DB7.DBD 146; //第二面板的指针
e002: TAR2 #DB8Offs; //将地址寄存器的值传送到临时变量
OPN DI 8;
L DIW [AR2,P#0.0];
T LW 0; //Schmierzellen (Schmier) = Flankenmerker *
L DIB [AR2,P#3.0];
T #achs_nr; //holen des alten Zustandes Achsnr.
A DIX 1.7; //First Run absolut
= #schmier[15]; //kopieren
//
L DBW [AR1,P#0.0]; //DB-Nr. der MSTT
T #MCP_db;
L DBD [AR1,P#8.0]; //输出的指针Pointer auf Ausgaenge
T #Poi_Aus;
L DBD [AR1,P#2.0]; //输入的指针Pointer auf Eingaenge
LAR1 ;
OPN DB [#MCP_db]; //aufschlagen des DB fuer MST
LAR2 P##mst_ein01; //Adresse mst_ein laden (Var_temp Datum) !!!
//AR2 wird im gesamten Baustein als Zeiger
//verwendet
L D [AR1,P#0.0]; //面板的输入IB0-IB3
T LD [AR2,P#0.0]; //存放在临时变量mst_ein01
L D [AR1,P#4.0]; //面板的输入IB4-IB7
T LD [AR2,P#4.0]; //存放在临时变量mst_ein23
LAR1 #Poi_Aus; //bereichsuebergreifende Adresse der MST Ausgaenge
L D [AR1,P#0.0]; //面板的输出QB0-QB3
T LD [AR2,P#8.0]; //存放在临时变量mst_aus01
L W [AR1,P#4.0]; //面板的输出QB4-QB5
T LW [AR2,P#12.0]; //存放在临时变量mst_aus23
A DIX 45.0; //neuer Hochlauf Mimik
JCN e100;
A #mstt2;
JC e099;
= #mst_ein45[3]; //面板X轴键
e099: = #schmier[0]; //Vorschub Halt setzen
= #schmier[1]; //Spindel Halt setzen
S DB10.DBX 57.0; //INC Anwahl in BAG Interface
e100: R #mkschange;
L B#16#0;
T #ba_inc;
T #mksaxisold; //keine MKS Achse zu deaktivieren
T #richtung;
///NETZWERK Global_ein
L LB [AR2,P#1.0]; //面板IB1
AW W#16#3F; //保留INC信号
T #increment; //存放在临时变量
//
L LB [AR2,P#3.0]; //面板IB3
AW W#16#1F; //保留倍率信号
T #vskorr; //存放在临时变量
A #schmier[7]; //First Run Merker
JC n001; //NC Bearbeitung
//
A #mst_aus23[13]; //面板上WCS_MCS LED灯亮,是WCS
= #wksold;
A #mst_ein45[12]; //面板上WCS_MCS键
FP #schmier[3];
JCN mks1;
S #mkschange;
AN #mst_aus23[13]; //面板上WCS_MCS LED灯,原来灭,点亮;原来亮,熄灭
= #mst_aus23[13];
//angewaehlte Achsnr. wird 0
L #achs_nr; //装载轴号
JU mks2;
mks1: L LW [AR2,P#4.0]; //面板输入IB4和IB5
AW W#16#EE7; //保留轴选择键
L #achs_nr; //veraendert nicht die Anzeigebits
JZ kea2;
mks2: A #wksold; //原来是工件坐标系
JC mks4;
T #mksaxisold; //alte gewaehlte Achse retten
mks4: L LD [AR2,P#10.0]; //面板输出QB2和QB3
AD DW#16#8F31FEFF; //去掉轴选择键的LED
T LD [AR2,P#10.0];
A #mkschange; //进行了WCS和MCS的切换
JC kea1;
A #mst_aus23[13];
JC wks3; //如果面板上WCS LED灯亮,转wks3
LAR1 P#8.0; //Axis table for MCP1
AN #mstt2;
JC ke90;
LAR1 P#32.0; //Axis table for MCP2
ke90: OPN DI 10; //DB for Axis Table
L DIW [AR1,P#22.0]; //maxaxis for MCP1, MCP2
OW W#16#0;
JN wks4; //if not zero
L #max_axe; //max. Anzahl Maschinenachsen
JU wks4;
kea2: L LB [AR2,P#4.0]; //面板IB4
AW W#16#E0; //保留方向键和快移键
T #richtung;
JU kea3;
wks3: L B#16#3; //max. Anzahl GEO-achsen
wks4: JL m009;
JU keae; //Accu = 0
JU m001;
JU m002;
JU m003;
JU m004;
JU m005;
JU m006;
JU m007;
JU m008;
JU m009;
m009: A #mst_ein45[10]; //面板第9轴选择键
S #mst_aus23[11]; //面板第9轴LED
L B#16#9; //轴号
JC keae;
m008: A #mst_ein45[9]; //面板第8轴选择键
S #mst_aus23[10]; //面板第8轴LED
L B#16#8; //轴号
JC keae;
m007: A #mst_ein45[1]; //面板第7轴选择键
S #mst_aus23[4]; //面板第7轴LED
L B#16#7; //轴号
JC keae;
m006: A #mst_ein45[8]; //面板第6轴选择键
S #mst_aus23[9]; //面板第6轴LED
L B#16#6; //轴号
JC keae;
m005: A #mst_ein45[13]; //面板第5轴选择键
S #mst_aus23[14]; //面板第5轴LED
L B#16#5; //轴号
JC keae;
m004: A #mst_ein45[2]; //面板第4轴选择键
S #mst_aus23[5]; //面板第4轴LED
L B#16#4; //轴号
JC keae;
m003: A #mst_ein45[14]; //面板Z轴选择键
S #mst_aus23[15]; //面板Z轴LED
L B#16#3; //轴号
JC keae;
m002: A #mst_ein45[15]; //面板Y轴选择键
S #mst_aus45[0]; //面板Y轴LED
L B#16#2; //轴号
JC keae;
m001: A #mst_ein45[3]; //面板X轴选择键
S #mst_aus23[6]; //面板X轴LED
L B#16#1; //轴号
JC keae;
kea1: L B#16#0; //轴号清零
JU ke99;
keae: A #mst_aus23[13]; //LED MKS/WKS
JC ke99;
DEC 1;
SLW 3; //Accu to Pointer
+AR1 ;
OPN DI 10; //DB for Axis Table
L DIB [AR1,P#0.0]; //Axis table for MCP1 or MCP2
ke99: T #achs_nr;
kea3: A #mst_ein45[6]; //面板负方向键
= #mst_aus23[7]; //面板负方向键LED
A #mst_ein45[7]; //面板正方向键
= #mst_aus23[8]; //面板正方向键LED
///NETZWERK NC
n001: A #schmier[15]; //First run absolut
JC e010;
OPN DI 10; //Signale von PLC an NCK
A #mst_ein23[7]; //面板钥匙开关0位置
= DIX 56.4; //DB10.dbx56.4
A #mst_ein23[14]; //面板钥匙开关1位置
= DIX 56.5; //DB10.dbx56.5
A #mst_ein23[6]; //面板钥匙开关2位置
= DIX 56.6; //DB10.dbx56.6
A #mst_ein45[4]; //面板钥匙开关3位置
= DIX 56.7; //DB10.dbx56.7
///NETZWERK BAG
e010: L B#16#1;
T #param; //als Fehlerparameter
L #max_bag; //方式组数
L #BAGN; //方式组号
OW W#16#0;
JZ KBAG; //若方式组号为0转KBAG
<I ; //方式组数小于方式组号转fehl,PLC停机
JC fehl;
DEC 1; //减1
L P#20.0; //20 Byte Offset
*I ;
LAR1 ; //Zeiger auf BAG
OPN DI 11; //BAG DB aufschlagen
//umverdrahten
A #mst_ein01[0]; //面板UTO方式选择键
= #bb[0]; //Automatik anwaehlen
A #mst_ein01[1]; //
请填写推广理由:
分享
只看
楼主