S7-SCL学习笔记:(2)在SCL程序中系统存储区的存取方法
经过一周的慢慢摸索,可以按以前的简单T型图程序写出SCL程序了。但感觉还是懵懵懂懂的,边学边总结吧,可能存在理解错误的地方,以后会好点的。
在西门了系统存储区I、Q、M、PQ、PI、DB等的读写操作有几种方式:绝对地址、数组、符号调用。它们的操作效果都一样,现举例如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
FUNCTION FC1 : VOID VAR_TEMP // Temporary Variables ii: INT; END_VAR VAR // Byte_Bit数组的0-7直接指向Byte_Struct.B的0-7位,存储区域一至 Byte_Struct : STRUCT B : BYTE; END_STRUCT; Byte_Bit AT Byte_Struct: ARRAY[0..7] OF BOOL; // BIT_VAL数组的0-7直接指向B_VAL的0-7位,存储区域一至 B_VAL : BYTE; BIT_VAL AT B_VAL: ARRAY[0..7] OF BOOL; END_VAR; // 在SCL程序系统存储区的存取方法:绝对地址、数组、符号调用 Q0.0 := Input00; // // 先在符号表中为I0.0定义符号:Input00 Q0.1 := TRUE; Q[0,2] := I[0,2]; Q[0,3] := TRUE; OFF_ON := 1; // 先在符号表中为Q0.4定义符号:OFF_ON "开关1" := true; // 先在符号表中为Q0.5定义中文符号:开关1,调用时要带双引号 PQB272 := INT_TO_BYTE(BYTE_TO_INT("模拟量输入1") + 80); // 先在符号表中为PIB272定义符号:模拟量输入1 PQB[273] := INT_TO_BYTE(BYTE_TO_INT(PIB[273]) + 90); "模拟量输出1" := DB10.NEWVAL; // 先在符号表中为PQB272定义符号:模拟量输出1 // AT 用法举例 Byte_Struct.B := MB100; FOR ii:= 0 TO 7 BY 1 DO // Statement Section Q[1,ii] := Byte_Bit[ii]; END_FOR; B_VAL := MB100; FOR ii:= 0 TO 7 BY 1 DO // Statement Section Q[2,ii] := BIT_VAL[ii]; END_FOR; END_FUNCTION |