三菱fx1n使用st语言rs指令通过485-bd模块与台达变频器进行通信

三菱fx1n使用st语言rs指令通过485-bd模块与台达变频器进行通信


作者:东莞市天翔环境工程有限公司,广东东极环保科技有限公司

 

使用ST语言作为PLC控制程序编写的通信方面的资料比较少,网络上找不到相应的资料,实际测试一段时间后编写成功,所以有意将方法和程序分享出来。

因本人学习PLC只有2个多月,在程序,指令,硬件等使用方面难免出现不够严谨的方法,因此本文只给有需要了解这些内容的人或需要熟悉这类程序的人做通信参考。

本文程序均经过测试,在硬件环境相同的情况下可顺利执行相应动作。

主要硬件设备:FX1N-24MT,FX1N-485-BD,台达变频器VFD-M。

通信格式:MODBUS ASCII,9600,7,E,1,停止位2,变频器地址01。

变频器参数地址,功能码使用以及参数内容设置,请参考变频器手册上的通信篇设置。

rs指令的参数和功能等内容请参考FX编程器的通信篇手册。

IF( M0 )THEN (*M0为触摸屏上的变频器开关按钮*)
    Y11:=1;(*Y11变频器电源接通*)
    Y5:=1;(*Y5为运行指示灯,可接可不接*)
ELSE
    Y11:=0;
    Y5:=0;
    M2:=0;
    M3:=0;
    M4:=0;
    M5:=0;(*修改频率的数据发送状态位,起到同时只能发送一次数据的作用*)
(*变频器关闭的话,将各参数按钮复位*)
END_IF;

IF( ldp( 1,M8123 ) )THEN(*数据接收完毕的话,复位m8123数据接收完毕标志*)
    rst(1,M8123);
END_IF;

IF ( M8002 ) THEN
    M8161:=1;(*8位数据处理模式*)
    D8120:=H0C88;(*设置通信格式*)
END_IF;
    
IF( M8000 AND ldp( 1,M6 )  )THEN(*M6为修改变频器频率按钮*)

    D10:=H003A;
    
    D25:=H000D;
    D26:=H000A;
    
    D101:=H0001;
    D102:=H0003;
    D103:=H0020;
    D104:=H0001;
    D105:=D115;
    D106:=H0000;
(*设置传送的内容,根据变频器功能码和变频器寄存器地址设置*)
(*往变频器的H2001地址写一个频率数据内容D115,D115通过触摸屏输入元件传入,因此在触摸屏上写入频率内容输入即可更改变频器运行频率*)
    ASCI( TRUE ,D101, 2,D11);
    ASCI( TRUE ,D102, 2,D13);
    ASCI( TRUE ,D103, 2,D15);
    ASCI( TRUE ,D104, 2,D17);
    ASCI( TRUE ,D105, 2,D19);
    ASCI( TRUE ,D106, 2,D21);
(*将传送内容转换成ASCII码*)

    ADD_E( TRUE , D101,D102,D103,D104,D105,D106 , D110);
    SUB_E( TRUE , 256 , D110, D28);
(*计算数据内容的LRC码*)

    ASCI( TRUE ,D28, 2,D23);
(*将LRC码写入d23,d24*)

    RS( TRUE, D10 , 17 , 17, D50 );
(*设置传送数据内容为D10开始的17个D寄存器里的内容*)

    M8122:=1;    
(*传送开始*)
END_IF;


IF( ldp( 1,M2 ) ) THEN
    M5:=1;
    M3:=0;
    M4:=0;
(*当触摸屏正转按钮按下时,设置M5发送数据标志,并切换触摸屏上的按钮状态,其他按钮置0*)
END_IF;

IF( ldp( 1,M3 ) ) THEN
    M5:=1;
    M2:=0;
    M4:=0;
(*当触摸屏反转按钮按下时,设置M5发送数据标志,并切换触摸屏上的按钮状态,其他按钮置0*)
END_IF;
IF( ldp( 1,M4 ) ) THEN
    M5:=1;
    M3:=0;
    M2:=0;
