• 科威嵌入式PLC与三菱变频器FR-E500通信
    黄石市科威自控有限公司

    一、三菱变频器通信数据格式
    使用十六进制数,数据在PLC和变频器之间自动使用ASCⅡ传输
    写入:PLC(主站)向变频器(从站)写入数据;
    读出:PLC 从变频器读出数据。
    1)从PLC到变频器的通信请求数据
    数据写入:
    写入的数据位数为2位时的格式,如数据:23H(数据的位数由指令代码决定)
    ENQ(1)+变频器站号(2,3)+指令代码(4,5)+等待时间(6)+数 据(7,8)+总和校验(9,10)+CR或者LF(11)

    写入的数据位数为4位时的格式,如数据:2356H
    ENQ(1)+变频器站号(2,3)+指令代码(4,5)+等待时间(6)+数 据(7,8,9,10)+总和校验(11,12)+CR或者LF(13)

    写入的数据位数为6位时的格式,如数据:2378ABH
    ENQ(1)+变频器站号(2,3)+指令代码(4,5)+等待时间(6)+数 据(7,8,9,10,11,12)+总和校验(13,14)+CR或者LF(15)

    数据读出时的通信格式:
    ENQ(1)+变频器站号(2,3)+指令代码(4,5)+等待时间(6)+总和校验(7,8)+CR或者LF(9)

    2)写入数据时从变频器向PLC的送信数据
    没有发现数据错误的格式
    ACK(1)+变频器站号(2,3)+CR或者LF(4)

    发现数据错误的格式
    NAK(1)+变频器站号(2,3)+数据错误代码(4)+CR或者LF(5)

    3)读出数据时从变频器到PLC的应答数据
    读出的数据为2位时的格式
    STX(1)+变频器号(2,3)+读出数据(4,5)+ETX(6)+总和校验(7,8)+CR或者LF(9)

    读出的数据为4位时的格式
    STX(1)+变频器号(2,3)+读 出 数 据(4,5,6,7)+ETX(8)+总和校验(9,10)+CR或者LF(11)

    读出的数据为6位时的格式
    STX(1)+变频器号(2,3)+读出数据(4,5,6,7,8,9)+ETX(10)+总和校验(11,12)+CR或者LF(13)

    4)读出数据时的从PLC到变频器送信数据
    没有发现数据错误的格式
    ACK(1)+变频器站号(2,3)+CR或者LF(4)

    发现数据错误的格式
    NAK(1)+变频器站号(2,3)+数据错误代码(4)+CR或者LF(5)


    以上各表最后一列可以省去在变频器P124=0即可(本实验也省掉了)
    (2)数据定义
    控制代码
    信号(STX)+ASCⅡ码(H02)+ 说明(数据开始);
    信号(ETX)+ASCⅡ码(H03)+ 说明(数据结束);
    信号(ENQ)+ASCⅡ码(H05)+ 说明(通讯请求);
    信号(ACK)+ASCⅡ码(H06)+ 说明(没有发现数据错误);
    信号(LF)+ASCⅡ码(H0A)+ 说明(回车);
    信号(CR)+ASCⅡ码(H0D)+ 说明(换行);
    信号(NAK)+ASCⅡ码(H15)+ 说明(发现数据错误);

    二、科威PLC自由协议的相关函数
    1、发送函数
    函数功能号:D8200=K29
    调用方法:: SET M8200
    入口参数: 通信格式(D8120);
    待发送字节数(D8121);
    发送区的起始单元(D8128);
    发送/接收超时时间设定(D8127,可选);
    状态参数: 发送请求标志(M8121);
    发送成功标志(M8122);
    发送剩余字节数(D8122),超时剩余时间(D8130);
    奇偶校验错标志(M8120),发送/接收超时标志(M8127);
    函数调用过程:设置入口参数→赋函数功能号→调用函数→查看标志 → 决定下一流程。
    2、接收函数
    函数功能号: D8200=K30
    通信格式: D8120_Bit10=1”发送结束自动转接收”则接收函数的函数功能号和通信格式就可以省略,参照《科威PLC编程手册》P196所述的自动隐式调用接收函数。
    调用方法::SET M8200
    入口参数:通信格式(D8120)
    待接收的字节数(D8123)
    接收区的起始单元(D8129)
    设定接收的起始字符(D8125)
    设定接收的终止字符(D8126)
    发送/接收超时时间设定(D8127,可选)
    状态参数:接收请求标志(M8123)
    接收到起始字节的标志(M8124)
    接收到起始符的标志(M8125), 接收到终止符的标志(M8126),
    已接收的字节数(D8124),超时剩余时间(D8130)
    奇偶校验错标志(M8120),发送/接收超时标志(M8127)
    函数调用过程:设置入参数→赋函数功能号 → 调用函数→ 查看标志 → 决定下一流程
    3、辅助函数
    所有的辅助函数调用的方式大体上是相似的
    1) ASCⅡ码转换为HEX函数
    函数功能号: D8200=K25
    调用方法: SET M8200
    入口参数指针: D8201
    有效字节数: D8202 , 即数据个数
    起始字节: M8201;
    起始高字节:RST M8201;
    起始低字节:SET M8201
    字/字节有效: M8202;
    字有效: RST M8202;
    字有效: SET M8202;
    出口参数指针: D8203;
    起始字节: M8203;
    起始高字节:RST M8203;
    起始低字节:SET M8203;
    字/字节有效: M8204;
    字有效: RST M82024;
    字有效: SET M8204;
    函数调用过程:设置出入口参数→赋函数功能号→ 调用函数;
    2) HEX转换为ASCⅡ码函数
    函数功能号::D8200=K26
    调用方法: SET M8200
    入口参数指针: D8201
    有效字节数: D8202 , 即数据个数
    起始字节: M8201;
    起始高字节:RST M8201;
    起始低字节:SET M8201;
    字/字节有效: M8202;
    字有效: RST M8202;
    字有效: SET M8202 ;
    出口参数指针: D8203;
    起始字节: M8203;
    起始高字节:RST M8203;
    起始低字节:SET M8203;
    字/字节有效: M8204 ;
    字有效: RST M82024;
    字有效: SET M8204;
    函数调用过程:设置出入口参数→赋函数功能号 → 调用函数;
    三、PLC与变频器的连线
    变频器端的接口是RJ45;(见附件1)
    PLC端的接口是端子接线:RS485-A,RS485-B
    把变频器的RDA和SDA连起来接到科威PLC的RS485-A ;
    把变频器的RDB和SDB连起来接到科威PLC的RS485-B(用网线制作通讯电缆);

    四、程序结构
    1、程序框图




    五、资源占用情况说明
    1)主程序
    地址(D0)+存放内容(读/写标志:D0=0读;D0=1写);
    地址(D1)+存放内容(所读/写的数据位数);
    地址(D2)+存放内容(读/写命令代码);
    地址(D3)+存放内容(所写的数据);
    地址(D4)+存放内容(所写的数据);
    地址(D5)+存放内容(从站号);
    地址(D6)+存放内容(等待时间);

    数据寄存器(D0-D6)+状态元件S(S0-S4)+位元件M(M0-M43)+标签P(P0-P4);
    数据寄存器(D20)+位元件M(M51-M54)+标签P(P13-P16);
    数据寄存器(D7200)+位元件M(M1012-M1039);

    2)发送和接收函数
    位元件M(M98-M100)+定时计(T200)

    3)P0子程序
    数据寄存器(D11-D18)+位元件M(M0-M43);
    数据寄存器(D6000-D6010)+位元件M (M1000-M1007);
    数据寄存器(D7000-D7021,D7030-D7033)+位元件M(M1012-M1039);

    4)P1子程序
    数据寄存器(D11-D12)+位元件M(M1000-M1007);
    数据寄存器(D6011-D6012) ;
    数据寄存器(D7030-D7033);

    5)P2子程序
    数据寄存器(D20-D24)+位元件M(M98-M99);
    数据寄存器(D7000-D7001);

    6)P3子程序
    数据寄存器(D7D-10,D21-D24)+位元件M(M1100-M1155)+定时器(T0);
    数据寄存器(D7000-D7003) +位元件M(M1200-M1215);
    数据寄存器(D7101-D7105);

    7)P4子程序
    数据寄存器
    D7〜D10
    D7101〜D7105

    8)P13子程序
    P13子程序说明HFF=1的功能代码
    数据寄存器
    D1〜D4
    D20,D30,

    9)P14子程序
    P14子程序说明H7F=1的功能代码
    数据寄存器
    D1〜D4
    D20,D30,

    10)P15子程序
    P15子程序说明HFF=0的功能代码
    数据寄存器
    D1〜D4
    D20,D30,

    11)P16子程序
    P16子程序说明H7F=0的功能代码
    数据寄存器
    D1〜D4
    D20,D30,

    附件1:接线图



    附件2:在实现相应的读写参数之前先保证通信参数扩展“H7F或者HFF”的值是它们所在列的“H7F或者HFF”的值,但是因为每列“HFF或者H7F”的有且只需要填写一次(填写一次后变频器自动记忆,除非复位,出厂时“HFF=0或者H7F=0”)即可去完成“HFF或者H7F”所在列的其他功能,方法是:填写D30=0,并按下相应的M即可



    附表2使用说明:首先根据需要选定相应的参数,再根据参数找相应纵横的首行M,首列D30的值,需要先把相应的把M强制为ON再给D30赋予相应功能号的值,即可实现要读的参数;若要写再通过D3赋予所需要的数值即可实现写的功能。
    下面用下面两个例子,分别说明读写方法:
    读写前变频器参数设定:根据程序通信格式要求:D8120=H0436(含义:表示“0”表示自由协议,
    “4”表示发送结束自动转接收, “3”表示波特率为9600bps,“6”为7位数据1停止位且无奇偶校验.故变频器参数设定如下: PLC和1#变频器通信时,所以P117=1;P118=96;
    P119=10;P120=2;P121=9999;P122=9999;P123=9999;P124=0
    例一:要读取“输出电压值”(功能号为D30=K3,M51=ON和M100=ON),则先令M100=ON,再令M51=ON,最后填写D30=K2就可以在D10看到相应的电压值。
     
     
    网站首页  |  关于我们  |  联系我们  |  广告服务  |  版权隐私  |  友情链接  |  站点导航