用欧姆龙PLC与上位机通信实现振动磨的变频控制

发布者:紫菜包饭最新更新时间:2011-01-27 来源: 中国自动化网关键字:上位机  PLC  串口通信  VC++6.0  振动磨 手机看文章 扫描二维码
随时随地手机看文章

1.引 言

    当今,在自动化的工业生产中,变频控制往往与计算机远程控制相联系在一起,从而实现电机的远程变频控制。可编程序控制器系统不仅可作为单一的机电控制设备,而且作为通用的自动控制设备,也被大量地用于过程工业的自动控制。欧姆龙最新推出的可编程控制器SYSMAC CP1H,具有“高度扩张性”的端子台型一体化[1]。与以往产品CPM2A 40 点输入输出型为相同尺寸,但处理速度可达到约10倍的性能。本课题通过控制机(即为PLC)设定比例运行参数,然后控制机通过D/A转换模件发出控制变频调速器的指令,使变频调速器带动振动磨电机按输入的速度和时间运转。基于OMRON PLC的链接通信(有通信协议),我们采用功能强大的Visual C++6.0语言来实现这种小型集散控制系统的上、下位机的通信和友好的监控界面,实现了上位机与PLC间的通信。

2.通讯软件的设计

    在本项目中,上位机选用计算机, 下位机选用日本Omron公司的CP1H系列XA40DR-A可编程序控制器。在计算机外设中,RS-232串口因为其组成方式简单,编程控制方便而成为应用最为广泛的I/O通道之一。32 位下串口通信程序通常采用两种方法实现:一是利用ActiveX控件; 二是使用API通信函数。使用ActiveX控件, 程序实现非常简单, 结构清晰,缺点是欠灵活; 使用API通信函数的优缺点则基本上相反[2]。VC++6.0的MSComm是Microsoft 公司提供的简化Windows 下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法,笔者采用了这种方法。其端口接线见附图。

2.1 上位机与PLC的通讯协议

    HOST Link系统使用HOST Link 通信协议进行通信,上位机具有传送优先权,总是首先发出命令并启动通信,HOST Link 通信单元收到命令交由PLC执行,然后将执行结果返回上位机,两者以帧为单位轮流交换数据。

2.2 上位机的PLC链接通讯

    通信时一组传送的数据称为块,它是命令或响应的单位,从上位机发送到HOSTLink 单元的数据称为命令块,相应的,从HOSTLink单元发送到上位机的数据称为响应块。多点通信时,单帧发送的最大数据块为131 个字符,因此当一个数据块含有132 个或更多字符时,要分成两帧或多帧进行发送。多帧发送时中间帧的格式为:正文、FCS、分界符。起始帧、中间帧的长度为131 ,结束帧的长度最多为131 个字符。

    Omron系列的PLC 通过RS232 口与主机通信有两种方式,第一种是由上位机向PLC 发送初始命令,第二种是由PLC 向上位机发送初始命令[3]。在监测系统中一般采用第一种方式。有关通信协议如下所述:

2.2.1上位机→PLC 的命令格式

    其中:

(1)@为起始标志符;

(2)N2 、N1 为PLC 节点标志码,由两位十进制数表示,它们用来指定与上位机通信的PLC。而PLC 自己的通信节点码可由它的DM6648 和DM6653 来设置;

(3)CMD2 、CMD1 为两字节命令码;

(4)MT 为命令内容,用来设置具体的命令参数;

(5)V2、V1 为两字节的帧校验码,它是从开始符“@”到MT码结束的所有字符的ASCII 码按位异或的结果; 帧校验和是一个转换成2 个ASCII 字符的8 位数据。它把帧中每一个字符顺序地进行异或操作而得到的结果,即把帧的第一个字符到正文结束的所有字符转换成二进制形式的ASCII 码后,逐个异或而得到的[4]。当发送命令时,将其加在命令格式中,作为帧的一部分发送到接收端。当接收数据时,按上述步骤重新计算FCS ,当计算结果与数据块中所带的FCS 相同时,说明传输无误,否则,说明接收到的数据不正确。