(*当触摸屏停止按钮按下时,设置M5发送数据标志,并切换触摸屏上的按钮状态,其他按钮置0*)
END_IF;

IF( ldf( 1,M8122 ) ) THEN
    M5:=0;
(*数据发送成功以后,将M5置0,不再继续发送*)
END_IF;

IF( ldp( 1,M2 ) AND M5 ) THEN(*M2为变频器正转按钮*)

    D10:=H003A;
    
    D25:=H000D;
    D26:=H000A;
    
    D101:=H0001;
    D102:=H0006;
    D103:=H0020;
    D104:=H0000;
    D105:=H0000;
    D106:=H0012;
(*设置传送的内容,根据变频器功能码和变频器寄存器地址设置*)
    ASCI( TRUE ,D101, 2,D11);
    ASCI( TRUE ,D102, 2,D13);
    ASCI( TRUE ,D103, 2,D15);
    ASCI( TRUE ,D104, 2,D17);
    ASCI( TRUE ,D105, 2,D19);
    ASCI( TRUE ,D106, 2,D21);
(*将传送内容转换成ASCII码*)
    ADD_E( TRUE , D101,D102,D103,D104,D105,D106 , D110);
    SUB_E( TRUE , 256 , D110, D28);
(*计算数据内容的LRC码*)
    ASCI( TRUE ,D28, 2,D23);
(*将LRC码写入d23,d24*)
    RS( TRUE, D10 , 17 , 0, D50 );
(*设置传送数据内容为D10开始的17个D寄存器里的内容*)
    M8122:=1;    
(*传送开始*)
END_IF;

IF( ldp( 1,M3 ) AND M5 ) THEN(*M3为变频器反转按钮*)
    
    D10:=H003A;
    
    D25:=H000D;
    D26:=H000A;
    
    D101:=H0001;
    D102:=H0006;
    D103:=H0020;
    D104:=H0000;
    D105:=H0000;
    D106:=H0022;
(*设置传送的内容,根据变频器功能码和变频器寄存器地址设置*)
    ASCI( TRUE ,D101, 2,D11);
    ASCI( TRUE ,D102, 2,D13);
    ASCI( TRUE ,D103, 2,D15);
    ASCI( TRUE ,D104, 2,D17);
    ASCI( TRUE ,D105, 2,D19);
    ASCI( TRUE ,D106, 2,D21);
(*将传送内容转换成ASCII码*)
    ADD_E( TRUE , D101,D102,D103,D104,D105,D106 , D110);
    SUB_E( TRUE , 256 , D110, D28);
(*计算数据内容的LRC码*)
    ASCI( TRUE ,D28, 2,D23);
(*将LRC码写入d23,d24*)
    RS( TRUE, D10 , 17 , 0, D50 );
(*设置传送数据内容为D10开始的17个D寄存器里的内容*)
    M8122:=1;    
(*传送开始*)
END_IF;

IF( ldp( 1,M4 ) AND M5 ) THEN(*M4为变频器停止按钮*)
    
    D10:=H003A;
    
    D25:=H000D;
    D26:=H000A;
    
    D101:=H0001;
    D102:=H0006;
    D103:=H0020;
    D104:=H0000;
    D105:=H0000;
    D106:=H0001;
(*设置传送的内容,根据变频器功能码和变频器寄存器地址设置*)
    ASCI( TRUE ,D101, 2,D11);
    ASCI( TRUE ,D102, 2,D13);
    ASCI( TRUE ,D103, 2,D15);
    ASCI( TRUE ,D104, 2,D17);
    ASCI( TRUE ,D105, 2,D19);
    ASCI( TRUE ,D106, 2,D21);
(*将传送内容转换成ASCII码*)
    ADD_E( TRUE , D101,D102,D103,D104,D105,D106 , D110);
    SUB_E( TRUE , 256 , D110, D28);
(*计算数据内容的LRC码*)
    ASCI( TRUE ,D28, 2,D23);
(*将LRC码写入d23,d24*)
    RS( TRUE, D10 , 17 , 0, D50 );
(*设置传送数据内容为D10开始的17个D寄存器里的内容*)
    M8122:=1;    
(*传送开始*)
END_IF;
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值