6SL3000-0BE25-5DA0技术参数
本文介绍了三菱FX系列PLC与正弦变频器之间RS-485通讯控制及数据格式,详细分析了通讯控制调速系统与一般模拟量控制调速系统相比的优越性。并给出了应用实例及其PLC程序设计的思路。
引言:
在现代工业控制系统中,PLC和变频器的综合应用较为普遍。比较传统的应用一般是使用PLC的输出接点驱动中间继电器来控制变频器的启动、停止或是多段速,采用PLC加D/A扩展模块控制变频器的频率。采用D/A扩展模块控制变频器的频率时,容易受到模拟量信号的波动和因距离不一致而造成的模拟量信号衰减不一致的影响,使整个系统的工作稳定性和可靠性降低。从经济的角度来考虑,当需要控制多台变频器时,如果采用D/A扩展模块,成本将是使用RS-485通讯的多倍,例如:一块FX2N-2DA(两路模拟量输出模块)价格在1000元以上,而一块FX2N-485BD(FX系列的485通讯板)价格在200元左右。而使用RS-485通讯控制,很容易实现多变频器之间的同步和比例联动运行。该系统具有、信号精度高(可达变频器较高分辨率)、传输距离远、抗干扰性强等特点。
系统配置:
胶辊机械控制系统共使用3台变频器,分别控制行走小车,主轴,挤出机的速度。要求分为自动/手动控制,触摸屏界面为开机界面手动、自动和手动/自动选择四个界面;自动状态时通过在触摸屏上选择不同的比例来控制3台变频器的频率和起停;手动状态时可以单独操作三台变频器的正反转和频率。
系统硬件组成和连接:
根据该系统的控制要求,选用以下器件:
1.PLC选用日本三菱公司FX1N-14MR;
2.PLC485通讯扩展板FX1N-485-BD(同变频器作通讯用);
3.触摸屏为WEINVIEWMT5005.7寸256色触摸屏;
4.触摸屏同的PLC连接电缆;
5.变频器采用我公司*的正弦SINE303系列变频器,具有低频转距大,带载能力强,保护功能完善等特点;
触摸屏控制界面示意图:
硬件连接图:
通讯协议:
正弦变频器内置标准RS-485通讯接口,其通讯协议格式如下表:
协议格式解释:
数据包头:02H(数据包头的起始字节)
从机地址:变频器为从机,变频器的本机地址即为PLC通讯的从机地址,由变频器的参数设定(主机为工控计算机或PLC可编程序控制器等)。
状态代码:从机变频器的状态代码。即参数设定状态、运行状态、停车状态、故障状态和工厂测试状态。
状态代码:主机发送的命令代码,对从机进行相应的操作,如点动、启动、停车、读数据、写数据、故障等。。
数据地址:即变频器功能代码的地址(通讯)编号。
数据信息:数据信息的定义,范围:0-32000。无小数点,如:若功能代码内容为10.00,发送的数据为1000,若为50.0则为500。发送方式:先发高字节,再发低字节,将数据信息双字节的高4位和低4位拆分并转换为ASCII码,先高后低发送。
异或校验:数据含义:数据帧从机地址至数据信息的异或结果。既*2字节*3字节异或的结果与,再与*4字节异或,以此类推至*13字节。处理结果:当校验结果小于等于1FH,则校验结果加20H。
数据包尾:03H(数据包的结束字节)
(从机地址、状态代码、状态代码、异或校验的发送方式:将命令代码的高4位和低4位拆分并转换为ASCII码,先高后低发送)
采用三菱FX1N系列PLC的通讯程序实例如下:
变频器参数设定:
1.控制小车的变频器:
F0.05=1F0.04=1(端子控制,RUN端子ON/OFF控制正转/停止,F/R端子控制反转/停止)。
F0.06=2(485计算机输入有效),F5.28=1(本机通讯站号设为1#)
2.控制主轴的变频器:
F0.05=1F0.04=1(端子控制,RUN端子ON/OFF控制正转/停止,F/R端子控制反转/停止)。
F0.06=2(485计算机输入有效),F5.28=2(本机通讯站号设为2#)
3.控制小车的变频器:
F0.05=1F0.04=1(端子控制,RUN端子ON/OFF控制正转/停止,F/R端子控制反转/停止)。
F0.06=2(485计算机输入有效),F5.28=3(本机通讯站号设为3#)
结束语:
采用PLC同变频器通讯,具有接线简单,控制精度高,等特点,特别适合对多台变频器的同步、比例联动以及对变频器频率精度要求比较高的场合。
参考文献:
1.三菱微型可编程控制器FX系列编程手册。
2.三菱微型可编程控制器FX通讯用户手册。
3.正弦SINE303系列变频器使用说明书。
4.正弦SINE303系列变频器计算机通讯协议
一、引言
在工业生产中,人们常常面临着数据采集与管理。作为工厂自动化的三大支柱可编程控制器PLC(Programmable Logic Controller),由于其,广泛的用于数据采集与控制。生产过程中,要监视PLC内部的数据与运行状况,选用市场上的人机界面或组态软件,虽然功能丰富,但大都价格昂贵,在一些中小规模的生产场合,人们希望能自己用高级语言开发一个简易实用的通信程序。微软公司推出的Visual Basic 6.0,开发串行通信程序时,有两种方法,一种是用bbbbbbs API函数,另一种是用VB支持的通信控件MSCOMM.OCX。利用bbbbbbs API函数是通过调用读写等函数来操作串口。两种比较,使用MSCOMM.OCX控件编程方便,具有更完善的发送和接收功能。这里采用了M
SCOMM.OCX控件。
本文根据杭州某包装材料公司原料配料控制系统为背景,简述实现计算机与三菱FX系列PLC通信的实现过程。
二、硬件与选型
日本三菱公司是国际的工厂自动化设备制造商,工业可编程控制器在国内市场占有率一直保持**。项目选用三菱FX2N-64MR型PLC,SC-09电缆作为计算机与PLC通信的连线。连接电缆的9针端连接在计算机串口上,另一端连接在PLC的RS-422编程口。系统框图如图一所示。
三、软件编程
软件设计主要包括PLC梯形图设计和计算机VB程序、数据库设计。计算机操作系统为bbbbbbs98,编程语言用Visual Basic 6.0,数据库选用Access97,梯形图程序在三菱PLC编程软件GPPWIN 软件环境设计。上位机软件实现计算机对PLC内部数据读取、写入参数和保存数据到数据库。
三菱FX2N型PLC编程口通信协议如下:
波特率9600,偶校验,8位数据位,一位停止位。
在新建工程的表单上添加MSCOMM.OCX控件,初始化程序:
Private Sub bbbb_Load()
mPort = 1 ‘选择COM1口
MSComm1.Settings = "9600,e,7,1"
数据读取子程序:
Public Function GetData(ByVal StartAddress As bbbbbb, ByVal GetBytes As Integer, ByVal Hex_Bytes As bbbbbb) As bbbbbb
MSComm1.bbbbbLen = GetBytes * 2 + 4
MSComm1.Output = STX + CMD_Read + StartAddress + Hex_Bytes + ETX + GetSumChk(CMD_Read + StartAddress + Hex_Bytes + ETX)
‘传送数据组成:起始符+命令+首地址+数据位+结束符+和检验码
GetData = MSComm1.bbbbb
MSComm1.InBufferCount = 0
MSComm1.bbbbbLen = 0
End Function
如需读取数据,通过调用GetData子程序。
参数设置程序可参考读取子程序,只是改变命令而已。
Access97数据库中包含三个表单,包括参数表、记录表、报警记录表。
通过如下子程序是将实际称量值(记录表)更新到数据库:
Private Sub SaveData()
Dim i As Integer
Dim valid As Boolean
On Error Resume Next
valid = True
Data1.Recordset.AddNew
Data1.Recordset.Fields("dtime") = TimeSerial(OnHour, OnMinute, OnSecond)
Data1.Recordset.Fields("systime") = Time ‘系统时间
Data1.Recordset.Fields("get_xl") = LF(1) ‘小料当前称量值
Data1.Recordset.Fields("get_fjs") = LF(2) ‘方解石当前称量值
Data1.Recordset.Fields("get_cs") = LF(3) ‘长石当前称量值
Data1.Recordset.Fields("get_sys") = LF(4) ‘石英砂当前称量值
Data1.Recordset.Fields("get_cj") = LF(5) ‘纯碱当前称量值
On Error Resume Next
Data1.Recordset.Update ‘更新数据库记录
Data1.Recordset.MovePrevious
End Sub
程序中,LF(i)变量对应为图二系统参数表单中实称值。
保存参数子程序只是对数据库操作,程序结构可参考以上子程序。
上位机与PLC通信质量的好坏,对系统的运行影响较大,因此,编写程序时,除了在两者之间的通信协议上保持**一致和采取相应的容错技术外,还要考虑系统的整体容错技术,防止系统的不正常。
四、结束语
串行通信是目前计算机与其他设备之间通信广泛采用的方式之一,传送数据准确,程序稳定运行是系统开发的主要目的。本设计中充分利用计算机和PLC的资源,在几乎不增加设备开支的情况下成功的实现上位机与PLC之间的通信。
(1) 起始字元(STX):ASCII码的起始字元STX对应的16进制数位0x02。无论命令信息还是回应信息,它们的起始字元均为STX,接收方以此来判知传输资料的开始。
(2) 命令号码:为两位16进制数。所谓命令号码是指上位机要求下位机所执行的动作类别,例如要求读取或写入单点状态、写入或读取暂存器资料、强制设定、运行、停止等。在回应信息中,下位机会将上位机接收到的命令号码原原本本的随同其它信息一同发送给上位机。
(3) 元件首地址:对应要操作的元件的相应的地址。如从D123单元中读取数据时,要把它对应的地址:0x10F6发送给PLC。
(4) 元件个数:一次读取位元件或字元件的数量。
(5) 结束字元(ETX):ASCII码的结束字元ETX对应的16进制数为0x03。无论命令信息还是回应信息,它们的结束字元均为ETX,接收方以此来判知此次通讯已结束。
(6) 校验码(Checksum):校验码是将STX-ETX之间的ASCII字元的16进制数值以“LRC(Longitudinal Redundancy Check)”法计算出1个Byte长度(两个16进制数值00-FFH)的校验码。当下位机接收到信息后,用同样的方法计算出接收信息的校验码,如果两个校验码相同,则说明传送正确。
FX2系列与计算机之间的通信是以主机发出的初始命令,PLC对其做出响应的方式进行通信的。共有0、1、7、8四种命令,上位机实现对PLC的读写和强行置位。通过ENQ、ACK和NAK,上位机协调与PLC的通信应答。
2 编程口操作命令类型
串行通信是计算机与其他机器之间进行通信的一种常用方法,在bbbbbbs操作系统中提供了实现各种串行通信的API函数。通过SC-09编程电缆或FX-232-BD通讯模块,可以将PC机和计算机串行通信口RS-232连接起来,可以实现PC机对PLC的RAM区数据进行读、写操作。根据PLC本身所具有的特性,计算机可对PLC进行以下4种类型的操作:
(1) 位元件或字元件状态读操作(CMD0);
(2) 位元件或字元件状态写操作(CMD1);
(3) 位元件强制ON操作(CMD7);
(4) 位元件强制OFF操作(CMD8)。
3 软件编程
(1) 串行通信实现方法
在进行以上四种操作之前要对串行通信口进行必要的初始化。本人采用了一个专门针对串行通信的CSerial类,并在Open函数中进行了进一步的完善。它由MuMega Technologies公司提供的一个Visual C++类,我们只要理解CSerial类种的几个成员函数,就能很方便地实现串行通信了。以下是该类定义: