1,建立FC10,打开FC10建立局部变量,IN输入接口变量INPIWADR(INT),INDBNUM(INT),INDBADR(INT),INL1…8(REAL),INH1…8(REAL),TEMP中间变量TEMP1(INT),TEMP2(INT),TEMP3(DWORD),TEMP4(DWORD),TEMP5(REAL),TEMP6(Array [1..8] Of Real),TEMP7(Array [1..8] Of Real)。
程序段:
L #INL1
T #TEMP6[1]
L #INL2
T #TEMP6[2]
L #INL3
T #TEMP6[3]
L #INL4
T #TEMP6[4]
L #INL5
T #TEMP6[5]
L #INL6
T #TEMP6[6]
L #INL7
T #TEMP6[7]
L #INL8
T #TEMP6[8]
L #INH1
T #TEMP7[1]
L #INH2
T #TEMP7[2]
L #INH3
T #TEMP7[3]
L #INH4
T #TEMP7[4]
L #INH5
T #TEMP7[5]
L #INH6
T #TEMP7[6]
L #INH7
T #TEMP7[7]
L #INH8
T #TEMP7[8]
LAR1 P##TEMP6
TAR1 #TEMP3
LAR2 P##TEMP7
TAR2 #TEMP4
L #INDBNUM
T #TEMP1
OPN DB [#TEMP1]
L #INPIWADR
SLW 3
LAR1
L #INDBADR
SLW 3
LAR2
L 8
A001: T #TEMP2
L PIW [AR1,P#0.0]
ITD
DTR
L 2.764800e+004
/R
T #TEMP5
L LD [#TEMP4]
L LD [#TEMP3]
-R
L #TEMP5
*R
L LD [#TEMP3]
+R
T DBD [AR2,P#0.0]
L #TEMP3
+ 32
T #TEMP3
L #TEMP4
+ 32
T #TEMP4
+AR1 P#2.0
+AR2 P#4.0
L #TEMP2
LOOP A001
以上代码用在300PLC模拟量8路批量转换,都是参考论坛大师回复帖子的信息自己整理的。
实际仿真测试时我把A001中L PIW [AR1,P#0.0]改为L DBW [AR1,P#0.0]可以执行,运行结果也正确。
问题1:TEMP3,TEMP4定义类型为DWord或者Dint仿真测试时好象都可以,实际应该定义什么数据类型?
问题2:输入接口INPIWADR,INDBADR定义的为INT数据类型,但程序段中用SLD 3或者SLW 3仿真测试时都可执行。实际应该根据数据类型用SLW 3吧?如果是REAL类型用SLD 3?
问题3:最前面取量程上下限能简化程序段不?有啥命令能把输入8路上/下限量程传送到数组TEMP[6]/ TEMP[7]中?如果程序段中还有其他错误请老师指点优化。