(6)“*”和“CR”两字符表示命令结束。

   例如,@00WD00060500表示写一个数500到节点为0的PLC的DM0006中。

2.2.2 PLC→上位机的响应格式

其中S2 、S1 为命令结束状态码,如00 表示正常结束,01 表示RUN 模态下PLC 无法完成上位机命令,其余符号代码意义同上。实现上位机与HOST Link 通信单元的通信只需编写上位机程序,因为HOST Link 通信单元自身带有通信程序,上位机下发命令,地址相符的PLC 自动上传响应帧,所以这一部分程序不需要客户编写,但是,编写上位机的通信程序时,通信参数的设置必须保证与PLC 的通信参数一致性。

3.用VC++6.0编写串行通信程序

    首先建立一个基于对话框的MFC应用程序SCommTest,支持ActiveX控件,电话形状的控件是在系统中注册过的MicrosoftCommunications Control, version 6.0,接受缺省的选项。

1.打开串口设置串口参数

   在主对话框CSCommTestDlg::OnInitDialog()中打开串口,加入如下代码:

if(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(1); //选择com1
i f ( ! m _ c t r l C o m m . G e t P o r t O p e n ( ) ) m _ c t r l C o m m .
SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("cannot open serial port");
m_ctrlComm.SetSettings("9600,E,7,2"); //波特率9600,偶校验,7个数据位,2个停止位m_ctrlComm.SetInputModel(1); //1:表示以二进制方式检取数据m_ctrlComm.SetRThreshold(1);
//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
m_ctrlComm.SetInputLen(0); //设置当前接收区数据长度为0
m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据

2.发送数据

    为发送按钮添加一个单击消息BN_CLICKED处理函数,选择IDC_BUTTON_MANUALSEND,添加OnButtonManualsend()函数,并在函数中添加如下代码:

UpdateData(TRUE); //读取编辑框内容
SendData(m_strTXData1,6);
// m_strTXData1表示发送速度命令的具体数值,6表示写数据的地址DM0006
Sleep(100);
SendData(m_strTXData2,12); //m_strTXData1表示发送时间命令的具体数值,12表示写数据的地址DM0012

3.发送命令

    按照命令格式,本课题主要发送两个WD命令:

(1)数据采用十进制发送,向DM0006中写入速度指令;

(2)数据采用十进制发送,向DM0012中写入时间指令。部分程序如下:

Void CSCommTestDlg::SendData(int m_TobeSend,intm_address)
{ CByteArray Array;
unsigned char auchMsg[45]={0}
auchMsg[0]=64; // 起始标志符
auchMsg[1]=0x0; //节点号
auchMsg[2]=0x0; auchMsg[3]=‘W‘; //命令符
auchMsg[4]=‘D‘;
auchMsg[5]=m_address/1000;
auchMsg[6]=(m_address%1000)/100;
auchMsg[7]=(m_address%100)/10;
auchMsg[8]=m_address%10;
auchMsg[9]=m_TobeSend/1000;
auchMsg[10]=(m_TobeSend%1000)/10;
auchMsg[11]=(m_TobeSend%100)/10;
auchMsg[12]=m_TobeSend%10;
LRC(auchMsg,13);
//auchMsg[13] ,auchMsg[14] ,保存FCS值
auchMsg[15]=‘*‘; //命令结束符
auchMsg[16]=13;
Array.RemoveAll();
for (Count=0;Count<17;Count++)
Array.Add(auchMsg[Count]);
m _ c t r l C o m m . S e t O u t p u t ( C O l e Va r i a n t ( A r r a y ) ) ;

4.计算校验码函数

unsigned char uchLRC = 0 ; 初始值设定
while (usDataLen——)
{uchLRC ︿= *auchMsg++; }
unsigned char high=0xF0;
//high为校验码的高位
unsigned char low=0x0F;
//low为校验码的低位
high&=uchLRC;
low&=uchLRC;
high>>=4;右移四位
if(high<=9)
high=high+48;
else
high=high+55;
if(low<=9)
low=low+48;
else
low=low+55;
*auchMsg++=high;
*auchMsg++=low;

四.结束语

    此程序在VC++6.0中运行通过,并成功应用于振动磨的控制中。该系统采用OMRON XA40DR-A PLC与上位机连接组成控制系统,上位机通过串行口向PLC发出写命令及数据,PLC接受数据后,通过D/A转换模块,将模拟量发给变频器,从而实现了振动磨振动速度和时间的控制。

关键字:上位机  PLC  串口通信  VC++6.0  振动磨 引用地址:用欧姆龙PLC与上位机通信实现振动磨的变频控制

上一篇:自动化控制系统在城市生活污水处理中应用
下一篇:针对无源接口滤波和线性有源滤波器设计的综合解决方案

推荐阅读最新更新时间:2024-03-30 21:33

基于台达20PM的点胶机数控系统
1 引言   点胶机是专门对液体体进行控制,将液体点滴、涂覆、灌封于产品表面或产品内部 的自动化机 器。点胶机主要用于产品工艺中的胶水、油以及其他液体的粘接、灌注、涂层、密封、   填充、点滴、线形/弧形/圆形涂胶等。自动点胶机在工业制造中越来越得到广泛的应用,小到手机、镜头、IC封装、LCD、LED、笔记本电脑、数码相机、SCP、BGA、二极管、三极管、精密机械等;大到飞机、汽车、机械制造等,都需要精密的点胶设备支持。点胶还是SMT(表面贴装技术)PCB印制电路板制基本工艺流程。SMT流程由点胶-贴装(固化)-回流焊接-清洗-检测等工艺环节组成。其中,点胶工艺作用是将焊膏或贴片胶漏印到PCB的焊盘上,为元器件的贴装和焊
[工业控制]
PLC故障常见原因分析
(一)外围电路元器件故障 此类故障在PLC工作一定时间后的故障中经常发生。在PLC控制回路中如果出现元器件损坏故障,PLC控制系统就会立即自动停止工作。 输入电路是PLC接受开关量、模拟量等输入信号的端口,其元器件质量的优劣、接线方式及是否牢靠也是影响控制系统可靠性的重要因素。 对于开关量输出来说,PLC的输出有继电器输出、晶闸管输出、晶体管输出三种形式,具体选择哪种形式的输出应根据负载要求来决定,选择不当会使系统可靠性降低 严重时导致系统不能正常工作。 此外,PLC的输出端子带负载能力是有限的.如果超过了规定的最大限值.必须外接继电器或接触器.才能正常工作。 外接继电器、接触器、电磁阀等执行元件的质量,是影响系统
[嵌入式]
基于PLC的自动智能仓储系统的通讯解析
1 自动智能仓储系统简介 智能仓储系统是集机、电、微机、数据库为一体的产品。使用智能仓储系统的目的是能高效率地利用存储空间提高保管使用率且存放安全。可编程控制器plc以其可靠性、灵活性、适应工厂现场控制等诸多优点在自动仓储控制系统中得到了充分体现。plc能对上位机传送的数据进行分析判断完成数据采集、逻辑运算输入输出控制等功能,然后把指令发给变频器控制电机操作完成动作。 2 自动智能仓储系统组成 本例智能仓储系统的现场人机界面采用触摸屏,对电机的控制采用变频器,控制系统主控单元采用siemens s7-200 plc。智能仓储系统中plc的输入设备有按钮、行程开关、接近开关,输出设备有继电器、接触器。因智能仓储系统的输入量太多
[工业控制]
基于<font color='red'>PLC</font>的自动智能仓储系统的通讯解析
基于WinCE的GPS导航数据提取的设计与研究
    Windows CE 是一个开放的、可裁剪的、32位实时嵌入式窗口操作系统,具有可靠性好、实时性高、内核体积小的特点,广泛应用于各种智能式设备的开发。系统通过微软提供的Platform Builder定制需要的Windows CE5.0系统,运行在硬件平台上。硬件平台采用博创科技PXA270实验箱,该实验箱嵌入式处理器是基于ARMV5E的Xscale核心PXA270,并支持串口通信。     GPS导航芯片采用天宝iQ 46240,将接收到的数据通过串口发送给处理器。串口是计算机系统与外部串行设备之间的数据传输通道,是嵌入式通信最可靠、最通用的通信方式。程序员利用Windows API函数可以编写出高效、可移植性的应用
[嵌入式]
基于S7-1200PLC的流量累积功能程序
在使用s7-1200PLC编写程序的时候,如果项目上需要用到流量累积功能,但是本款PLC并没有自带流量累积功能块。这时,就需要我们组态工程师自己编写一个具有流量累积功能程序,或者将该程序封装为FB块或者FC块。本文以封装FB块为例。 第一步:在程序块目录下单击添加新块,弹出添加新块对话框,选中FB函数块,在名称栏填上需要命名的名字,如:Totalizer,选择编程需要用的编程语言,本文以SCL语言讲解,FB块的编号可以通过手动或自动生成,然后单击确认,如下图所示 第二步:打开新建功能块,并建立临时变量,如下图所示 第三步:程序编写,如下图所示: 程序编写完成后,进行编译,编译没有错误时,在FC(FC2,FLOWAC
[嵌入式]
基于S7-1200<font color='red'>PLC</font>的流量累积功能程序
PLC的远距离隔离通信解决方案
  由西门子S7-200PLC组成的RS485通信网络其最大通信距离为500米,可挂接32个节点,距离超过500米时需在RS485总线上加装RS485中继器,为方便接线,每个PLC的通信端口需安装总线连接器,网络的两端需配接终端电阻。这是一种常规的通信方案,有以下几个缺点:   1、 当距离超过500米时,需增加RS485中继器来延长通信距离,而中继器需要供电,这对于有些无供电条件的场合,如野外、油田、海底等将带来很大麻烦。   2、 整个通信网络是非隔离的,抗干扰能力较差,特别是当网络上连接有变频器通信时容易造成误码和死机。   3、 由于通信网络是非隔离的,当有雷电或其它较强的瞬变电压干扰作用于网络上时势必造成网络
[嵌入式]
从零开始学单片机(九)串口通信
串口通信是单片机一个重要的部分,单片机和PC,单片机和单片机之间的通信大都用串口。单片机的串口是全双工异步串口通信方式。通过TXD(P3.1)发送,RXD(P3.0)引脚接收输入。串口传送数据是一帧一帧发送的,它有四种工作方式,同时也可以做并行I/O的扩展。 图上是串口的结构图。 SBUF是数据缓冲寄存器,发送和接收用的是一个地址,但是不用担心冲突,读只能从接收缓冲区,写只能在发送缓冲区里。 寄存器SCON(SM0 SM1 SM2 REN TB8 RB8 TI RI) SM0和SM1: 工作方式选择(0-3),方式1和方式3使用T1产生波特率,方式0和方式2是固定速率。 SM2 :在方式2和方式3的多级通信控制位 RE
[单片机]
从零开始学单片机(九)<font color='red'>串口通信</font>
SIMATIC S7-1500 PLC的通信及其应用—通信的基本概念
PLC的通信包括PLC与PLC 之间的通信、 PLC 与上位机计算机之间的通信以及和其他智能设备之间的通信。 PLC与PLC 之间通信的实质就是计算机的通信,使得众多独立的控制任务构成一个控制工程整体,形成模块控制体系, PLC与计算机连接组成网络,将PLC 用于控制工艺现场,计算机用于编程、显示和管理等任务,构成“集中管理、分散控制”的分布式控制系统( DCS )。 (1) 串行通信与并行通信 串行通信和并行通信是两种不同的数据传输方式。 串行通信就是通过一对导线将发送方与接收方进行连接,传输数据的每个二进制位,按照规定顺序在同一导线上依次发送与接收,如图1所示。 图****1 例如,常用的优盘USB接口就是串行通信接口
[嵌入式]
SIMATIC S7-1500 <font color='red'>PLC</font>的通信及其应用—通信的基本概念
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved