紫外工控论坛

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1699|回复: 1

PLC通过自由通讯口方式与变频器通讯

[复制链接]
admin 发表于 2012-1-16 20:56:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
1  引言
      在传统的plc——变频控制集成系统中,变频器的启动/停止与故障监控由plc通过开关量实现端对端控制。变频器频率是由plc通过模拟量输出端口输出0~5(10)v或4~20ma信号控制,需要plc配置昂贵的模拟量输出端口模块。变频器出现故障时由plc读取变频器的故障报警触点,对具体故障原因并不清楚,需查询变频器报警信息后再阅读变频器说明书才知道。随着交流变频控制系统及通讯技术的发展,可以利用plc及变频器的串行通讯的方式来实现plc对变频器的控制。

2  变频器的选型
      danfoss vlt系列变频调速器提供串行通讯技术的支持。它所支持的串行通讯技术包括标准rs-485、profidrive、lonworks在内的多种现场总线方式。其中,rs-485通讯方式为用户提供了无需附加任何费用的、最为廉价实用的串行通讯方式。只需按照danfoss vlt变频器规定的通讯数据结构、控制字和状态字格式发送数据即可实现与vlt变频的通讯。vlt为用户提供了两种控制字和状态字格式标准:即danfoss标准的danfoss fc协议和profibus标准的profidrive协议。其中fc协议为用户提供了更多的与vlt有关的控制信息和状态信息。本项目中选用danfoss fc协议。

3  plc的选型
      西门子工控产品在工控领域应用市场中有较高的占有率。s7-200系列是西门子simatic plc家族中的小规模plc成员,自由通讯口方式是s7-200 plc的一个特色的功能,它使s7-200 plc可以由用户自己定义通讯协议。利于自由通讯口方式,在本系统中plc可以与变频器和方便连接。plc通过自由通讯口方式与变频器通讯,控制变频器的运行,读取变频器自身的电压、电流、功率、频率和过压、过流、过负荷等全部报警信息等参数,这比通过外部端口控制变频器的运行具有较高的可靠性,节省了plc宝贵的i/o端口,又获的了大量变频器的信息。在本例中,作者将按照danfoss fc协议来对s7-200的自由口进行编程。

4  vlt串行通讯
4.1  vlt通讯原理
      vlt变频器的串行通讯为异步半双工的方式,使用字节奇偶校验和块传送异或校验方法。每个变频器都配备有一个标准的rs-485通讯端口,使协议可以通过rs-485电气接口来进行传输。plc为主机,变频器为从机,系统电码的传输由主机控制,主机不断发出某个地址的电码给从机,等待从机的响应。主机最多能带31个从机,在有中继器的情况下,可以增加到126个从机,也就是从机的地址最多可以设定到126。通讯时,每一个字节从一个起始位开始实行传送,然后再传递8个数据位,相应地组成一个字节,每个字节由一个奇偶校验位来验证传送的正确性,然后由一个终止位结束。这样一个字节共由11个位组成。
4.2  vlt电码结构
      每个电码由一个起始字节(stx)开始,这个起始字节为stx=02h。随后紧跟一个表示电码长度(lge)的字节和表示变频器地址的字节(adr)。然后是一些数据字节(随电码类型而变)。整个电码由一个数据控制字节(bcc)来结束。结构如附表。


附表   vlt电码结构
在上述数据结构中:
(1) pke占用两个字节,包括参数命令类型和参数数目;
(2) ind为索引,也占用两个字节,索引字节用于表明它是一个读命令还是写命令。在读命令中必须具有0400h的格式,在写命令中必须具有0500h的格式;
(3) pwe为参数值块。占用四个字节,分为高字(pwe h)和低字(pwe l)。“比如主机要改变当前的变频器参数,新的参数就应写在参数pwe中发送给变频器;”
(4) pcd为过程块,占用4个字节。它有两种状态,当主机发给从机时,pcd1为控制字,pcd2为参考值;当从机发给主机时,pcd1为状态字,pcd2为当前的输出频率;
(5) bcc为数据控制字节。由它来对接收到的命令进行检验正确与否。它的初始值为0,然后对该字节以前的所有字节进行异或。

5  plc编程示例
5.1  变频器初始化子程序
      plc在第一次扫描时执行初始化子程序,对端口及rcv指令进行初始化。为了增加程序的可靠性,在初始化完成后,如果检测到端口空闲时则运行rcv指令使端口处于接受状态。初始化子程序如下:
        network 1  // 网络标题           
        检测端口空闲可编在主程序中
        // 设定端口属性
        ld  sm0.0
        movb  73, smb30
        network 2
        // 接收信息状态
        ld  sm0.0
        movb  102, smb87
        network 3
        ld  sm0.0
        movb  16#02, smb88
        movb  50, smb92
        movb  50, smb94
        r   sm87.2, 1
        network 4
        ld  sm0.0
        atch  int1, 23                    
        //连接口0接收完成的中断
        network 5
        ld  sm0.0
        atch  int0, 9                    
        //连接口0发送完成的中断
        network 6
        ld  sm0.0
        eni
        //中断允许
        network 7
        ld  sm0.0
        movd  &vb250, vd220               
        //装入地址指针
        movb  0, vb242                    
        //bcc码寄存器清零
        movd  &vb300, vd224               
        //装入地址指针
        movb  0, vb246                    
        //bcc码寄存器清零
5.2  变频器参数修改子程序
      当要改变当前变频状态的信息需传送时,调用“控制子程序”。首先它要禁止端口的接收,然后对控制电码进行编辑和bcc检验码计算,并发送;当没有改变当前变频状态的信息需传送时,调用“空命令”子程序。因为plc如果要读取变频器的当前工作状态,就要给变频器发送命令,而“控制子程序”代码繁琐,执行效率不高,我们可以将“空命令”程序需传送的电码预先编排好(可以用短电码),“控制子程序”程序代码如下:
        network 1
        ld  sm0.0 //停止端口0的接收
        r   sm87.7, 1
        rcv  vb300, 0
        network 2
        ld  l0.0
        movw  16#047c, vw211
        movw  lw1, vw213
        network 3
        ld  l0.1
        movw  16#0434, vw211
        movw  0, vw213
        network 4
        ld  sm0.0
        movw  lw1, vw213
        network 5  // 网络标题
        // 网络注释
        ld   sm0.0
        movb   16#02, vb200
        movb   16#0e, vb201
        movb   lb3, vb202
        movd   0, vd203
        movd   0, vd207
        hta    vb200, vb250, 15
        network 6
        ld      sm0.0 //计算bcc校验码
        for    vw240, +1, +15
        network 7
        ld      sm0.0
        xorb   *vd220, vb242
        network 8
        ld     sm0.0
        incd   vd220
        network 9
        next
        network 10
        ld     sm0.0
        hta    vb242, vb265, 1            
        //bcc校验码写入发送缓冲区
        network 11
        ldb=   vb251, 16#0e               
        //发送缓冲区准备好后进行发送
        s      s0.1, 1
        network 12
        lscr   s0.1
        network 13
        ld     sm4.5
        xmt    vb250, 0
        network 14
        scre
5.3  变频器通讯完成处理
      发送完成后执行发送完成中断程序,它的操作包括:允许rcv;bcc码寄存器清零;重新装入用于计算bcc校验码的地址指针;接收缓冲区中存放指令结束字符的字节清零,用来判断下一条指令格式是否正确。
      接收完成后执行接收完成中断程序,它会将接收缓冲区中的十六进制ascii码还原成数据并保存。然后调用“接收处理”子程序。它主要是求出接收缓冲区中指令的bcc校验码并与指令中的bcc校验码进行比对,并对电码中的数据进行处理。

6  结束语
      使用此方法采用西门子plc通过自由口使用danfoss fc协议对danfoss变频器进行控制,极大地减少了线路连接的复杂性,避免了现场可能的各种电磁干扰对控制设备的影响。


umasw 发表于 2012-1-20 14:51:47 | 显示全部楼层
恩,不错,谢谢楼主关于变频器的帖子
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


--------------------------------------------------------------------------------------------------------------------
本站是工控技术交流站点,论坛内容均为网络收集或会员所发表,并不代表本站立场,会员拥有该内容的所有权力及责任!
本站内容如有侵犯您的版权,请按下面方式联系本站管理员,我们将及时删除处理
管理员:冰糖 QQ:5483695(请直击主题), Mail:admin#ziwai.net(#改成@) 其它非本人.
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!

QQ|Archiver|手机版|小黑屋|紫外工控论坛. ( 苏ICP备11032118号-1 )

GMT+8, 2024-5-1 07:55 , Processed in 0.453125 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表