首页 > 精品范文库 > 8号文库
VB实现PC与欧姆龙PLC通讯的串口编程
编辑:青灯古佛 识别码:17-424375 8号文库 发布时间: 2023-04-22 03:04:42 来源:网络

第一篇:VB实现PC与欧姆龙PLC通讯的串口编程

Private Sub Form_Load()

Dim i As Integer'OPEN COM1

If ComTrue(1)= 0 Then

If ComOpen(1, 38400, 7, 1, 1, “sjh”)= 1 Then 'MsgBox(“已注册”)'sjh为你的注册账号Call SetDelayNum(64)

End If

End If

jisu

jisu1

jisu2

End Sub

第二篇:VB中串口通讯的实现

VB中串口通讯的实现.txt VB中串口通讯的实现

------------------

一、概述

串口通讯作为一种古老而又灵活的通讯方式,被广泛地应用于PC间的通讯以及PC和单片机之间的通讯之中。提到串口通讯的编程,人们往往立刻想到C、汇编等对系统底层操作支持较好的编程语言以及大串繁琐的代码。

实际上,只要我们借助相关ActiveX控件的帮助,即使是在底层操作一向不被人看好的VB中,一样能够实现串口通 讯,甚至其实现方法和C、汇编相比,要更加快捷方便。下面,笔者就介绍一下在VB中实现串口通讯的方法。

在Visual Basic中有一个名为Microsoft Communication Control(简称MSComm)的通讯控件。我们只要通 过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。下面,笔者就简要地介绍一下

MSComm控件的使用方法。

二、MSComm控件的主要属性、事件

1、MSComm的属性

由于MSComm控件属性很多,在此笔者仅介绍与实现串口通讯密切相关的核心属性。

Commport:设置通讯所占用的串口号。如设成1(默认值),表示对Com1进行操作。

Setting:对串口通讯的相关参数。包括串口通讯的比特率,奇偶校验,数据位长度、停止位等。其默认值 是“9600,N,8,1”,表示串口比特率是9600bit/s,不作奇偶校验,8位数据位,1个停止位。

Portopen:设置串口状态,值为True时打开串口,值为False时关闭串口。

Input:从输入寄存器读取数据,返回值为从串口读取的数据内容,同时输入寄存器将被清空。

Ouput:发送数据到输出寄存器。

InBufferCount:设置输入寄存器所存储的字符数,当将其值设为0时,则输入寄存器将被清空。

InputMode:设置从输入寄存器中读取数据的形式。若值为0,则表示以文本形式读取;值为1,则表示以 二进制形式读取。

OutBufferCount:设置输出寄存器所存储的字符数,当将其值设为0时,则输出寄存器将被清空。

RThreshold:设置在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm事件之前要接受的字符 数。

CommEvent属性:返回最近的通讯事件或错误。通过对它具体属性值的查询,我们就可以获得通讯事件和通 讯错误的完整信息。当其值是comEvReceive时表示接收到数据。

2、MSComm的事件

除了公共事件之外,MSComm只有一个OnComm事件。当CommEvent属性值变化时将发生OnComm事件,指示发生 一个通讯事件或错误。当我们设置Rtheshold属性值为0时,将使得捕获comEvReceive事件无效。

三、串口通讯编程实例

在完成了对MSComm控件的简要介绍之后,笔者就以实际程序为例,介绍一下串口通讯的具体实现方法。

1、PC机间的串口通讯

(1)、实现方法:

A、新建一个窗体,在上面放两个Text控件、两个CommandButton控件和两个Label控件(如图1.bmp所示)。

具体见下表:

控件类型 名称 Caption属性 作用

-----------------

Text Text1-------输入所要发送的信息

Text Text2-------显示接收到的信息

CommandButton Command1 发 送---------CommandButton Command2 退 出---------

Label Label1 发送的数据 提示

Label Label2 接收的数据 提示

B、在控件工具箱中的空白处点击鼠标右键,在弹出的菜单中选择“部件”,在弹出的窗口中的控件列表中 找到“Microsoft Comm Control”,将其选中,在点击“应用”、“关闭”,在控件工具栏中就会出现一个电 话的小图标。

C、用串口线将两台电脑连接起来。您可以使用Com1对Com1的对应连接,也可以使用Com1和Com2的交叉连接。

本程序使用的是Com1对Com1的连接。

D、输入以下代码:

