[西门子] 浅谈ABB的PLC入门及MODBUS RTU通讯

[复制链接]
查看96945 | 回复0 | 2024-1-22 12:40:33 | 显示全部楼层 |阅读模式
ABB一般来说我们接触得比较多的是变频器,比如ACS510。其实ABB的PLC也是存在的,早期西门子S7-200 smart未普及时候,因为ABB的AC500控制器具备了以太网及串口,常用来作数据采集用。

1、AC500的编程软件



ABB PS501 Control Builder Plus作为ABB AC500的编程软件。





软件基于Codsys平台
2、入门测试



目前选择AC500 PM 564 -ETH控制器

声明变量

VAR

    READ_NUM:WORD:=3;

        TIMEOUT1:WORD:=900;

        FJ1_COM_:COM_MOD_MAST ;

        FJ2_COM_:COM_MOD_MAST ;

        FJ3_COM_:COM_MOD_MAST ;

        FJ4_COM_: COM_MOD_MAST;

        FJ5_COM_: COM_MOD_MAST;

        FJ6_COM_: COM_MOD_MAST;

        FJ7_COM_: COM_MOD_MAST;

        FJ8_COM_: COM_MOD_MAST;

        FJ9_COM_: COM_MOD_MAST;

        FJ10_COM_: COM_MOD_MAST;

        XH:INT;

        ERR1: WORD;

        ERR2: WORD;

        ERR3: WORD;

        ERR4: WORD;

        ERR5: WORD;

        ERR6: WORD;

        ERR7: WORD;

        ERR8: WORD;

        ERR9: WORD;

        ERR10: WORD;

        END_VAR



编写代码:

XH:=XH+1;

IF XH>10 THEN XH:=0;END_IF

(**AA01/1 柴油发电机进线 PZ96-E4*)

FJ1_COM_(

        EN:=XH=1 ,

        COM:=1 ,

        SLAVE:=1,

        FCT:= 3,

        TIMEOUT:=TIMEOUT1 ,

        ADDR:=37,

        NB:=23,

        DATA:= ADR(%MW0.100),

        DONE=> ,

        ERR=> ,

        ERNO=> ERR1);(*ERR=0时,通讯正常*)

uab_AA01_1:=WORD_TO_REAL(%MW0.103)/10;

ubc_AA01_1:=WORD_TO_REAL(%MW0.104)/10;

uac_AA01_1:=WORD_TO_REAL(%MW0.105)/10;

ia_AA01_1:=WORD_TO_REAL(%MW0.106)/10;

ib_AA01_1:=WORD_TO_REAL(%MW0.107)/10;

ic_AA01_1:=WORD_TO_REAL(%MW0.108)/10;

p_AA01_1:=WORD_TO_REAL(%MW0.112)/10;

(**AA01/2 变压器进线 PZ96-E4*)

FJ2_COM_(

        EN:=XH=2 ,

        COM:=1 ,

        SLAVE:=2,

        FCT:= 3,

        TIMEOUT:=TIMEOUT1 ,

        ADDR:=37,

        NB:=23,

        DATA:= ADR(%MW0.200),

        DONE=> ,

        ERR=> ,

        ERNO=> ERR2);(*ERR=0时,通讯正常*)

uab_AA01_2:=WORD_TO_REAL(%MW0.203)/10;

ubc_AA01_2:=WORD_TO_REAL(%MW0.204)/10;

uac_AA01_2:=WORD_TO_REAL(%MW0.205)/10;

ia_AA01_2:=WORD_TO_REAL(%MW0.206)/10;

ib_AA01_2:=WORD_TO_REAL(%MW0.207)/10;

ic_AA01_2:=WORD_TO_REAL(%MW0.208)/10;

p_AA01_2:=WORD_TO_REAL(%MW0.212)/10;

(**AA04/2  全厂照明进线  PZ96-E4*)

FJ3_COM_(

        EN:=XH=3 ,

        COM:=1 ,

        SLAVE:=3,

        FCT:= 3,

        TIMEOUT:=TIMEOUT1 ,

        ADDR:=37,

        NB:=23,

        DATA:= ADR(%MW0.300),

        DONE=> ,

        ERR=> ,

        ERNO=> ERR3);(*ERR=0时,通讯正常*)

uab_AA04_2:=WORD_TO_REAL(%MW0.303)/10;

ubc_AA04_2:=WORD_TO_REAL(%MW0.304)/10;

uac_AA04_2:=WORD_TO_REAL(%MW0.305)/10;

ia_AA04_2:=WORD_TO_REAL(%MW0.306)/10;

ib_AA04_2:=WORD_TO_REAL(%MW0.307)/10;

ic_AA04_2:=WORD_TO_REAL(%MW0.308)/10;

p_AA04_2:=WORD_TO_REAL(%MW0.312)/10;

