作者 | 主题 |
---|---|
steven.lee 侠士 经验值:1302 发帖数:175 精华帖:2 |
楼主 2021-05-16 10:50:47
主题:批量WORD转REAL SCL/STL 程序 把一个DB块连续地址的WORD类型数据转成REAL类型存于另一个DB块,程序已经仿真验证。 1、STL 程序 FC块程序 VAR_INPUT DB_Source : Word; DB_Target : Word; END_VAR VAR_IN_OUT Loop_Counter : Int; END_VAR VAR_TEMP TEMP1 : Word; TEMP2 : Word; END_VAR BEGIN NETWORK TITLE = L #DB_Source; T #TEMP1; OPN DB[ #TEMP1]; L #DB_Target; T #TEMP2; OPN DI[ #TEMP2]; LAR1 P#0.0; LAR2 P#0.0; L 6; COND: T #Loop_Counter; L DBW[ AR1, P#0.0]; AD 16#FFFF; DTR; T DID[ AR2, P#0.0]; +AR1 P#2.0; +AR2 P#4.0; L #Loop_Counter; LOOP COND; END_FUNCTION OB1程序 BEGIN NETWORK TITLE = CALL "FC_STL_WORD_TO_REAL" ( DB_Source := 16#3 , DB_Target := 16#4 , Loop_Counter := "Value" ); NETWORK TITLE = END_ORGANIZATION_BLOCK 仿真结果如下: 2、SCL程序 FC块程序 VAR_INPUT DB_Source_NO : Int; DB_Source_Address : Int; DB_Target_NO : Int; DB_Target_Address : Int; END_VAR VAR_TEMP i : Int; END_VAR BEGIN FOR #i := 0 TO 5 DO WORD_TO_BLOCK_DB(INT_TO_WORD(#DB_Target_NO)).DD(#DB_Target_Address + #i * 4) := REAL_TO_DWORD(DINT_TO_REAL(DWORD_TO_DINT(WORD_TO_BLOCK_DB(INT_TO_WORD(#DB_Source_NO)).DW(#DB_Source_Address + #i * 2) AND DW#16#FFFF))); END_FOR; END_FUNCTION OB1程序 BEGIN "S7-300_SCL_WORD_TO_REAL"(DB_Source_NO:=3, DB_Source_Address:=0, DB_Target_NO:=4, DB_Target_Address:=0); END_ORGANIZATION_BLOCK |