Private Sub Command1_Click()

'...发送数据

MSComm1.OutBufferCount = 0 '...清空输出寄存器

MSComm1.Output = Text1.Text '...发送数据

End Sub

Private Sub Command2_Click()

'...退出

Unload Me

End Sub

Private Sub Form_Load()

'...初始化

MSComm1.CommPort = 1 '...使用Com1口

MSComm1.Settings = “9600,n,8,1” '...设置通讯参数

MSComm1.PortOpen = True '...打开串口

End Sub

Private Sub Mscomm1_Oncomm()

'...通讯事件发生

Select Case MSComm1.CommEvent

Case comEvReceive '...有接受事件发生

Text2.Text = MSComm1.Input '...接受显示数据

MSComm1.InBufferCount = 0 '...清空输入寄存器

End Select

End Sub

2、PC机与单片机之间的通讯

PC机与单片机之间的通讯被广泛的用于工业、医疗测控等领域之中。在应用中,我们通常将单片机作为“感 受器”和“效应器”,负责数据采集、响应计算机发出的指令对电路进行控制,有时也进行一些简单的运算,最后再将执行数据反馈给计算机处理。本程序将实现在PC机上输入一个0-255之间的整数,将此数据发送到单片 机,单片机接收到数据后,将数据在显示管上显示,再将此数除以2,将得数返回给PC机。(运行效果如图 3.BMP所示)其实现方法如下:

A、同PC机间通讯的实现方法A-B。

B、连接电脑和单片机。注意!由于PC机端的RS232电平与单片机端TTL的并不不匹配,故应注意电平转换。

C、在VB中输入以下代码:

Private Sub Mscomm1_Oncomm()

'...通讯事件发生

Dim indata As Variant

Dim bte(0)As Byte

Select Case MSComm1.CommEvent

Case comEvReceive '...有接受事件发生

indata = MSComm1.Input

'...注意!要通过MSComm控件发送或接收二进制数据必须用Variant类型的变量对二进

'...制Byte类型的变量进行转换!

bte(0)= AscB(indata)

Text2.Text = bte(0)

MSComm1.InBufferCount = 0 '...清空输入寄存器

End Select

End Sub

Private Sub Command1_Click()

'...发送数据

Dim Num As Integer

Dim outbte(0)As Byte

Num = Val(Text1.Text)

outbte(0)= CByte(Num)

MSComm1.OutBufferCount = 0 '...清空输出寄存器

MSComm1.Output = outbte(0)'...发送数据

End Sub

Private Sub Command2_Click()

'...退出

Unload Me

End Sub

Private Sub Form_Load()

'...初始化

MSComm1.CommPort = 1 '...使用Com1口

MSComm1.Settings = “9600,n,8,1” '...设置通讯参数

MSComm1.PortOpen = True '...打开串口

End Sub

D、单片机工作方式置于1,比特率设为9600bit/s。在单片机上,我们只得使用汇编语言编写,并且调用中 断实现对串口数据的收发工作。源代码如下:

PUSH PSW ;将程序状态字压入堆栈

PUSH ACC ;将累加器压入堆栈

CLR EA ;关闭系统中断

CLR RI ;清除中断标志位

MOV A,SBUF ;从接收寄存器中读取数据

MOV 70H,A ;分解数据百、十、个位并显示

MOV B,#100

DIV AB

MOV 52H,A ;分解百位,送入存储器52H

MOV A,B

MOV B,#10

DIV AB

MOV 51H,A ;分解十位,送入存储器51H

MOV 50H,B ;分解个位,送入存储器50H MOV A,70H

MOV B,#2

DIV AB;将接受的数据除以2

MOV SBUF,A ;将得数发送到输出寄存器

ACALL DL1 ;延时保证数据完整发送

ACALL DL1

CLR RI ;清除中断标志位

SETB EA ;打开系统中断

POP ACC;累加器出栈

POP PSW ;程序状态字出栈

RETI ;中断程序返回

3、编程环境

以上程序在Windows 2000 Professional,Visual Basic 6.0企业版,AT89C52型单片机下调试通过。

四、总结

从以上程序可以看出,在VB中利用MSComm控件,可以快速开发出串口通讯程序,从而大大提高编程效率。

演讲稿

尊敬的老师们,同学们下午好:

我是来自10级经济学(2)班的学习委,我叫张盼盼,很荣幸有这次机会和大家一起交流担任学习委员这一职务的经验。

