产品描述
6ES7211-0BA23-0XB0详细
引言
西门子工控产品在我国有较高的市场占有率,它的通信及网络产品有着引导世界工控技术潮流的作用,研究西门子工控产品及通信技术的实际应用问题有着广泛普遍的重要意义。本文通过对某市级公司的配送分拣系统的研究,探讨了在bbbbbbs环境下,用Delphi开发的数据库应用软件与西门子S7-300之间通信的实现问题。该配送分拣系统计算机部分结构如图1所示。
该系统管理计算机接收信息局域网发送来的各条送货线路当天的访销信息数据,在此基础上管理计算机建立起以送货线路为单位的配方数据库,将配方数据分批次连续地下传给PLC。PLC 根据下传的配方数据对系统控制使其连续分拣和收集,同时系统工作状态及工作数据通过PROFIBUS 现场总线在两个触摸屏TP27-10得到动态显示,后在收集工位自动得到一箱对应一个销售网点的用户配料。为了提高调系统试效率,我们在DELPHI和Microsoft Access数据库平台上编写了用于PLC控制程序的调试软件。
从上看出该系统能否研制成功要解决的问题是:西门子S7-300系列PLC通讯协议不公开,管理计算机和调试计算机上三方软件编制的程序如何实现PC机与西门子S7-300系列PLC信息交换?通过技术调研和实际调试,我们成功实现了在VB、DELPHI程序开发平台上开发的管理程序及调试程序与S7-300系列PLC通信,顺利完成了系统研制任务。限于篇幅,本文以调试软件的通信实现方法来讨论三方应用软件与西门子S7-300 PLC的通信问题。
2调试软件设计
根据PLC控制程序的调试要求,该调试软件使用DELPHI的数据库技术把事先设计的60个配方数据写入数据库,根据调试需要也可通过人机界面对数据库中的数据进行任意修改,当执行“下传数据”命令时把数据库中的数据字段进行一定数据处理后通过调用PRODAVE S7软件包写入PLC中对应的DB(DATA BLOCKS)块,其中一条记录对应一个DB块,每条记录的一个字段对应该DB块中的一个字。该调试软件也可按一定顺序读PLC中各DB块中的字,并把读取的数据经过处理后写入数据库,以供调试人员检查写入数据的正确性。PC机与PLC CPU318-2DP MPI口之间的数据通信是通过PC/MPI适配器硬件连接实现的。
3数据通信
3.1 通信软件
实现PC机与PLC之间的数据通信是一个棘手的问题。西门子公司的PRODAVE S7软件包的动态链接库(DLL)提供了大量的基于bbbbbbs NT,bbbbbbs95/98,bbbbbbs3.11或MS-DOS的函数,这样就使用户解决PLC与PC之间的数据交换和数据处理问题变为可能。
3.2 通信函数
在DELPHI的bbbbbb Pascal语言中,要访问动态链接库DLL(Dynamic bbbb Library)中的例程有两种方式。一种是静态引入方式;另一种是动态引入方式。
本软件使用静态引入方式,即在单元的Interface部分用External指示字列出要从DLL中引入的例程。如果要引入的例程比较多,就可以用一个专门的单元来集中声明要引入的例程。
PLC控制程序调试软件用到的PRODAVE函数主要有:
(1)load_tool PC机与PLC系统初始化链接;
(2)unload_tool 断开PC机与PLC系统链接;
(3)db_read 从PLC的DB块中读数据字;
(4)db_write 向PLC的DB块中写数据字。
3.3 通信程序的实现
在该调试软件中用一个专门的单元集中声明要引入的PRODAVE S7动态链接库的例程,然后在程序中在引用这个单元,即把引入单元“prodave”加到程序的Uses子句。该引入单元的代码如下:
unit prodave;
interface
type
Tadr_table_type=record
adr:byte; segmentid:byte;
slotno:byte; rackno:byte;
end;
function load_tool(no:Byte;name:PChar;adr_table_type:PChar):Integer;stdcall;external "w95_s7.dll";
function unload_tool:Integer;stdcall;external "w95_s7.dll";
function db_read(blockno:integer;no:integer;amount:pointer;buffer:pointer):integer;stdcall;external "w95_s7.dll";
function db_write(blockno:integer;no:integer;amount:pointer;buffer:pointer):integer;stdcall;external "w95_s7.dll";
……
implementation
end.
在调试软件的主程序中调用该引入单元前,须将软件包prodave.pas文件加到工程中。这样才能在主程序中调用w95_s7.dll中的函数,具体程序调用实现如下:
implementation
uses prodave;
{$R *.DFM}
……
begin
plc_adr_table[0> := 2; {address} plc_adr_table[1> := 0; {segment id}
plc_adr_table[2> := 2; {slotno} plc_adr_table[3> := 0; {rackno} plc_adr_table[4> := 0;
res := Load_tool(1,"S7ONLINE",@plc_adr_table); //初始化链接
函数load_tool的作用在于初始化适配器,初始化参数的地址以及选定的界面。程序在读写PLC数据前应该用该函数初始化PC机与PLC的连接。
此函数传送以下3个参数:
no:此参数设置可连接的数量,连接个数可以达到16个。此例中,no=1;
device:用户驱动设备名称,如MPI驱动器的设备名为“S7ONLINE”;
plc_adr_table:连接部分的地址列表指针。
如果没有错误,此函数返回0,否则返回错误信息的相应十六进制代码。下面给出数据下载程序:
begin
error:=false;
table1.first; //定位到配方表的记录
for i:=2 to 61 do //把60个配方数据写到DB2-DB61
begin
for j:=1 to 42 do //把42个库位的自动配烟数的值高低字节调换位置存入buffer数组
begin
c0:=table1.fields.fields[j>.asinteger;
clow:=c0 shl 8;
chigh:=c0 shr 8;
cdate:=clow xor chigh;
buffer[j-1>:=cdate;
end;
anzahl:=42;
dbno:=i; //DB块
dwno:=1; //1个数据字,即DW2
res := db_write(dbno,dwno,@anzahl,@buffer);
函数db_write()的作用是从PC机的数组变量“buffer”中给PLC的“dbno”个数据块中从“dwno”个数据字开始写“anzahl” 个数据字。如果数据块不存在,将返回错误信息的代码。如果要写的数据字数目的长度过了数据块的长度,要写的数据字的长度将得到正,同时此函数还返回303H的错误信息。
需要特别注意的是:数据在缓冲区存放的顺序是从高字节到低字节。而bbbbbb Pascal语言中,变量类型为word的变量,它的数据存放顺序是从低字节到高字节。因而,在对所读取的数据进行操作时或给PLC数据块中写数据字时要进行相应的处理。
结束程序之前,调用适配器函数unload_tool断开PC机与PLC的连接。否则,将引起PC机死机,或者系统紊乱。
由于数据上传与数据下载的实现方法相近,限于篇幅,数据上传实现的方法本文不予介绍,请读者参考数据下载实现方法部分。
4结束语
运用DELPHI开发环境编写的PLC控制程序调试软件,具有界面友好、人机交互功能方便、数据库功能强大灵活的优点,具有一定的通用性和实用性。而且通过调用PRODAVE S7软件包的动态链接库实现PC机对PLC CPU318-2DP数据的读写操作,不但数率快,而且正确。在对PLC控制系统的调试过程中,可以大大缩短调试周期,提高工作效率。此通信技术的实现对西门子工控产品的应用及PROFIBUS现场总线的推广应用有着广泛普遍的重要意义。
PLC程序设计一般分为以下几个步骤:
1. 程序设计前的准备工作
程序设计前的准备工作就是要了解控制系统的全部功能、规模、控制方式、输入/输出信号的种类和数量、是否有特殊功能的接口、与其它设备的关系、通信的内容与方式等,从而对整个控制系统建立一个整体的概念。接着进一步熟悉被控对象,可把控制对象和控制功能按照响应要求、信号用途或控制区域分类,确定检测设备和控制设备的物理位置,了解每一个检测信号和控制信号的形式、功能、规模及之间的关系。
2. 设计程序框图
根据软件设计规格书的总体要求和控制系统的具体情况,确定应用程序的基本结构、按程序设计标准绘制出程序结构框图,然后再根据工艺要求,绘出各功能单元的功能流程图。
3. 编写程序
根据设计出的框图逐条地编写控制程序。编写过程中要及时给程序加注释。
4. 程序调试
调试时先从各功能单元入手,设定输入信号,观察输出信号的变化情况。各功能单元调试完成后,再调试全部程序,调试各部分的接口情况,直到满意为止。程序调试可以在实验室进行,也可以在现场进行。如果在现场进行测试,需将可编程控制器系统与现场信号隔离,可以切断输入/输出模板的外部电源,以免引起机械设备动作。程序调试过程中先发现错误,后进行纠错。基本原则是“集中发现错误,集中纠正错误”。
5. 编写程序说明书
在说明书中通常对程序的控制要求、程序的结构、流程图等给以必要的说明,并且给出程序的安装操作使用步骤等
它在执行扫描操作时对内部元件X、Y、M、S、T、C的信号进行计数。当计数次数达到计数器的设定值时,计数器触点动作,用于控制系统完成相应的功能。低速计数器不但可以记录来自输入端子(输入继电器)的开关信号,而且可以记录PLC内部其他元件的触点信号。
内部计数器按其被记录开关量的频率分类,可分为低速计数器和高速计数器。
1) 低速计数器
有四类:
16位通用增计数器:C0∽C99(100点);设定值区间为K1∽K32767
16位停电保持增计数器:C100∽C199(100点);设定区间为K1∽K32767
32位通用增/减双向计数器:C200∽C219(20点);设定值区间为K-2147483648∽+214783648
32位停电保持增/减双向计数器:C220∽C234(15点);设定值区间为K-2147483648∽+214783648
2) 内部高速计数器(C)
高速计数器只能刻录约定的经输入端子(输入继电器)送入的外部信号,而且这个信号的频率可以高达几千赫。还可以从输入端子直接进行复位的操作。
高速计数器编号为C235∽C255共,均为32位增/减双向计数器,其增计数还是减计数由的特殊辅助继电器决定或由的输入端子决定,其设定区间为K-2147483648∽+214783648。
高速计数器一般按四类分别命名:
1相无启动/复位端子:C235∽C240;
1相双向: C246∽C250;
2相A-B相型:C251∽C255;
高速计数器与输入端子(输入继电器)之间的约定如下表:
注:U-增计数输入;D-减计数输入;A-A相输入;B-B相输入;R-复位输入;S-启动输入。
高速计数器是按中断原则运行的,因而它立于扫描周期,选定计数器的线圈应以连续方式以表示这个计数器及其有关输入连续有效,其他高速处理不能再用其输入端子。
(1)1相型高速计数器C235∽C240
C235∽C240 无启动/复位端 设定值范围
-2147483648∽+214783648
C241∽C245 有启动/复位端
说明:
n 作增计数器时,当计数值达到设定值时,触点动作并保持;作减计数时,到达计数值则复位。
n 1相计数器的计数方向取决于其对应标志M8□□□,□□□为对应计数器号C235∽C245。
(2)1相双向高速计数器C246∽C250
1相双向计数器具有一个输入端用于增计数,另一个输入端用于减计数。需增还是需减要从不同输入端上安排,而不是再运用特殊辅助继电器约定。某些计数器还具有复位和启动输入。
(3)2相A-B相型高速计数器:C251∽C255
2相2输入(C251∽C255,1个或2个,电池后备)多可有2个2相32位二进制增/减计数器。它是采用中断方式计数,与扫描周期无关。这些计数器还有一些立于逻辑操作的执行比较和输出操作的应用指令。选定计数器元件后,对应的启动、复位及输入信号就能使用。A相和B相信号决定了计数器是增计数还是减计数。
研制机器人的初目的是为了帮助人们摆脱繁重而简单的重复劳动,替代人到有辐射等危险环境中进行作业,因此机器人早在汽车制造业和核工业领域得以应用。随着机器人技术的不断发展,工业领域的焊接、喷漆、搬运、装配等场合,已经开始大量使用机器人。工业机器都用于简单、重复、繁重的工作,如上、下料,搬运等,能够按照预定的顺序、条件、位置逐步重复执行给定的作业任务,从而节省了劳动力,提高了工作效率。
可编程控制器(PLC)是一种数字运算操作的电子系统,专为在工业环境下应用而设计。由于PLC具有功能强大、性高、体积小巧、可扩展各种智能模块等特点,使其在自动化领域中的应用日益普及。本文采用FX系列PLC控制图书馆作业型机器人,使其按编制的程序自动完成图书上架工作。
1 系统原理及结构
1.1 系统原理
图书馆作业型机器人工作系统结构示意图如图1所示。机器人机身长度l1与书架宽度l2相等。机身部装有图书存储栏和与之相平行的钢轨,机械手安装在钢轨上并可沿X方向在钢轨上移动。机械手端安装一扫描装置,用于读取图书信息,以配合机械手执行图书分类上架任务。机器人机身部装有接近传感器,主要用于感应机器人和外部物体的接近程度,使机器人可通过紧急制动来避免与书架、墙壁以及意外障碍物的碰撞。
图1 机器人结构示意图
当PLC接收到开始信号时,机器人行驶至位置A后停止,机械手绕Z轴沿顺时针方向旋转180°至垂直正对图书存储栏,开始从图书存储栏中寻找A1类图书。这时,机械手在钢轨上沿X轴正方向朝钢轨末端移动,端扫描装置同时扫描图书存储栏中待上架图书的条形码,直至扫描到A1类图书停止,机械手伸出手臂将之取出,手爪夹紧书后手臂缩回,接着机械手绕Z轴沿逆时针方向旋转180°至垂直正对书架A1栏,然后沿X轴反方向朝钢轨移动,端扫描装置同时扫描书架A1栏中放置的图书的条形码,直至运动至五条形码信息处(即书架A1栏中未放置图书的空隙处)停止。机械手伸出手臂将图书放人A1栏中,然后将手臂缩回,完成一本图书的上架任务。由于图书存储栏中可能还存在A1类图书,这就需要继续寻找A1类图书。这时,机械手又运动至钢轨限位处(即初始位置),并绕Z轴顺时针方向旋转180°至垂直正对图书存储栏,又开始重复循环进行上述动作(扫描目标图书刁取书呻上架),直至机械手移动至钢轨末端,扫描完图书存储栏中后一本图书,才说明已寻找完图书存储栏中所有A1类图书。若后一本书是A1类图书,机械手则继续按上述步骤完成上架任务,然后移动至钢轨,准备开始A2类图书的上架工作;若不是A1类图书,机械手则立即移动至钢轨,准备开始A2类图书的上架工作。机器人将A2、A3类图书上架的工作原理与上述原理基本相似,只是机械手将图书上架时需伸高一定高度至A2、A3栏。就这样,机器人在PLC控制下顺序完成了书架A中图书的上架工作。接着,机器人又行驶至位置B后停止,的上架工作。
1.2 系统结构
1.2.1 机械手
本作业型机器人中机械手具有四个自由度,即水平方向的伸、缩;竖直方向的升、降;绕竖直轴Z轴的顺时针方向旋转及逆时针方向旋转;沿X方向在钢轨上的移动。另外,其末端安装了执行装置——手爪,可完成抓、放动作。
以上动作均采用气动方式驱动。即用4个二位五通电磁阀门(每个阀门有两个线圈,对应两个相反动作)分别控制4个气缸,使机器人完成伸、缩、上、下、旋转以及手爪抓放动作。其中旋动用一组齿轮齿条,使气缸的直线运动转化为旋动;手爪则用一连杆机构使气缸的伸缩运动转化为手爪的抓放运动。
机械手在钢轨上的移动机构采用4个轮子,如图2所示,由伺服电机通过同步轮、同步带传至主动轮子。
此主题相关图片如下:
图2 机械手移动机构示意图
1.2.2 图书存储栏
机器人在开始作业前,工作人员将待上架的图书放人图书存储栏中。图书存储栏固定于机器人机身部,随着机器人移动。为了便于机械手从栏中将所需图书取出,须将每本图书间隔开并竖立放置。于是,我们设计了如图3所示的图书存储栏。分别用两块挡板隔成了一个个书槽,将待上架的图书每本分别放置于书槽中,这样使每本图书不会倒下,而且彼此间隔了一定距离,使机械手在扫描到目标图书后,能方便、准确地将之取出。
此主题相关图片如下:
图3 图书存储栏
1.2.3 机器人导引装置
本设计中采用了电磁引导方式,原理如图4所示,导引图书馆作业型机器人沿书架旁边直线运动。该方法在地板上开出数厘米深的沟,埋人导线,通以频率为3~10kHz的电流。安装在机器人机身内的敏感线圈,能感知机体与导线间的偏移,从而引导机器人沿导线正确行走。
此主题相关图片如下:
图4 引导装置原理图
2 PLC硬件接线和软件编程
本设计中机器人控制需大量的输入点和输出点。因此,我们选用日本三菱公司生产的P1-60MR型可编程序控制器,具有36个输入点,24个输出点,足以满足本设计的要求。
为了详细地介绍PLC控制图书馆作业型机器人工作原理,我们在此列出了机器人将A1、A2类图书自动上架的程序段,并特别针对机器人将A1类图书上架的程序段进行了详细的说明。图5是PLC的梯形图。
此主题相关图片如下:
图5 PLC的梯形图
PLC控制机器人将A1、A2类图书上架的程序框图如图6所示。在此,还写出了相应的梯形图程序。
程序说明如下:
(1)当机器人的机械手位于钢轨限位处,并垂直正对书架时,为机器人初始位置。此时,钢轨限位开关SQ2,机械手绕Z轴逆时针方向旋转180°限位开关SQ5被压,x402、x405触点接通按下起动按钮SB1时,X400触点接通,Y430线圈接通,机器人前进。
(2)当机器人前进至位置A时,压下限位开关SQ1,x401触点断开Y430线圈,机器人停止前进,正好停在书架A的(机器人机身长度与书架宽度相等)。
(3)机械手绕Z轴J顷时针方向旋转至触到限位开关SQ4,此时x404触点断开Y433线圈,机械手停止旋转。此时,机械手已旋转180°至垂直正对图书存储栏。
(4)x404触
点接通线圈Y431,机械手开始在钢轨上沿X轴正方向朝后端移动,寻找A1类图书。
此主题相关图片如下:
图6 程序框图
(5)扫描到A1类图书信息,x412触点断开Y431线圈,机械手停止移动,x412触点接通移位寄存器数据输入端,使M100置“1”,Y435线圈接通,机械手手臂伸出。
(6)手臂伸至限位开关SQ6时,X406与M100触点接通移位寄存器移位信号输入端,产生移位信号,M100的“1”态移至M101,M101接通线圈M200,M200触点接通Y531线圈,手爪夹紧书。同时定时器T450开始计时。M100置“0”,Y435断开,手臂停止伸出。
(7)T450延时到,T450与M101触点接通,产生移位信号,M102为“1”,M100~M101置“0”,M102触点接通Y436线圈,机械手手臂缩回,因为使用S指令,所以M200线圈保持接通,Y531也保持接通,使手爪继续把书加紧。
(8)当手臂缩至限位开关SQ7时,x407与M102触点接通产生移位信号,M103为“l”,M100~M102置“0”。M102断开Y436线圈,停止缩回,同时M103接通Y434线圈,机械手开始绕Z轴逆时针方向旋转。
(9)机械手旋转至限位开关SQ5时,X405与M103触点接通移位信号,M104为“1”,M100-M103置“0”。M103触点断开Y434线圈,停止旋转。此时机械手已逆时针方向旋转180*,正好垂直正对书架。同时,M104接通线圈Y432,机械手开始在钢轨上沿X轴反方向朝移动。
(10)移动时,机械手端的扫描装置开始扫描
图书条形码信息。当没有条形码信息时,X500与
M104触点接通移位信号,M105为“1”,M100~M104置“0”。M104触点断开Y435线圈,机械手停止移动。同时,M105触点接通Y435线圈,机械手手臂伸出。
(11)手臂伸至限位开关SQ6时,X406与M105触点接通移位信号,M106为“1”,M100~M105置“0”,M105触点断开Y435线圈,手臂停止伸出。同时M106触点接通M200线圈,R指令使M200复位,M200触点断开Y531线圈,手爪松开,放置图书于书栏A1中。同时,T451开始计时。
(12)T451延时到后,T451与M106触点接通移位信号,M107为“1”,M100~M106置“0”,Y436线圈接通,机械手手臂缩回。
(13)手臂缩至限位开关SQ7时,X407与M107触点接通移位信号,M110为“广,M100-M107置“0”,M107断开Y436线圈,手臂停止缩回。同时,M110接通Y432线圈,机械手开始在钢轨上沿轴反方向移动。
(14)机械手移动至限位开关SQ2时,X402与M110触点接通移位信号,M111为“1”,M100~M110置“0”,M110触点断开Y432线圈,机械手停止移动。同时,M111触点接通移位寄存器复位输入端,寄存器全部复位。此时,机器人处于初始位置状态,M111触点接通Y433线圈,机械手又开始绕Z轴顺时针方向旋转,继续寻找A1类图书,反复执行以上步骤。
以上(1)~(14)步骤的程序说明是针对A至B
程序段展开的。若机械手在钢轨上移动至末端限位开关处,说明已扫描完图书存储栏中所有待上架的图书,即已将A1类图书寻找完毕。这时,程序直接跳转至B点后,机器人开始执行A2类图书查找并自动上架任务。
当按下停止按钮SB2时,X501触点作用,使机器人立即停止动作。
3 结束语
本系统采用FX系列PLC控制图书馆作业型机器人,使其按编制的程序自动完成图书上架工作,经实际试运行,表明各项功能均已满足设计要求,且控制系统的性高、故障少,结构部分操作方便,,从而节省了劳动力,提高了工作效率
产品推荐