DB里有100个REAL。需要将这100个REAL的高低字做互换。(触摸屏程序中是按照符号名称来寻址这些REAL的,如果PLC里将这100个REAL改成数组类型的话,触摸屏程序也要跟着变动)。
1、不用数组,不用FIELDREADFIELDWRITE指令。1200如何做间接寻址?
2、如果用scl语言能否实现上述功能?SCL里如何做间接寻址?
谢谢各位老师。
最佳答案
给你个我自己用的,接口定义如图
FOR#index:=0TO#Len_ByteDO
#Read_Index:=#index*2+#Read_DB_Offset;
#Write_Index:=#index*2+#Write_DB_Offset;
#Data_Read_L:=PEEK(area:=16#84,//读取一条
dbNumber:=#"Read_DB_No.",
byteOffset:=#Read_Index);
#Data_Read_H:=PEEK(area:=16#84,
dbNumber:=#"Read_DB_No.",
byteOffset:=#Read_Index+1);
POKE(area:=16#84,//写入
dbNumber:=#"Write_DB_No.",
byteOffset:=#Write_Index,
vaLUe:=#Data_Read_H);
POKE(area:=16#84,
dbNumber:=#"Write_DB_No.",
byteOffset:=#Write_Index+1,
value:=#Data_Read_L);
END_FOR;
不过,数据量大的话不建议在PLC里面做,循环100次对扫描周期多度少少都有影响,什么品牌型号的触摸屏?触摸屏是否本身就有高低字交换的功能?建议确认下
提问者对于答案的评价:
谢谢回答。
专家置评
的确,使用peek,poke指令,是不错的主意。