转眼间大学生活已经过了一年多,在这一年多的时间里,我一直担任着学习委员这一职务。回望这一年多,自己走过的路,留下的或深或浅的足迹,不仅充满了欢愉,也充满了淡淡的苦涩。一年多的工作,让我学到了很多很多,下面将自己的工作经验和大家一起分享。

学习委员是班上的一个重要职位,在我当初当上它的时候,我就在想一定不要辜负老师及同学们我的信任和支持,一定要把工作做好。要认真负责,态度踏实,要有一定的组织,领导,执行能力,并且做事情要公平,公正,公开,积极落实学校学院的具体工作。作为一名合格的学习委员,要收集学生对老师的意见和老师的教学动态。在很多情况下,老师无法和那么多学生直接打交道,很多老师也无暇顾及那么多的学生,特别是大家刚进入大学,很多人一时还不适应老师的教学模式。学习委员是老师与学生之间沟通的一个桥梁,学习委员要及时地向老师提出同学们的建议和疑问,熟悉老师对学生的基本要求。再次,学习委员在学习上要做好模范带头作用,要有优异的成绩,当同学们向我提出问题时,基本上给同学一个正确的回复。

总之,在一学年的工作之中,我懂得如何落实各项工作,如何和班委有效地分工合作,如何和同学沟通交流并且提高大家的学习积极性。当然,我的工作还存在着很多不足之处。比日:有的时候得不到同学们的响应,同学们不积极主动支持我的工作;在收集同学们对自己工作意见方面做得不够,有些事情做错了,没有周围同学的提醒,自己也没有发觉等等。最严重的一次是,我没有把英语四六级报名的时间,地点通知到位,导致我们班有4名同学错过报名的时间。这次事使我懂得了做事要脚踏实地,不能马虎。

在这次的交流会中,我希望大家可以从中吸取一些好的经验,带动本班级的学习风气,同时也相信大家在大学毕业后找到好的工作。谢谢大家!

第三篇:三菱PLC与PC上位机VB通讯

三菱PLC通讯

三菱PLC与PC上位机VB通讯

三菱PLC:FX1N + FX1N-232-BD

FX2N + FX2N-232-BD 计算机:Windows XP中文企业版 + Visual Basic 6.0中文企业版

Windows 98中文版 + Visual Basic 6.0 中文企业版

两者之间连接使用的是FX-232CAB-1电缆线(2-3,3-2,4-6(8),5-5)

一.三菱PLC的设置

三菱FX PLC在进行计算机链接(专用协议)和无协议通讯(RS指令)时均须对通讯格式(D8120)进行设定。其中包含有波特率、数据长度、奇偶校验、停止位和协议格式等。在修改了D8120的设置后,确保关掉PLC的电源,然后再打开。

此外,对于采用RS485形式1:N计算机链接的还必须对站点号(D8121)进行设定。设定的范围从00H到0FH(即0到15)。在这里对D8120采用下述设置: b15 b0 0110 1000 1000 1110 6 8 8 E 即数据长度为7位,偶校验,2位停止位,波特率为9600bps,无标题符和终结符,采用计算机链接(RS-232C),自动添加和校验码,采用专用协议格式1。同时设定站号为0。具体设定如下所示:

FX PLC进行计算机链接时可用的专用协议有两种:格式1和格式4。两种格式的差别在于是否在每一个块上添加了CR + LF,其中添加了CR + LF的是格式4。在这里采用格式1。

二.上位机程序的编制

这里采用Microsoft公司的Visual Basic 6.0中文企业版编制上位机程序。Visual Basic中提供了一个名为MSComm的通信控件便于设计串行通信的程序。MSComm控件的主要属性有: 1. CommPort属性

CommPort属性用于指定所要使用的串行端口的号码。虽然Windows操作系统可以容纳最多256个串行通信端口,不过Visual Basic的MSComm控件则仅限于16个端口。2. Settings属性

Settings属性用于设置初始化参数。以字符串的形式设置波特率、奇偶校验、数据位、停止位等4个参数。其格式为“BBBB,P,D,S”,其中BBBB表示波特率,P表示奇偶校验位检查方式,D表示数据位数,S表示停止位数。一般情况下,欧美仪器习惯使用“9600,n,8,1”当成设置值;而日本仪器则习惯使用“9600,e,7,2”作为设置值。Settings设置完成之后,所传输及接受的字符串便以此设置为准,使用RS-232通信的双方,Settings必须完全一样,彼此才能顺利地通信,否则双方将无法正确接收到彼此所传输的信号。所以,该属性的设置必须和三菱PLC中D8120的相关设置保持一致。在这里,统一采用“9600,e,7,2”的设定。

