modbus_tcp读写ABB510变频器

已锁定

v_wind

  • 帖子

    290
  • 精华

    3
  • 被关注

    36

论坛等级:侠圣

注册时间:2013-03-08

普通 普通 如何晋级?

modbus_tcp读写ABB510变频器

6245

24

2018-05-29 11:31:57

通过modbusTCP读写ABB510变频器

FUNCTION_BLOCK "Modbustcp Client Abb Frequency Converter"

{ S7_Optimized_Access := 'TRUE' }

VERSION : 0.1

   VAR_INPUT 

      IPaddress0 : Byte := 192;

      IPaddress1 : Byte := 168;

      IPaddress2 : Byte := 53;

      IPaddress3 : Byte := 200;

      "slave address" : Byte;

      ID : CONN_OUC := 16#1;

   END_VAR


   VAR_OUTPUT 

      ERROR { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;

      STATUS { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Word;

      STATUS_SAVE { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Word;

   END_VAR


   VAR_IN_OUT 

      MB_DATA_PTR_R100 : Variant;

      MB_DATA_PTR_W0 : Variant;

      MB_DATA_PTR_R400 : Variant;

   END_VAR


   VAR 

      REQ { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool := 1;

      DISCONNECT { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool := 0;

      MB_MODE { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : USInt := 0;

      MB_DATA_ADDR { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt := 40101;

      MB_DATA_LEN { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt := 50;

      CONNECT {InstructionName := 'TCON_IP_v4'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : TCON_IP_v4;

      DONE { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;

      BUSY { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;

      "Read and write control" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;

      STEP { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Int;

      MB_CLIENT_Instance {InstructionName := 'MB_CLIENT'; LibVersion := '4.1'} : MB_CLIENT;

   END_VAR



BEGIN

#CONNECT.RemoteAddress.ADDR[1]              := #IPaddress0;

#CONNECT.RemoteAddress.ADDR[2]              := #IPaddress1;

#CONNECT.RemoteAddress.ADDR[3]              := #IPaddress2;

#CONNECT.RemoteAddress.ADDR[4]              := #IPaddress3;

#MB_CLIENT_Instance.MB_Unit_ID              := #"slave address";

#CONNECT.ID                                 := #ID;

CASE #STEP OF

   0:

       #MB_MODE                            := 0;

       #MB_DATA_ADDR                       := 40101;

       #MB_DATA_LEN                        := 50;

       // VariantGet(SRC                      := #MB_DATA_PTR_R100,

       //            DST                      => #MB_DATA_R100);

       

       #MB_CLIENT_Instance(REQ := #REQ,

                           DISCONNECT      := #DISCONNECT,

                           MB_MODE         := #MB_MODE,

                           MB_DATA_ADDR    := #MB_DATA_ADDR,

                           MB_DATA_LEN     := #MB_DATA_LEN,

                           DONE            => #DONE,

                           BUSY            => #BUSY,

                           ERROR           => #ERROR,

                           STATUS          => #STATUS,

                           MB_DATA_PTR     := #MB_DATA_PTR_R100, //读取40100..40150

                           CONNECT         := #CONNECT);

                          

       

   1:

       #MB_MODE                            := 1;

       #MB_DATA_ADDR                       := 40002;

       #MB_DATA_LEN                        := 2;

       // VariantGet(SRC                      := #MB_DATA_PTR_W0,

       //            DST                      => #MB_DATA_W0);

       

       #MB_CLIENT_Instance(REQ             := #REQ,

                           DISCONNECT      := #DISCONNECT,

                           MB_MODE         := #MB_MODE,

                           MB_DATA_ADDR    := #MB_DATA_ADDR,

                           MB_DATA_LEN     := #MB_DATA_LEN,

                           DONE            => #DONE,

                           BUSY            => #BUSY,

                           ERROR           => #ERROR,

                           STATUS          => #STATUS,

                           MB_DATA_PTR     :=  #MB_DATA_PTR_W0, //写入40001..40002

                           CONNECT         := #CONNECT);

                           

   2:  

       #MB_MODE                            := 0;

       #MB_DATA_ADDR                       := 40401;

       #MB_DATA_LEN                        := 8;

       // VariantGet(SRC                      := #MB_DATA_PTR_R400,

       //            DST                      => #MB_DATA_R400);

       

       #MB_CLIENT_Instance(REQ := #REQ,

                           DISCONNECT      := #DISCONNECT,

                           MB_MODE         := #MB_MODE,

                           MB_DATA_ADDR    := #MB_DATA_ADDR,

                           MB_DATA_LEN     := #MB_DATA_LEN,

                           DONE            => #DONE,

                           BUSY            => #BUSY,

                           ERROR           => #ERROR,

                           STATUS          => #STATUS,

                           MB_DATA_PTR     := #MB_DATA_PTR_R400, //读取40401..40408

                           CONNECT         := #CONNECT);

                        

   ELSE  

       ;

END_CASE;

IF #DONE  THEN       //OR #ERROR

   #STEP += 1;

   IF #STEP = 3 THEN

       #STEP := 0;

   END_IF;

END_IF;

IF #ERROR THEN

   #STATUS_SAVE := #STATUS;

 

END_IF;

END_FUNCTION_BLOCK

以上是程序FB块,设置IP地址,ID,连接等,连接分别读取40100,40400,写入40001!


DB块.xlsx


modbus_tcp读写ABB510变频器 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15612条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

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