6ES7212-1HE40-0XB0西门子可编程控制器
可编程控制器(PROGRAMMABLE CONTROLLER,简称PC)。与个人计算机的PC相区别,用PLC表示。
PLC是在传统的顺序控制器的基础上引入了微电子技术、计算机技术、自动控制技术和通讯技术而形成的一代新型工业控制装置,目的是用来取代继电器、执行逻辑、记时、计数等顺序控制功能,建立柔性的程控系统。国际电工委员会(IEC)颁布了对PLC的规定:可编程控制器是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用可编程序的存贮器,用来在其内部存贮执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并通过数字的、模拟的输入和输出,控制各种类型的机械或生产过程。可编程控器及其有关设备,都应按易于与工业控制系统形成一个整体,易于扩充其功能的原则设计。
PLC具有通用性强、使用方便、适应面广、可靠性高、抗干扰能力强、编程简单等特点。可以预料:在工业控制领域中,PLC控制技术的应用必将形成世界潮流
PLC程序既有生产厂家的系统程序,又有用户自己开发的应用程序,系统程序提供运行平台,同时,还为PLC程序可靠运行及信息与信息转换进行必要的公共处理。用户程序由用户按控制要求设计。
第二章PLC的结构及基本配置
一般讲,PLC分为箱体式和模块式两种。但它们的组成是相同的,对箱体式PLC,有一块CPU板、I/O板、显示面板、内存块、电源等,当然按CPU性能分成若干型号,并按I/O点数又有若干规格。对模块式PLC,有CPU模块、I/O模块、内存、电源模块、底板或机架。无任哪种结构类型的PLC,都属于总线式开放型结构,其I/O能力可按用户需要进行扩展与组合。PLC的基本结构框图如下:
一、CPU的构成
PLC中的CPU是PLC的核心,起神经中枢的作用,每台PLC至少有一个CPU,它按PLC的系统程序赋予的功能接收并存贮用户程序和数据,用扫描的方式采集由现场输入装置送来的状态或数据,并存入规定的寄存器中,同时,诊断电源和PLC内部电路的工作状态和编程过程中的语法错误等。进入运行后,从用户程序存贮器中逐条读取指令,经分析后再按指令规定的任务产生相应的控制信号,去指挥有关的控制电路,
与通用计算机一样,主要由运算器、控制器、寄存器及实现它们之间联系的数据、控制及状态总线构成,还有外围芯片、总线接口及有关电路。它确定了进行控制的规模、工作速度、内存容量等。内存主要用于存储程序及数据,是PLC不可缺少的组成单元。
CPU的控制器控制CPU工作,由它读取指令、解释指令及执行指令。但工作节奏由震荡信号控制。
CPU的运算器用于进行数字或逻辑运算,在控制器指挥下工作。
CPU的寄存器参与运算,并存储运算的中间结果,它也是在控制器指挥下工作。
CPU虽然划分为以上几个部分,但PLC中的CPU芯片实际上就是微处理器,由于电路的高度集成,对CPU内部的详细分析已无必要,我们只要弄清它在PLC中的功能与性能,能正确地使用它就够了。
CPU模块的外部表现就是它的工作状态的种种显示、种种接口及设定或控制开关。一般讲,CPU模块总要有相应的状态指示灯,如电源显示、运行显示、故障显示等。箱体式PLC的主箱体也有这些显示。它的总线接口,用于接I/O范本或底板,有内存接口,用于安装内存,有外设口,用于接外部设备,有的还有通讯口,用于进行通讯。CPU模块上还有许多设定开关,用以对PLC作设定,如设定起始工作方式、内存区等
PLC编程算法(1)
PLC中无非就是三大量:开关量、模拟量、脉冲量。只在搞清楚三者之间的关系,你就能熟练的掌握PLC了。
1、 开关量也称逻辑量,指仅有两个取值,0或1、ON或OFF。它是*常用的控制,对它进行控制是PLC的优势,也是PLC*基本的应用。
关量控制的目的是,根据开关量的当前输入组合与历史的输入顺序,使PLC产生相应的开关量输出,以使系统能按一定的顺序工作。所以,有时也称其为顺序控制。
而顺序控制又分为手动、半自动或自动。而采用的控制原则有分散、集中与混合控制三种。
这是用OMRON的开关量编写的一个“单按钮启停”程序。
2、 模拟量是指一些连续变化的物理量,如电压、电流、压力、速度、流量等。
PLC是由继电控制引入微处理技术后发展而来的,可方便及可靠地用于开关量控制。由于模拟量可转换成数字量,数字量只是多位的开关量,故经转换后的模拟量,PLC也完全可以可靠的进行处理控制。
由于连续的生产过程常有模拟量,所以模拟量控制有时也称过程控制。
模拟量多是非电量,而PLC只能处理数字量、电量。所有要实现它们之间的转换要有传感器,把模拟量转换成数电量。如果这一电量不是标准的,还要经过变送器,把非标准的电量变成标准的电信号,如4—20mA、1—5V、0—10V等等。
同时还要有模拟量输入单元(A/D),把这些标准的电信号变换成数字信号;模拟量输出单元(D/A),以把PLC处理后的数字量变换成模拟量——标准的电信号。
所以标准电信号、数字量之间的转换就要用到各种运算。这就需要搞清楚模拟量单元的分辨率以及标准的电信号。例如:
PLC模拟单元的分辨率是1/32767,对应的标准电量是0—10V,所要检测的是温度值0—100℃。那么0—32767对应0—100℃的温度值。然后计算出1℃所对应的数字量是327.67。如果想把温度值**到0.1℃,把327.67/10即可。
模拟量控制包括:反馈控制、前馈控制、比例控制、模糊控制等。这些都是PLC内部数字量的计算过程。
3、 脉冲量是其取值总是不断的在0(低电平)和1(高电平)之间交替变化的数字量。每秒钟脉冲交替变化的次数称为频率。
PLC脉冲量的控制目的主要是位置控制、运动控制、轨迹控制等。例如:脉冲数在角度控制中的应用。步进电机驱动器的细分是每圈10000,要求步进电机旋转90度。那么所要动作的脉冲数值=10000/(360/90)=2500。
介绍了根据三菱FX系列PLC编程口通信技术的特点,设计基于VB的PC与PLC机械手远程 控制程序。通过机械手监控系统软件的具体应用,系统地介绍了VB环境下的MSComm通讯控件 、PLC与上位机的编程口通信协议、系统控制方法设计以及监控软件的实现过程。
关键词:可编程控制器;编程口VB;通信;机械手
中图分类号:TN919.3∶TP241 文献标识码:A 文章 编号:1007—6921(2008)18—0116—03
可编程控制器PLC由于可靠性高、适应性好、接口功能强、体积小以及组态灵活等优点,在 工业控制领域得到了广泛的应用。但是PLC在实际的工程应用中一般与上位计算机组成分布 式/分级型控制系统来完成监控任务,这就需要使用PLC的通讯技术。而PLC的编程口在上传 控制程序后,一般处于闲置状态,在机械手监控系统中,三菱FX1N 40MR PLC作为下位机并 以编程口作为通信口,用来完成控制量的输出、传感器数据的采集等工作,上位机采用个人 计算机(PC),用来完成传感数据分析、运动规划,状态显示等功能,以实现对机械手的实 时监控。
为实现PLC与上位计算机的数据通讯,有多种开发平台可以使用,其中VB是一套完 全独立的bbbbbbS开发系统,是可视化的、面向对象、采用事件驱动方式的**程序设计语 言。尤其是它提供了一个预定义对象——MSComm通讯控件。通过设置该对象的属性,向对象 发送信息,以及为对象事件编写响应代码,可以很方便地完成用户应用程序之间的串行通讯 ,对于通过编程口与串行口进行数据通讯的PLC与上位计算机组成的监控系统,它提供了稳 定、可靠的通讯。
1 机械手的系统控制方法
机械手是由机械本体、气动控制系统、PC-PLC监控系统组成,其机械结构如图1所示。机械 手是由基座、腰部、手臂和手爪等几部分组成,分别完成扭转、升降、手爪翻转、手臂伸缩 和手爪夹持动作。而上述5种动作是由气缸驱动实现的,气动原理如图2所示。其中扭转气缸 、升降气缸、手臂伸缩气缸是由三位五通阀来控制,而手臂翻转、手爪夹持、气动系统通断 是由二位五通阀来控制的。对各电磁阀的控制是由PLC远程实现的。
为了实现对机械手工作状态的监视和控制,充分利用计算机系统具有的远程控制和管理功能 。为此,我们将控制系统确定为两级计算机监控系统:PC计算机为管理级,可编程控制器PL C为控制级。系统组成如图3所示:系统由上位机PC、PLC、驱动电路、执行元件以及传感器 、外部控制信号等几部分组成。
2 PLC编程口与上位机的通信协议基础
带有异步通信适配器的PC机与PLC只有满足以下几个条件,才能互联通信:
2.1 PC与PLC的异步通信接口采用的总线标准一致,否则要通过“总线标准变换单元”变换 后才能互联。在机械手的控制系统中,PC机与FX系列PLC不能直接连接,要通过FX-232AW单 元进行RS232C/RS-422的变换,即上位机与可编程控制器是通过RS232/422编程电缆进行连接 通信的。
2.2 双方的初始化,使波特率、数据位数、停止位、奇偶校验都相同。FX系列PLC采用异步 格式,由1位起始位、7位数据位、1位奇偶校验位以及1位停止位组成,波特率为9600bps, 字符为ASCII码。
2.3 严格按照PLC通信协议的规定及帧格式编写PC机的通信程序。FX系列PLC有4个通信命令 ,它们是读命令(0)、写命令(1)、强制通命令(7)、强制断命令(8)。同时FX系列PL C采用面向字符的传输规程,用到5个通信控制字符:
ENQ——计算机发出请求(05H)
ACK——PLC对ENQ的确认回答(06H)
NAK——PLC对ENQ的否认回答(15H)
STX——信息帧开始标记(02H)
ETX——信息帧结束标记(03H)
PC机向PLC发送的报文格式如下:
3 利用VB编写通信程序
利用VB提供的定时器控件和MSComm通讯控件,可以很方便地编制面向对象的应用程序,命令 传递、数据交换、图形显示在定时器控件和通讯控件中完成。
使用MSComm通讯控件的第一步是建立与串行口的连接。通过设置CommPort , PortOpen和Se ttings属性来打开串行端口。
CommPort属性:设置或返回通讯端口号。注意:每个使用的MSComm控件对应着一个串行端口 。如果应用程序要访问多个串行端口,例如应用程序需要和多个下位PLC通讯,必须使用多 个使用MSComm控件。
Settings属性:以字符串的形式设置或返回串行通讯协议。该属性值由4个设置值组成,有如 下的形式:“BBBB, P, D, S”, BBBB为波特率,P为奇偶校验,D为数据位数,S为停止 位 数。在实现上位机和PLC的通讯中,Settings属性值的设置应该根据下位机PLC的D8120单元 的值来设定。Fx系列的标准通讯参数为9600,E,7,1
PortOpen属性:设置并返回通讯端口的状态。将PorlOpen属性设置为True打开端口,将Port Open属性设置为False关闭端口。注意:打开端口建立连接之前,必须先用CommPort, Sett ings属性正确指定端口号(必须是物理或逻辑存在的端口)和通讯协议,一旦打开端口后, 不可以随便更改CommPort , Settings属性的设置,如果在程序运行中必须更改这两项属性 ,应该先关闭端口,改变设置值之后,再重新打开端口。
端口打开后,就创建了空的接收和发送缓冲区,端口关闭缓冲区被清零。MSComm控件提供了 一系列的属性来管理这些缓冲区。
1nBufferSize和OutBufferSize属性:分配接收和发送缓冲区内存的大小。
InBufferCount和OutBuffeiCount属性:分别获得接缓冲区和发送缓冲区中字节的数目。在程 序执行过程中,将这两个属性的值设置为零,即可清空接收或发送缓冲区。
Rthreshold和Sthreshold属性:设定OnComm事件发生前,接收或发送缓冲区中可以存放的字 节数。将这两个属性值设置为零,可以抑制相应的OnComm事件发生。
bbbbb属性:获取输入缓冲区中的数据,并将保存在输人缓冲区的数据删除。
Output属性:向发送缓冲区写人数据。
bbbbbLen属性:设置并返回bbbbb属性从接收缓冲区读取的字符数。如果把bbbbb属性设置为 零,在使用bbbbb属性时,MSComm控件将读取接收缓冲区的所有内容。
通信口初始化程序举例如下:
Private Sub bbbb_Load() 进行通讯端口和初始化设置。
MSComm1.CommPort=1
MSComm1.Settings=“9600,e,7,1”端口设置:波特率为9600bit/s、偶校验、7位数据 位、1位停止位。
MSComm1.bbbbbMode=combbbbbModeText '文本字符串接收方式
MSComm1.InBufferSize=1024 '输入数据接收缓冲区长度
MSComm1.OutBufferSize=512 '输出数据缓冲区长度
MSComm1.RThreshold=0 '每接受到字符就产生接受中断
MSComm1.SThreshold=0 '禁止发送中断,进行无条件发送
If MSComm1.PortOpen=False Then
MSComm1.PortOpen=True '打开串行通信接口COM1
End If
End Sub
4 机械手监控软件的实现
利用计算机语言VB编写的机械手监控程序主要分为以下几部分:登陆及选择控制方式画面、 手动控制界面和自动控制界面。手动控制界面与自动控制界面如图4所示。
上位计算机主要完成运动命令的生成,在获取机械手传感器信息的基础上,完成机械手动作 在计算机屏幕上的实时显示。在机械手出现故障时,允许通过手动控制界面的按钮来远程控 制机械手动作。下位机PLC完成对电磁阀的控制从而驱动气动执行元件。
手动控制界面主要由状态显示区、按钮控制区、位置显示区、时间显示区以及各种交互控制 按钮组成。如图4(a)所示。按钮控制区的按钮通过用户程序和PLC与各电磁阀的线圈相连 ,实现远程控制气缸动作。每个气缸控制按钮的多少是与电磁阀的线圈数相对应的,如果是 三位五通阀则有三个按钮,二位五通阀有两个按钮。
自动循环控制界面主要由状态显示区、按钮控制区、位置显示区、时间显示区、报警区以及 日志报告区等。如图4(b)所示。匣置显示区的各状态显示是通过PC与PLC实时通信实现的 。
4.1 控制命令的发送:手动控制界面与自动循环控制界面中控制命令都是通过按钮控制区 的按钮发送出去的,在发送控制命令之前,必须先形成控制命令帧。通常,按钮对PLC的控 制是对中间辅助继电器的控制,是软件对PLC内部写命令过程,该过程是通过WriteToPLC() 函数实现的,其程序如下:
Public Sub WriteToPLC()
Dim DUMMY As bbbbbb
If MSComm1.PortOpen=False Then
MSComm1.PortOpen=True ''''''打开通信端口Comm1
End If
MSComm1.bbbbbLen=0 '''''初始化通信端口Comm1
MSComm1.Output=MWRITE)nCmdCounter) '''''通信端口Comm1写出数据包
End Sub
控制界面中的所有的写命令又是通过数组MWRITE()来实现的。其元素包括举例如下:
MWRITE(1)=Chr$(2)+“1”+“0111011”+Chr$(3)+“89” '''手爪夹持M136置1
MWRITE(2)=Chr$(2)+“1”+“0111010”+Chr$(3)+“88” '''''手爪松开M136置 0
4.2 定时读取机械手状态信息:在状态显示区内,显示的是手爪气缸、手臂气缸、升降气 缸、扭转气缸和手腕气缸的电磁阀的工作状态。当按钮控制区的按钮被按下时,状态显示区 的状态指示灯将被点亮,表示PLC的某个对应的输出端子正在工作。该信号是通过与PLC进行 的实时数据交换得到的,是PLC的端子的实时状态。同样地,在位置显示区,显示的是机械 手运动气缸的活塞杆位置状态,是否到达左右极限。当活塞杆到达极限位置,相应的位置显 示区的极限报警灯将被点亮,表示PLC的某个对应的输入端子正在工作。该信号也是通过与P LC进行的实时数据交换得到的,是PLC的端子的实时状态。软件对PLC各个元器件状态的获取 是通过读命令和软件的定时器控件Timer()来实现的。读命令是通过函数ReadFromPLC()实 现的。其程序为:
Public Sub ReadFromPLC()
Dim DUMMY As bbbbbb
''''向计算机发送读取命令''''''''''''
If MSComm1.PortOpen=False Then
MSComm1.PortOpen=True
End If
''读取D数据寄存器的数据''''''
MSComm1.bbbbbLen=0
MSComm1.Output=ReadCmd(nCounter) '''''''从MSComm1.Output发送数组ReadCmd(20) 中的字符串
Do
DUMMY=DoEvents()
Loop Until MSComm1.InBufferCount >=6
ReturnData(nCounter)=MSComm1.bbbbb
将MSComm1.bbbbb接收到的信号存放在数组ReturnData()中,然后根据接收到的数据分配给 用户界面中的各种状态显示。
手控界面中的所有的读命令又是通过数组ReadCmd()来实现的。其元素包括举例如下:
ReadCmd(0)=Chr$(2)+“0”+“100001”+Chr$(3)+“55” '''读取D0数据
5 结束语
通过机械手监控系统的具体程序,系统地阐述了VB环境下的PC与PLC编程口通信应用程序的 设计方法。系统运行表明,用PLC编程口与VB通信控件编写的实时通讯程序可靠、稳定,很 好地满足了机械手实时监控系统的应用要求。