三菱PLC通讯

3. PortOpen属性

PortOpen属性用于设置通信连接端口的状态。在使用串行端口之前必须先将要使用的串行端口打开。在上位机程序中应进行如下设定: Private Sub Form_Load()'窗体载入事件 MSComm1.CommPort = 1 '选择端口号 MSComm1.Settings = “9600,e,7,2” '设置端口属性 MSComm1.PortOpen = True '打开端口 End Sub 4. Output属性

MSComm控件的Output属性提供了发送的功能,当从计算机向可编程控制器写入数据或从可编程控制器读取数据时,上位机应当先发出以下格式(格式1)的指令字符串: ENQ 站号 PC号 命令 消息等待时间 字符区域A 和校验代码

其中站号为在D8121中的设定值,这里是:00,PC号对于FX系列为:FF。

因为ENQ,ACK,NAK等通信控制字符是不可见字符,所以先用Chr函数对其进行赋值: ENQ=Chr(5)ACK=Chr(6)NAK=Chr(&H15)然后在上位机程序中写入以下代码即可发出指令:

MSComm1.Output=ENQ &“00FF<命令><消息等待时间><字符区域A><和校验代码>” 5. Input属性

与Output属性相反,Input属性提供了接收数据的功能。它将对方传到输入缓冲区中的数据读进程序中,并清除缓冲区中已被读取的数据。

a.如果是从计算机向可编程控制器写入数据时,接收到从可编程控制器返回的应该是以下格式的字符串:

ACK 站号 PC号

或者

NAK 站号 PC号 错误代码

前一种表示可编程控制器已经正确接收到从计算机发来的指令,后一种表示可编程控制器未正确接收到从计算机发来的指令。

b.如果是从计算机向可编程控制器读取数据时,接收到从可编程控制器返回的应该是以下格式的字符串:

STX 站号 PC号 字符区域B ETX 和校验代码 或者 NAK 站号 PC号 错误代码

如果要连续读取数据可以利用Timer控件。将Output和Input放在Timer控件的Timer事件中即可。程序会以Timer控件的Interval属性中设置的间隔去发送指令和接收数据。对于MSComm控件的其他一些属性使用VB的默认值即可。

在串行通信传输的应用中,经常使用的Visual Basic中的字符串处理函数如下: Chr函数:返回含有特定ANSI或DBCS字符码的字符串。Asc函数:返回字符串第一个字符的ANSI或DBCS字符码。

Len函数:返回以字符数为单位的字符串长度。

Mid函数:取得字符串中特定数量的字符,可指定开始获取的位置和长度。Left函数:取得字符串的左边固定字符数的字符串。

Right函数:取得字符串的右边固定字符数的字符串。

Val函数:把字符串转换为数值,可以将8进制或16进制的字符串转换为10进制。Hex函数:返回以十六进制数值表示的字符串。

三菱PLC通讯

RS指令应用一

三菱PLC与计算机利用RS指令进行通讯(通讯手册9-14例)三菱PLC:FX1N + FX1N-232-BD 计算机:Windows XP中文企业版 + Visual Basic 6.0中文企业版

Windows 98中文版 + Visual Basic 6.0中文企业版

两者之间连接使用的是FX-232CAB-1电缆线(2-3,3-2,4-6(8),5-5)

一.三菱PLC的设置

三菱FX PLC在进行计算机链接(专用协议)和无协议通讯(RS指令)时均须对通讯格式(D8120)进行设定。其中包含有波特率、数据长度、奇偶校验、停止位和协议格式等。在修改了D8120的设置后,确保关掉PLC的电源,然后再打开。在这里对D8120采用下述设置: b15 b0 0000 0100 1000 1111 0 4 8 F 即数据长度为8位,偶校验,2位停止位,波特率为9600bps,无标题符和终结符,没有添加和校验码,采用无协议。PLC程序如下:

二.上位机程序的编制

完整程序代码及注释如下:

Private Sub cmd1_Click()

'发送按钮

lbl1.Caption = “" If txt1.Text = ”“ Then

