S7 300/400 的一些功能和技巧2 数据块拷贝 FUNCTION FC 100 : VOID TITLE = //DB BLOCK COPY AUTHOR : AXG NAME : DBBTODBB VERSION : 0.1
VAR_INPUT SOU_DB : INT ; //SOURCE DB NUMBER LENG : INT ; //HOW MANY TO COPY DES_DB : INT ; //DESTINATION DB NUMBER END_VAR VAR_TEMP SOURCE : ANY ; DEST : ANY ; END_VAR BEGIN NETWORK TITLE =
LAR1 P##SOURCE; // Load the start address of the ANY pointers in AR1. L B#16#10; // Load the syntax ID and T LB [AR1,P#0.0]; // transfer it to the ANY pointer. L B#16#4; // Load data type WORD and T LB [AR1,P#1.0]; // transfer it to the ANY pointer. L #LENG; // Load HOW MANY WORDS and T LW [AR1,P#2.0]; // transfer them to the ANY pointer L #SOU_DB; // Source is DB[?], DBB0.0 T LW [AR1,P#4.0]; // L P#DBX 0.0; // T LD [AR1,P#6.0]; // LAR1 P##DEST; //Load the DESTINATION address of the ANY pointer in AR1. L B#16#10; //Load the syntax ID and T LB [AR1,P#0.0]; //transfer it to the ANY pointer. L B#16#4; //Load data type WORD and T LB [AR1,P#1.0]; //transfer it to the ANY pointer. L #LENG; //Load HOW MANY WORDS and T LW [AR1,P#2.0]; //transfer them to the ANY pointer. L #DES_DB; //Destination is DB{?}, DBB0.0 T LW [AR1,P#4.0]; L P#DBX 0.0; // T LD [AR1,P#6.0]; // CALL "BLKMOV" (//Call the block move system function SRCBLK := #SOURCE,// RET_VAL := MW 210,//Evaluate the BR bit and MW 210 DSTBLK := #DEST);//
END_FUNCTION
使用说明:可直接调用,#SOURCE---源数据块号 #DEST------目标数据块号 #LENG----要拷贝数据的长度
S7 300/400 的一些功能和技巧2
单键翻转 FUNCTION FC 11 : VOID TITLE = // AUTHOR : AXG FAMILY : ESU NAME : SDZF VERSION : 0.0
BEGIN NETWORK TITLE =
A M 0.0; A M 0.1; = M 58.0; NETWORK TITLE =
A M 58.0; AN M 58.1; = M 58.2; NETWORK TITLE =
A M 58.2; S M 58.1; ON M 58.0; ON M 0.0; R M 58.1; NOP 0; NETWORK TITLE =
A M 58.2; A M 58.4; = M 58.3; NETWORK TITLE =
A M 58.2; AN M 58.3; AN M 58.4; S M 58.4; O M 58.3; ON M 0.0; R M 58.4; NOP 0;
END_FUNCTION
使用说明:M0.0----使能 M0.1----单键使M58.4翻转
S7 300/400 的一些功能和技巧3
循环读模拟量入DB块 L #DB_NO T LW 0 OPN DB [LW 0] L #PIW_ADDR SLD 3 T LD 4 L #DBD_ADDR SLD 3 T LD 8 L #CH_LEN NEXT: T LW 0 L LD 4 LAR1 L PIW [AR1,P#0.0] T LW 2
{ CALL "Read Analog Value 464-2" IN :=LW2 HI_LIM :=5.000000e+002 LO_LIM :=-1.000000e+001 将模拟量转换成工程量 BIPOLAR:=TRUE RET_VAL:=LW10 OUT :=LD12 }
L LD 8 LAR1 L LD 2 T DBD [AR1,P#0.0] L LD 4 + L#16 T LD 4 L LD 8 + L#32 T LD 8 L LW 0 LOOP NEXT
PIW_Addr :模拟块通道起始地址 CHI_LEN :要读入的 通道数 DB_NO :存储数据块 DBW_Addr :存储在数据块中的字地址
|