(**AA04/4  ******  PZ72-AI3*)

FJ4_COM_(

        EN:=XH=4 ,

        COM:=1 ,

        SLAVE:=4,

        FCT:= 3,

        TIMEOUT:=TIMEOUT1 ,

        ADDR:=0,

        NB:=12,

        DATA:= ADR(%MW0.400),

        DONE=> ,

        ERR=> ,

        ERNO=> ERR4);(*ERR=0时,通讯正常*)

ia_AA04_4:=WORD_TO_REAL(%MW0.406)/10;

ib_AA04_4:=WORD_TO_REAL(%MW0.408)/10;

ic_AA04_4:=WORD_TO_REAL(%MW0.410)/10;

(**AA05/1  ******  PZ72-AI3*)

FJ5_COM_(

        EN:=XH=5,

        COM:=1 ,

        SLAVE:=5,

        FCT:= 3,

        TIMEOUT:=TIMEOUT1 ,

        ADDR:=0,

        NB:=12,

        DATA:= ADR(%MW0.420),

        DONE=> ,

        ERR=> ,

        ERNO=> ERR5);(*ERR=0时,通讯正常*)

ia_AA05_1:=WORD_TO_REAL(%MW0.426)/10;

ib_AA05_1:=WORD_TO_REAL(%MW0.428)/10;

ic_AA05_1:=WORD_TO_REAL(%MW0.430)/10;

(**AA05/2  ******  PZ72-AI3*)

FJ6_COM_(

        EN:=XH=6,

        COM:=1 ,

        SLAVE:=6,

        FCT:= 3,

        TIMEOUT:=TIMEOUT1 ,

        ADDR:=0,

        NB:=12,

        DATA:= ADR(%MW0.440),

        DONE=> ,

        ERR=> ,

        ERNO=> ERR6);(*ERR=0时,通讯正常*)

ia_AA05_2:=WORD_TO_REAL(%MW0.446)/10;

ib_AA05_2:=WORD_TO_REAL(%MW0.448)/10;

ic_AA05_2:=WORD_TO_REAL(%MW0.450)/10;

(**AA06/1  ******  PZ72-AI3*)

FJ7_COM_(

        EN:=XH=7,

        COM:=1 ,

        SLAVE:=7,

        FCT:= 3,

        TIMEOUT:=TIMEOUT1 ,

        ADDR:=0,

        NB:=12,

        DATA:= ADR(%MW0.460),

        DONE=> ,

        ERR=> ,

        ERNO=> ERR7);(*ERR=0时,通讯正常*)

ia_AA06_1:=WORD_TO_REAL(%MW0.466)/10;

ib_AA06_1:=WORD_TO_REAL(%MW0.468)/10;

ic_AA06_1:=WORD_TO_REAL(%MW0.470)/10;

(**AA06/2  ******  PZ72-AI3*)

FJ8_COM_(

        EN:=XH=8,

        COM:=1 ,

        SLAVE:=8,

        FCT:= 3,

        TIMEOUT:=TIMEOUT1 ,

        ADDR:=0,

        NB:=12,

        DATA:= ADR(%MW0.480),

        DONE=> ,

        ERR=> ,

        ERNO=> ERR8);(*ERR=0时,通讯正常*)

ia_AA06_2:=WORD_TO_REAL(%MW0.486)/10;

ib_AA06_2:=WORD_TO_REAL(%MW0.488)/10;

ic_AA06_2:=WORD_TO_REAL(%MW0.490)/10;

(**AA07/1  ******  PZ72-AI3*)

FJ9_COM_(

        EN:=XH=9,

        COM:=1 ,

        SLAVE:=9,

        FCT:= 3,

        TIMEOUT:=TIMEOUT1 ,

        ADDR:=0,

        NB:=12,

        DATA:= ADR(%MW0.500),

        DONE=> ,

        ERR=> ,

        ERNO=> ERR9);(*ERR=0时,通讯正常*)

ia_AA07_1:=WORD_TO_REAL(%MW0.506)/10;

ib_AA07_1:=WORD_TO_REAL(%MW0.508)/10;

ic_AA07_1:=WORD_TO_REAL(%MW0.510)/10;

(**AA07/2  ******  PZ72-AI3*)

FJ10_COM_(

        EN:=XH=10,

        COM:=1 ,

        SLAVE:=10,

        FCT:= 3,

        TIMEOUT:=TIMEOUT1 ,

        ADDR:=0,

        NB:=12,

        DATA:= ADR(%MW0.520),

        DONE=> ,

        ERR=> ,

        ERNO=> ERR10);(*ERR=0时,通讯正常*)

ia_AA07_2:=WORD_TO_REAL(%MW0.526)/10;

ib_AA07_2:=WORD_TO_REAL(%MW0.528)/10;

ic_AA07_2:=WORD_TO_REAL(%MW0.530)/10;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则