'若发送数据栏中未键入指令则提示键入指令 lbl1.Caption = ”Please input data“ Else MSComm1.Output = txt1.Text

'发送指令 Timer1.Enabled = True

'触发延时接收 End If

三菱PLC通讯

End Sub Private Sub Form_Load()

'窗体载入事件 MSComm1.CommPort = 1

'选择端口号 MSComm1.Settings = ”9600,e,8,2“ '设置端口属性 MSComm1.PortOpen = True

'打开端口 End Sub

Private Sub Timer1_Timer()

'延时500ms接收 NAK = Chr(&H15)If MSComm1.InBufferCount > 0 Then txt2.Text = ”“ a = MSComm1.Input txt2.Text = a

'在接收数据栏中显示接收到的数据 Else lbl1.Caption = ”No response" End If Timer1.Enabled = False End Sub

三菱PLC通讯

RS指令应用二

三菱PLC与仪表之间通讯

三菱PLC:FX1N + FX1N-232-BD 仪表(称重器)

两者之间连线该仪表仅提供3线式的简化RS-232C口,即只有:RXD,TXD和GND,于是采用2-3,3-2,5-5的三线接法。

1. 对D8120进行设置并使其与仪表中的设置一致,对其中的控制线设置成使用无硬件握手方式,即(b12,b11,b10)=(0,0,0)。根据仪表说明书上对通讯的要求,设置如下:

b15

b0 0000 0000 1000 0110

0 0 8 6 2. 根据仪表说明书所述,该种仪表有两种工作方式:连续发送和指令状态。这里设置成指令状态,即仪表根据发来的指令返回相应的数据。在此使用READ指令,根据指令协议,输入的指令必须以确认。所以READ指令的ASCII输入为“52,45,41,44,0D,0A”一共6个字符,将RS指令的发送数据点数设为k6。另外返回数据的格式是18个字符,所以将RS指令的接收数据点数设为k18。通过

注:发送数据点数和接收数据点数必须按指令协议进行设置,否则通讯不能正常进行。PLC程序如下:

三菱PLC通讯

参考资料

1.三菱FX通讯用户手册(RS-232C,RS485)2.《Visual Basic与RS-232串行通信控制(最新版)》清华大学出版社

第四篇:对编写单片机与欧姆龙PLC串口通信遇到问题做一些小结

对编写单片机与欧姆龙PLC串口通信遇到问题做一些小结

2011-07-15 11:28:31|分类:|标签: |字号大中小 订阅

1,程序发的数据包太多了,并且数据包的定义是RAM的,很容易造成单片机的RAM不够,因为单片机默认的RAM是128个字节,不过可以扩展高的128个字节,范围在80H-FFH,定义是这样定义的,char idata

XX[]:

如果这样不够的话就只能在想办法来解决这个问题,找一些规律啊,或是改成查表的形式,定义成code 类

型:uchar code XX[]:

2.程序中的要对一些数据进行掉电保存,我这里用到了单片机内部自带的EEROM,在编写程序中也遇到

一些问题,只能保存一个数据,后面:后面调了一下程序:发现一个问题,就是每个对数据进行更新的话,都要对你定义的所以地址的内

容进行,然后在写入,单对某个地址的话就是不行,:

//=======================对保存的四个数据位进行清除扇区

Sector_Erase(add1);

Sector_Erase(add2);

Sector_Erase(add3);

Sector_Erase(add4);

_nop_();_nop_();_nop_();//===小延时一下

//=====================写入要保存的数据位,也是一次要保存好4个数据,不能单一进行了,不然就

会只能保存一个数据

Byte_Program(add1,key_count);

Byte_Program(add2,(char)CLAMP_flag);

Byte_Program(add3,(char)CONV_flag);

Byte_Program(add4,(char)MODE_flag);

3,我这里的PLC用的通信协议是:9600BPSN 7 2

也就是:一个起启位,7个数据位,两个停止位,无校验的形式;

这个我在单片机中用的通信协议是:9600BPSN 8 1

也就是:一个起启位,8个数据位,一个停止位,无校验的形式;

这些两个协议就不对了,哪就要去兼容了,根据数据的原理,我们只在发的数据的最高位是1(也就是一

个停止位)就可以兼容这种PLC的通信协议的形式了:

第五篇:欧姆龙PLC与变频器的设计

绪 论

