技术论坛

 批量WORD转REAL SCL/STL 程序

返回主题列表
作者 主题
steven.lee
侠士

经验值:1278
发帖数:162
精华帖: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






您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。