可编程控制器(PLC)是在计算机技术、通信技术和继电器控制技术的发展基础上开发出来的,现已广泛应用于工业控制的各个领域。它以微处理器为核心,用编写的程序进行逻辑控制、定时、计数和算术运算等,并通过数字量和模拟量的输入/输出来控制机械设备或生产过程。

如今,PLC在我国各个工业领域中的应用越来越广泛。在就业竞争日益激烈的今天,掌握PLC设计和应用是从事工业控制研发技术人员必须掌握的一门专业技术。

任何生产机械电气控制系统的设计,都包括两个基本方面:一个是满足生产机械和工艺的各种控制要求,另一个是满足电气控制系统本身的制造、使用以及维修的需要。因此,电气控制系统设计包括原理设计和工艺设计两个方面。前者决定一台设备使用效能和自动化程度,即决定着生产机械设备的先进性、合理性,而后者决定着电气控制设备生产可行性、经济性、外观和维修等方面的性能。

在现代控制设备中,机-电、液-电、气-电配合得越来越密切,虽然生产机械的种类繁多,其电气控制设备也各不相同,但电气控制系统的设计原则和设计方法基本相同。

在最大限度满足生产设备和生产工艺对电气控制系统要求的前提下,力求运行安全、可靠,动作准确,结果简单、经济,电动机及电气元件选用合理,操作、安装、调试和维修方便。

要完成好电气控制系统的设计系统,除要求我们掌握必要的电气设计基础知识外,还要求我们必须经过反复实践,深入生产现场,将我们所学的理论知识和积累的经验技术应用到设计中来。本次课程设计正是本着这一目的而着手实施的实践性环节,它是一项初步的模拟工程训练。通过这次课程设计,我感到更深地了解一般电气控制系统的设计要求、设计内容和设计方法。

目录

课程设计任务书-------------1 绪论-----------------------2 课程设计内容---------------5 一.设计要求---------------5 二.设计任务和目的---------5 三.课题要求---------------5 四.控制要求---------------5 五.总体设计方案-----------6 六.硬件部分设计-----------9 七.软件部分设计

-----------13

八.调试过程和结果

---------17

心得体会------------------18 参考文献------------------19

课程设计内容

一.设计要求

1.确定控制方案,选择PLC和变频器及电动机型号。2.画出电气控制线路原理图。3.设计程序

4.完成PLC控制系统梯形图软件的编制任务。

5.在实验室条件下,通过试验调试初步验证其程序的正确性。

二.设计任务和目的

1.了解PLC控制变频调速系统。

2.了解OMRON-CS系列CPU加CS1W-MAD44模拟量I/0模块和ID模块。

3.了解电气控制系统设计的基本原则、内容与一般步骤。掌握PLC控制变频调速系统调试基本过程及方法。

三.课题要求

1.按题意要求,画出PLC端子接线图及控制梯形图;

2.完成PLC端子接线工作,并利用编程器输入梯形图控制程序,完成调试;

3.完成课程设计说明书

电气控制系统设计的基本原则:在最大限度满足生产设备和生产工艺对电气控制系统要求的前提下,力求运行安全、可靠、动作准确、结构简单、经济、电动机及电气元件选用合理,操作、安装、调试和维修方便。

四.控制要求

1.变频调速器受0~10V输入电压控制; 0V输出频率为0HZ,对应同步转速为0 r/min; 5V输出频率为18HZ,对应同步转速为1500 r/min; 10V输出频率为36HZ,对应同步转速为3000 r/min; 输入电压与输出频率按线性关系变化。

2.要求输出转速按函数变化,请编写梯形图控制程序,并完成调试。

3.改变输出转速~时间的变化函数,重复上述过程.五.总体设计方案

本次设计是实现控制变频调速系统,选用PLC和变频器的组合可完成数字量的输入,实现模拟量和数字量的输出控制。可以通过对频率的调节来实现对速度的控制,使得速度变化更加平滑和实现精确调速。

1.选择机型 本次设计PLC控制变频调速系统设计系统中可以用OMRON-CPM2A PLC加模拟量扩展单元,也可以用OMRON-CS系列CPU加CS1W-MAD44模拟量I/0模块.在这里选用OMRON-CS系列CPU加CS1W-MAD44模拟量I/0模块和ID模块.变频器采用欧姆龙公司的变频器,电机选择380V,3000W,3000r/min。

2.确定系统控制结构

由PLC和变频器组成的开环控制系统,模拟量输入端由两输入,开始与停止按钮;PLC输出端是从0—10V的模拟量作为变频器的输入。

实现如下控制:

0V输出频率为0Hz,对应同步转速为0r/min;5V输出频率为18Hz,对应同步转速为1500r/min;10V输出频率为36Hz,对应同步转速为3000r/min。

当PLC模拟量输出0—10V变化时,变频器输出频率为36Hz;电机经过20s速度由0—3000r/min;电机以最大速度运行10s,PLC模拟量输出由10V将到5V,变频器输出频率为18Hz,对应同步转速降为1500 r/min经历10s达到一定值速度运行20s后,PLC模拟量输出由5V降到0V,变频器输出为0Hz,电机转速为0r/ min。

3.系统流程图

5.设计步骤

(1)使用PLC的OD模块的两个输入点作为系统的启动和停止信号的输入点;

(2)使用PLC的ID模块的一个输出点作为使电机正转启动的输出信号,接到变频器的S0端子上;

(3)连接CS1W-MAD44模拟量I/0模块的A1+、A2-至变频器的电压输入端;

(4)调节变频器使其输出频率受模拟量输入电压控制;(5)然后编制输出按时间函数循环的梯形图程序;(6)最后调试并运行。

六.硬件部分设计 1.CS1W-MAD44模拟量I/0模块图

2.CS1W-MAD44模拟量I/0功能块

3.模拟量输出回路

4.输出规格

如果设置值超过下面提供的规定,将发生输出设置错误,并将输出有输出保持功能规定的输出量。

根据设计要求选取输出范围:0~10 V: 5.标度转换

输出范围:0~10V所对应的16进制数为:0000H~0FA0H 6.模拟量输出接线图

7.数据交换概要

数据通过特殊I/O单元区域(用来操作单元的数据)和特殊I/O单元DM区域(用来进行初始设置的数据)在CPU单元和CS1W-MAD44模拟量I/O单元之间交换。

8.I/O刷新数据

模拟输入转换值,模拟输出设置值,和其它用来操作单元的数据根据单元号在CPU单元的特殊I/O单元区域里分配,并在I/O刷新过程中交换.9.固定数据

单元的固定数据,如模拟量输入信号范围和模拟量输出信号范围,根据单元号在CPU单元的特殊I/O单元DM区域里分配,并在电源接通或单元重启动时交换。

10.设置单元号开关

每个模拟量I/O单元占据的特殊I/O单元区域和特殊I/O单元DM区域字地址是通过单元前板上的单元号开设置的。在此系统中单元号设置成4.11.模拟量I/0模块的软件设置过程

(1)根据下表,特殊I/0单元域地址CIO2040-CIO2049, 特殊I/0单元DM区域地址D20400-D20499.(2)根据系统原理接线图,A1 A2电压输出1和CIO区中转换可用字表设置2040为: 0001H

(3)根据输入使用设置表,设置D20400为: 0001H 范围表,设置D20401为: 0001H

(4)根据输入信号范围表,设置D20401为: 0001H 序的1~3条完成。

上面的所有设置在程序的1~3条完成。

七.软件部分设计

系统的软件设计是根据系统给定的时间函数运行的,所以软件的设计主要是以时间原则来设计。

1.程序的主体主要由以下三部分组成(1)控制字的设置(2)时间段设计(3)数据的增减 2.I/0分配表

3.系统设计程序

PLC梯形图 K “http://ruiweihorse.blog.163.com/album/prevPhoto.do?photoId=_fks_43YmJ06-50h723evuB_7gM2tF9GrWAcW”K “http://ruiweihorse.blog.163.com/album/prevPhoto.do?photoId=_fks_43YmJ06-50i31WL8I2KymJ2QGojPa***h”LD

启动按钮

K “http://ruiweihorse.blog.163.com/album/prevPhoto.do?photoId=_fks_43YmJ06-50i31WL8I2KymJ2QGojPa***h”LD

启动按钮

LD

启动按钮 4.程序助记符

LD

启动按钮 LD

停止按钮 KEEP(011)

启动保持 LD

启动保持

MOV(021)#000F 2040

// 转换可用位置1 LD

启动保持

MOV(021)#000F D20400 // 输出使用位置1 LD

启动保持 MOV(021)#0055 D20401 // 输出信号范围置0101.0-10V LD

启动保持 ANDNOT T0004

@MOV(021)#0000 D0

// 一个循环开始时置#0000 LD

启动保持

MOV(021)D0 2041

// 送D0 值至输出通道 LD

启动保持 ANDNOT T0004

TIM 0000#0200

// 时间变化流程 TIM 0001 #000 TIM 0002 #0400 TIM 0003 #0600 TIM 0004 #0650

LD

启动保持 AND P_0_02s ANDNOT T0000

@+(400)D0 #0004 D0

// D0值增加,使输出值连续增加 LD

启动保持 AND P_0_02s AND T0001 ANDNOT T0002

@-(410)D0 #0004 D0 LD

AND P_0_02s AND T0003 ANDNOT T0004

@-(410)D0 #0008 D0 LD

OUT 0.00

END(001)

// D0值减小,使输出值连续减小

启动保持

// D0值减小,使输出值连续减小

启动保持

// 变频器正转启动信号

5.程序说明

第0条:起动和停止信号,用KEEP保持在2100.00中,表示程序启动运行。

第1条:程序启动运行过程中,根据接线图A1 A2电压输出1和CIO区中转换可用字表设置2040为: 000FH

第2条:程序启动运行过程中,根据输入使用设置表设置D20400为: 000FH

第3条:程序启动运行过程中,根据输入信号范围表设置D20401为: 0055H

第4条:程序启动时并且每个循环的开始时D0置#0000,所以输出电压每次都是从0V开始

第5条:只要是在运行过程中,在程序每次扫描过程中D0中的值置入2040通道中转换成电压输出。

第6条:程序启动运行过程中,每次循环中设置成五个时间段T0000—T0004,T0004为复位信号。

第7条:程序启动运行过程中,从0—20秒,D0中的数在每个0.02秒脉冲的上升沿时加#0004,则20秒时刚好D0值为#0FA0,即10V。第8条:程序启动运行过程中,从30—40秒,D0中的数在每个0.02秒脉冲的上升沿时减#0004,则10秒后刚好D0值为#07D0,即为5V。

第9条:程序启动运行过程中,从60—65秒,D0中的数在每个0.02秒脉冲的上升沿时减#0008,则5秒时刚好D0值减为#0000,即0V。

第10条:程序启动运行过程中电机正转信号保持为ON。第11条:程序结束标志。

八.调试过程及结果

调试过程:

1.先将PLC程序传入OMRON-CS PLC中,只连接启动与停止开关,先不与变频器相连接,以免输出电压不正确导致变频器出错。

2.按下启动按钮,然后用万用表测CS1W-MAD44模拟量I/0模块的A1、A2两点间的电压,看是否按照规定曲线运行,如果运行正确则证明PLC部分调试成功。

3.连接PLC的输出点与变频器的输入点,并且调试好变频器的参数设置,最后把变频器的输出与电机接好。

4.最后打开启动按钮,电机正常运行,并且按照给定的时间函数循环运行。显示的最大频率是36HZ。

调试结果:

系统按照给定的时间函数连续循环运行,如图所示,由此说明系统设计合理可靠,此设计完全符合设计要求。

课程设计,对欧姆龙系列PLC的特点有了更深的理解。利用了欧姆龙系列PLC的特点,对按钮、开关等输入/输出进行控制,实现了变频器在控制作用下的自动化。

心得体会

通过本次课程设计,对欧姆龙系列PLC的特点有了更深的理解。利用了欧姆龙系列PLC的特点,对按钮、开关等输入/输出进行控制,实现了变频器在控制作用下的自动化。

在本次课程设计的实践环节中,我更深刻地理解和掌握了电器控制及可编程控制器(PLC)的理论知识和动手技能。参阅了大量的电器控制及可编程控制器(PLC)系统设计的书籍资料,查询了大量的图表、程序和数据,使得课程设计的方案和数据更为翔实和准确,力求科学严谨,使本次以变频器为主题的课程设计精益求精。

经历一周的方案设计、比较、论证、探讨等步骤,经过不懈的努力和反复的验证,积聚了同组同学的一致讨论并通过,再加上指导老师的细心点拨和教诲,终于成功地完成了本次课程设计。但是,由于学识浅薄和资历肤浅,对待解决问题还不成熟,望老师不吝纠正,深感谢意!

VB实现PC与欧姆龙PLC通讯的串口编程
TOP