第一篇:在DELPHI中实现与AB PLC的通讯
在DELPHI中实现与AB PLC的通讯
【字体:大 中 小】 引言
美国罗克韦尔自动化公司的Allen-Bradley系列PLC是一个著名的可编程控制器产品,其产品体系基本上涵盖了工业控制产品的各个领域,并以其先进性、可靠性在各行各业的自动控制领域中得到了广泛的应用。在应用AB PLC时,上位计算机监控软件的开发我们可以使用罗克维尔自动化公司的RSView32或其他公司的组态软件,也可以自己用开发工具来开发。
作为一个优秀的RAD(快速应用开发)开发工具,Delphi在广大开发设计人员中也得到了广泛的应用。它不仅开创了“构件(Component)”时代,而且还拥有非常出色的编译器,极大地提高了开发人员开发程序的效率。
下面介绍在DELPHI中如何调用RSLinx的C SDK实现与AB PLC的通讯的方法。RSLinx简介与配置
罗克韦尔自动化公司的RSLinx软件是A-B PLC通用的通信配置软件(2.2以上的版本支持对以太网的网关配置),它是一个链接Allen-Bradley 网络和设备到Microsoft Windows应用程序中的完全的32位通讯软件,应用的范围包括RSLogix和RSNetWorx的设备编程、网络组态,RSView32人机界面应用程序,还有用Microsoft Office、Web页或Visual Basic开发的数据查询应用程序等。RSLinx也是一个OPC数据服务器和DDE服务器。
RSLinx目前主要有以下六个版本:RSLinx Lite、RSLinx Single Node、RSLinx OEM、RSLinx Professional、RSLinx Gateway、RSLinx SDK。在RSLinx OEM以后的4个版本均支持开发OPC应用程序或C-API客户程序,并在RSLinx SDK中包括了开发OPC应用程序或C-API客户程序的技术资料。
在与A-B PLC进行通讯之前必须连接好正确的物理连接。比如用DH+网络通讯的话,要在计算机上安装1784-PKTX通讯网卡,并正确接线。物理连接完成后在RSLinx中选择相应的通讯驱动进行配置。如果配置成功后,可在RSWho窗口内显示出配置的网络和连接的PLC。
通讯驱动配置完成后,再配置客户应用程序使用的通讯口。在RSLinx的菜单上选择CommunicationsConfigure Client Applications…,弹出配置窗口如图1所示。
在这个窗口中选择相应的通讯驱动,图1显示的是1KT:0选择了AB_DF1-1驱动。2 在DELPHI中编写通讯程序
由于RSLinx C SDK只提供了基于C/C++语言的API,这些API都储存在动态链接库DTL32.DLL中,如果要在DELPHI中调用,这就需要掌握在DELPHI中调用储存在DLL(动态链接库)中的函数的方法。
图1 如不会使用,可联系本人球球:1102956688 2.1 调用方法
(1)静态调用
静态调用就是使用一个外部声明子句显式装载使用的函数,使DLL在应用程序开始执行前即被装入。例如有一个叫MaxLib.dll的动态链接库,其中包含一个函数: Function Max(I1,I2:Integer):Integer;静态调用的引用如下:
Implementation Function Max(I1,I2:Integer):Integer;far;stdcall;external „MaxLib‟;
这种方法要在单元的interface 部分用external 指示字列出要从DLL中调用的例程。Far指令表明可以被其他段,例如其他单元调用的子例程。所有在单元接口中声明的子例程在缺省情况下都是Far类型的,其相反的指令是near。
如果external后什么也不跟,必须用{$L}编译指令预先指定一个DLL名字,如:{$L MaxLib.dll}。
但是使用静态调用方法时,程序无法在运行时间里决定DLL的调用。在DELPHI中使用DLL时,例程的标识符必须与DLL中相应输出例程的标识符完全一致(尽管DELPHI本身大小写不敏感)。(2)动态调用或隐式装入
使用Windows API函数Loadlibrary和GetprocAddress可以实现在运行时间时的动态装载DLL,并调用其中的过程。
例如: Type
TMyFunc=Function(I1,I2:Integer):Integer;Stdcall;Var MyFunc: TMyFunc;MyHandle:THandle;
MyHandle:=LoadLibrary(„MaxLib‟);
If MyHandle<=0 then
Raise Exception.Create(„动态链接库调用失败,错误代码是:‟+Inttostr(Getlasterror))
else
@MyFunc:=GetProcAddress(MyHandle,„Max‟);
if not Assigned(MyFunc)then Raise Exception.Create(„GetProcAddress调用失败,错误代码是:‟+inttostr(getlasterror))
else MaxInt:=MyFunc(200,500);Freelibrary(Myhandle);// 卸载DLL 2.2 类型转换
由于DELPHI使用的是Object Pascal语言,当转换C函数到Pascal语言相等的说明时,把C函数及其数据类型转换到正确的Pascal类型是非常重要的。
(1)数据类型转换
附表列出了部分数据类型的转换
(2)函数调用转换
在Object Pascal中,过程或函数的参数在调用时的传递顺序是自左向右的,而C函数调用则是自右向左的,因此在静态调用时必须指定Stdcall参数,强制使过程或函数的参数按自右向左调用。使用Stdcall方式,能保证不同语言写的DLL的兼容性,同时它也是WINDOWS API的约定方式。
2.3 RsLinx C SDK函数在DELPHI中的声明
根据上面DELPHI调用DLL的原则,下面用静态调用列出了部分RsLinx C SDK库中函数的调用方法。
implementation
Function DTL_INIT(id:LongInt):SmallInt;stdcall;external„dtl32.dll‟;
Function DTL_C_CONNECT(Id:LongInt;Name:PChar;NullP: Pointer):SmallInt;stdcall;external„dtl32.dll‟;
Function DTL_DISCONNECT(id:LongInt):SmallInt;stdcall;external„dtl32.dll‟;
Function DTL_C_DEFINE(var id:LongInt;DefStr:PChar): SmallInt;stdcall;external„dtl32.dll‟;
Function DTL_UNDEF(id:LongInt):SmallInt;stdcall;external„dtl32.dll‟;
Function DTL_READ_W(id:LongInt;Buf:Pointer;var stat:LongInt;DelayTime:LongInt):SmallInt;stdcall;external„dtl32.dll‟;
Function DTL_WRITE_W(id:LongInt;Buf:Pointer;
var stat:LongInt;DelayTime:LongInt):SmallInt;stdcall;external„dtl32.dll‟;
DTL_INIT函数的功能是初始化DTL通讯库,id是分配给DTL函数定义表的数目,成功返回0。
DTL_C_CONNECT函数的功能是建立一个通讯连接,成功返回0。
DTL_DISCONNECT函数的功能是断开一个通讯连接,成功返回0。
DTL_C_DEFINE函数比较重要,它定义读取或写入的数据表,DefStr是定义的数据表的字符串,如果成功函数返回0,并且把赋予此数据表的句柄放在id中,供读取或写入函数用。
DTL_UNDEF函数的功能是删除一个已定义的数据表,成功返回0。
DTL_READ_W函数的功能是从数据表中读取数据。Id是在DTL_C_DEFINE函数中定义的数据表,Buf是存放读入数据的缓冲区,stat是函数执行完写入的状态,DelayTime是以毫秒为单位的函数执行完毕的最长等待时间。
DTL_WRITE_W函数的功能是向数据表中写入数据。参数定义与DTL_READ_W函数相同,只不过这时的Buf是向定义的数据表写入数据的缓冲区。
2.4 例程
本例在DELPHI中的表单中定义了一个标签Label1,用来指示与RSLinx的通讯是否成功;定义了两个按钮,分别是读取和写入数据,数据地址是N7:0,长度是20。当按写入按钮时,程序生成20个随机数写入到PLC的N7:0中,当按读取按钮时,程序从N7:0开始读取20个整数,并在表单的列表框中显示出来。表单如图2所示。
变量定义、创建窗口、关闭窗口、读取数据、写入数据过程的源程序如下:
var Rst,i: Integer;Data:array [0..20> of SmallInt;Str,DefStr:string;Handle,IOStat:LongInt;Implementation {加入上述DTL函数} procedure TForm1.FormCreate(Sender: TObject);begin Str:=”;rst:=1;rst:=DTL_INIT(1);
if rst=0 then rst := DTL_C_CONNECT(0,PChar(Str),nil);if rst=0 then Label1.Caption:=„RSLinx连接成功‟
else Label1.Caption:=„RSLinx连接失败‟;
end;procedure TForm1.FormDestroy(Sender: TObject);begin DTL_DISCONNECT(0);
end;procedure TForm1.Btn_ReadClick(Sender: TObject);
begin DefStr:=„$N7:0,20,WORD,READ,1KT:0,001,PLC5,0‟;
if DTL_C_DEFINE(Handle, PChar(DefStr))=0 then begin rst:=DTL_READ_W(handle, @Data, IOStat, 1000);DTL_UNDEF(Handle);end;ListBox1.Clear;if rst=0 then for I:=0 to 19 do begin FmtStr(Str,„N7:%d=%d‟, [I,Data[I>>);
ListBox1.Items.Add(Str);end;end;procedure TForm1.Btn_WriteClick(Sender: TObject);begin DefStr:=„$N7:0,20,WORD,MODIFY,1KT:0,001,PLC5,0‟;
if DTL_C_DEFINE(Handle, PChar(DefStr))=0 then begin rst:=DTL_WRITE_W(handle, @Data, IOStat, 1000);DTL_UNDEF(Handle);end;end;以上程序在DELPHI5.0、6.0环境下测试通过。由于RSLinx C SDK中函数很多,在此不能一一列举,如要使用其它函数,只要按上述的方法转换即可。
第二篇:浅析多层结构及其在Delphi中的实现
浅析多层结构及其在Delphi中的实现
二层结构的退出
在传统的二层C/S结构数据库应用中,客户端的机器执行应用程序,连接到后端的数据库服务器中存取应用系统所需资料,因为应用系统的企业逻辑都编写在客户端的应用程序中,造成客户端非常臃肿,且当应用系统需求改变时,所有在客户端的应用程序都必须改变,使维护成本太
高。
Oracle
MSQL
客户端1数据库服务器Sybase等
图一2层C/S结构
1.2多层结构的概念和特点
为了解决这些问题,多层结构应用体系应运而生,即在传统的二层C/S模型中放入应用程序服务器。应用程序服务器简单地说就是一个包含企业逻辑的应用程序,开发人员以一种特定的组件形态,如MicrosoftCOM/DCOM,CORBA对象,或EnterpriseJAVABean等,封装企业逻辑的程序代码,这种经过封装,能够执行特定企业功能的对象被称为“企业对象”,把这些企业对象分发到应用程序服务器中,开发人员在开发应用程序时就可以使用这些企业对象提供的服务。
多层结构的典型是三层结构,其基本思想是把用户界面与企业逻辑分离。整体结构如图二所示。
客户端应用程序服务器远程数据库服务器
(提供用户界面)(包含企业逻辑)(Oracle,MSQL,Sybase等DBMS)
图二三层结构模型
(1)客户端应用程序。提供用户接口,主要功能是指导操作人员使用界面,输入数据,输出结果,并不具有企业逻辑,或只拥有部分不涉及企业核心的、机密的应用逻辑。这样客户端就显的很廋,称为“廋”客户。
(2)应用程序服务器。它是应用的主体,包含了企业中核心的及易变的企业逻辑(规划,运作方法,管理模型等),其功能即接受输入,处理后返回结果。
(3)远程数据库服务器。即数据库管理系统(DBMS),负责管理对数据的读写和维护。
在更复杂的多层体系结构中,“廋”客户与远程数据库服务器之间可以加入更多的中间服务器,如加入一个中间安全服务器或中间转换服务器,用于对不同平台数据进行处理。
分布式多层结构把整个应用系统的执行分成数个不同部分并且执行在不同的机器中。其中应用程序服务器作为中间层集中实现企业逻辑,协调多层之间的请求,并掌握数据集定义的全部细节和远程数据库服务器进行通信,这样客户端应用程序就重点放在显示数据和与用户交互上,客户端应用程序甚至都不需要知道数据在那儿。
具体来说,多层结构具有如下优点:
(1)在一个共享的中间层封装了企业逻辑,不同客户端应用程序可以共享同一个中层层,而不必由每个客户端应用程序单独实现企业逻辑。
(2)客户端应用程序可以做的很廋。因为很多复杂的工作由应用程序服务器代劳,客户端应用程序只需关注用户界面本身。“廋”客户端应用程序更易发布、安装、配置和维护。
(3)实现分布式数据处理。把一个应用程序分布在几个机器上运行,可以提供应用程序的性能,通过冗余配置还可以保证不会因为局部故障导致整个应用程序崩溃。
(4)有利于安全。将一些敏感数据功能部分封装在中间层,并授予不同访问权限,可以保证对数据的访问限制。
1.3多层结构使用的技术。
目前分布式多层结构使用的核心大致可以分为两种不同的工业标准,即Microsoft制定的COM/DCOM/COM 和由700多家厂商共同提倡的CORBA。因分布式结构的广泛流行,现也有愈来愈多的根据这两种分布式核心技术加以演进而产生的分布式技术,如EJB(EnterpriseJavaBean)等。
Microsoft的COM/DCOM/COM 是以Windows为中心的开发环境,CORBA是平台中立的分布式技术,CORBA能够执行于Windows,UNIX以及Linux等操作系统中。这些技术都能使开发人员在应用程序中轻易地使用企业对象所提供的服务。这两种分布式技术都在客户端机器中以一个特别的对象来仿真真正的远程应用程序服务器上的企业对象,这样客户端应用程序就可以调用在客户端机器中的仿真对象,该对象再使用特定的通讯协议来真正调用远程应用服务器上的企业对象,从而调用远程企业对象的服务,以满足客户端的要求。
2在Delphi中实现基于MIDAS的多层结构
2.1在Delphi中多层结构的实现
在Delphi中多层结构的基础是MIDAS(Multi-tierDistributedAlicationServiceSuite,多层分布式应用服务器组)技术。MIDAS是一些不同技术的集合,无论是应用程序服务器还是客户端,MIDAS技术需要DBClient.dll和MIDAS.dll的支持,这两
个动态链接库用于管理数据包,发布MIDAS应用程序时需要发布这个文件。
基于MIDAS的多层结构依然分为客户端应用程序,应用程序服务器和远程数据库服务器,如图三所示。
从图三可见,MIDAS的数据库应用程序需要一些特殊组件,这些组件共分为4类:
(1)远程数据模块。位于服务器端,作为COM服务器或CORBA服务器
让客户端应用程序访问它的接口。
数据模块IAerver接口远程数据模块
客户端应用程序应用程序服务器远程数据库服务器
图三MIDAS结构
(2)DataSetProvider组件。位于服务器端,提供IAerver接口,客户端应用程序通过
IAerve接口获得数据。
(3)连接组件。位于客户端,包括DCOMCoection,SocketCoection,CORBACoection,OLEnterpriseCoection,MIDASCoection和RemoteServer等连接组件,为客户端应用程序定位应用程序服务器和IAerve接口。
(4)ClientDataSet组件。位于客户端,访问服务器端的IAerve接口,它是从TdataSet继承下来的组件。
客户端应用程序通过IAerve接口与应用程序服务器通讯,通讯协议为DCOM,TCP/IP,HTTP,OLEnterprise和CORBA。通讯协议因客户端的MIDAS连接组件及应用程序服务器上的远程模块不同而不同。
2.1.1客户端应用程序结构
在结构上,客户端应用程序通过标准数据控制组件与用户交互,但是它是通过应用程序服务器提供的IAerve接口获得数据,也是通过IAerve接口更新数据。所谓“廋”客户即指不依赖BDE的数据集(TClientDataSet组件)构成的客户端应用程序。TClientDataSet组件是从TDataSet派生出来的客户端数据集组件,它扮演了与TTable或TQuery同样的角色,但它不需要BDE,它把通过IAerve接口获得的数据在客户端内存中建立副本,对数据进行操作。直接访问远程数据库服务器的是应用程序服务器。
远程数据模块说明
RemoteDataModule支持双重接口的自动化服务器,支持DCOM,TCP/IP或OLEnterprise协议。
MTSDataMoudle支持双重接口的自动化服务器,创建的应用程序服务器是动态链接库,支持DCOM,TCP/IP或OLEnterpris协议。
CORBADataMouduleCORBA服务器,支持CORBA协议
在客户端,MIDAS连接组件非常重要,不同连接组件使用不同的通讯协议,如表一所示。
连接组件通讯协议
DCOMCoectioDCOM
SocketCoectioTCP/IP
WebCoectioHTTP
OLEnterpriseOLEnterprise
CORBACoectioCORBA
表一MIDAS连接方式表二支持MIDAS的数据模块
2.1.2应用程序服务器
应用程序服务器的关键部件是远程数据模块,在远程数据模块上,TTable,TQuery等BDE数据集组件通过BDE与远程数据库服务器连接访问数据库,DataSetProvider组件输出IAerver接口,DataSetProvider组件通过DataSet属性与数据集组件相连,这样客户端通过IAerver接口就可以访问数据。
Delphi支持三种类型的远程数据模块,如表二示。
2.2用MIDAS创建多层结构数据库应用程序实例
建立多层结构应用系统,必须先建立应用程序服务器,并运行注册之,再建立客户端。下面就以笔者创建的一个三层结构为例来介绍用Delphi实现三层结构的步骤。(假设在应用程序服务器上已设好BDE连接,连到远程数据库服务器。)
2.2.1建立应用程序服务器。(在应用程序服务器上建立)
(1)使用File菜单下的NewAlication建立一个新应用程序。
(2)创建远程模块。使用File菜单下的New打开NewItems对话框,在Multitier选项下,双击RemoteDataModule,设置Claame为rdm,Itancing及ThreadingModule属性取默认值。
(3)在该远程模块上放一个Query1(Tqueyr组件),DatabaseName属性中指定为要访问的数据库,如“出版社”。在该远程模块上再增加一个DataSetProvider1(TDataSetProvider组件),DataSet属性设为Query1,Optio属性中令poAlloCommandtext为true。(设为true,则客户端应用程序中TClientDataSet的属性commandtext中的SQL语句就可以通过IAerver接口传递。)
至此,应用程序服务器已创建完毕,运行该应用程序服务器在系统中注册它,在应用程序服务器上运行ScktSrvr.exe文件,这样今后客户端程序就可以调用该应用程序服务器。
2.2.2创建客户端应用程序。(在客户端机器上创建)
(1)建立数据模块。使用File菜单下的NewAlication建立一个新应用程序。在NewItem中双击DataModule建立一个数据模块(命名为dm),在该模块上放一个连接组件SocketCoection1(TsocketCoection组件),其IP属性中指定应用程序服务器的IP地址,在Port属性中取默认值211,在ServerName属性中设置应用程序服务器(在这里,应用程序服务器就是上面创建的名为rdm的应用程序服务器。),这样就可以定位应用程序服务器和IAerver接口。在dm数据模块上再增加一个ClientDataSet1(TClientDataSet组件),其RemoteServer属性设为SocketCoection1,ProviderName为DataSetProvider1。保存该unit为dm。
(2)创建用户界面。使用File菜单下的NewForm新建一个unit,在该unit中引用上面建立的数据模块单元dm。在用户界面Form上添加DataSource1(TdataSource组件),其DataSet
属性设为dm.ClientDataSet1,即上面数据模块中的客户端数据集组件。添加一个DBGrid1(TDBGrid组件),DataSource属性设为DataSource1。添加一个Btton1组件,caption属性为“查询”,其click事件中程序代码为:
procedureTForm1.Button1click(sender:Tobject);
begin
withdm.ClientDataSet1do
begin
close;
commandtext:=’select*from书’;
ope
end;
end;
至此该三层结构已创建完毕,保存运行客户端应用程序,点击查询按钮(即Btton1按钮),则客户端应用程序将激活应用服务器程序,通过IAerver接口把dm.ClientDataSet1中的SQL语句传到Query1,Query1通过BDE访问数据库服务器,查到的数据再通过IAerver接口传给dm.ClientDataSet1,并在DBGrid1上显示出来。
3结束语
多层结构是因网络发展的需要而出现的产物,运用面向对象技术,分离用户界面和企业逻辑,解决了两层结构的维护成本高,客户端臃肿等弊端,且改善了延展性。在Delphi中采用MIDAS技术,运用COM/DCOM/COM 或CORBA标准,为多层结构的开发提供了强大功能,增加了开发人员的生产力。
第三篇: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名同学错过报名的时间。这次事使我懂得了做事要脚踏实地,不能马虎。
在这次的交流会中,我希望大家可以从中吸取一些好的经验,带动本班级的学习风气,同时也相信大家在大学毕业后找到好的工作。谢谢大家!
第四篇:在WinCC中实现串行通讯的两种方法
在WinCC中实现串行通讯的两种方法
0 引言
WinCC即Windows Ccontrol Center(视窗控制中心),是一个功能强大的全面开放的上位机监控系统,既可以用于小规模简单的过程监控,也可以用于复杂的工控领域[1]。
WinCC提供了较大的用户编程空间。WinCC提供内置的语言脚本,可以方便地控制每个程序对象。通过OLE,其他应用程序可集成到过程画面上,并与WinCC交换相关数据。采用面向工业的ActiveX控件,用户可以使用已完成的控件来实现复杂的管理与控制功能。基于系统稳定性的考
虑,WinCC提供的这些功能多数还是受限的。WinCC提供硬件驱动的形式和硬件打交道,但是在实际的工程应用中,往往会用到许多WinCC没有 提供驱动的硬件,用户必须自己写程序来控制这些硬件,还需要编写程序控制实时数据的归档与处理。在WinCC中并没有集成其他公司的智能 仪表的串行通讯程序,因此需要开发新的串行通讯程序。本文介绍在WinCC中实现串行通讯的两种方法。1 间接通讯
自动控制系统中,上位机监控部分主要是用于动态流程画面监视、报警报表输出、趋势图分析等。在这个系统中,利用WinCC对整个上位机系
统进行组态设计,系统在正常工作时,上位机始终处于WinCC的运行环境中。WinCC提供了OLE,DDE,ActiveX,OPC服务器和客户机等接口或 控件,可以很方便地与其他应用程序交换数据。由于计算机从串行接口接收的数据要与上位机中的WinCC建立连接,因而采用二进制文件形式
作为中间桥梁,即将接收的数据按其数据格式存入二进制文件,然后在WinCC中从二进制文件中提取数据[5]。该方案可分为两个阶段:
首先,使用VB语言编写从串口中取数据的可执行程序,采用通讯控件MSComm实现。通讯实现程序如图1所示。
然后,在WinCC中,调用从串口中取数据的可执行程序,将采集的数据写入二进制文件;将数据从二进制文件中一一取出,赋给WinCC中相应 的内部变量标签。由于可执行程序采集到的数据在WinCC中需要使用,数据不方便直接传递,因而二进制文件是可执行程序与WinCC之间数据
传输的一种较为有效的方式。WinCC中读取数据的程序流程如图2所示。图1通讯程序实现流程图
图2WinCC中读取数据的程序流程图 2 直接通讯
在WinCC中的图形编辑器中直接加入ActiveX控件MSComm实现串行通讯。WinCC中带有一个Global Script(全局脚本编辑器),它为开发人员提
供一个功能强大的工具,用于生成用户的C脚本或VB脚本,生成的脚本可应用于任何地方。这里,就依据Global Script,通过对ActiveX控件
MSComm进行控制,编制一个从串口采集数据的通讯程序。上位机工作时,运行这个程序即可实现上位监控系统与串口采集数据的通讯任务。
MSComm(即Microsoft Communications Control)是Microsoft公司提供的简化Windows下串行通讯编程的ActiveX控件,它为应用程序提供了
通过串行接口收发数据的简便方法。MSComm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API函数。它在VC、VB、Delphi 等语言中均可使用[2]。MSComm控件的主要属性:
a)CommPort 设置并返回通讯端口号。
b)Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。c)PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。d)Input 从接收缓冲区返回和删除字符。e)Output 向传输缓冲区写一个字符串。
在WinCC中,VBScript是基于Visual Basic的运行脚本语言。脚本本身能访问所有WinCC图形对象的属性和方法,也能访问ActiveX控件和其他 制造商的应用程序对象模型。因而能控制对象的动态性能,方便地建立与其他制造商应用程序的连接[1]。
由于使用标准的ActiveX技术和Visual Basic,因而能够进行快速开发串行通讯。具体实现步骤如下:
1)首先需要将Mscomm32.ocx在WinCC中注册。
2)运行WinCC控制中心,建立两个内部变量,一个串口输出变量COM_OUT;另一个为串口输入变量:COM1_IN。两个变量均为16位文本变量。
3)在图形编辑器中建立相应的操作界面,在界面中加入ActiveX控件,然后选择Microsoft Communication Control 6.0选项。出现电话式的 图标,这就是我们需要的串口通讯的控件。
4)可以在画面中添加一个按钮,在click事件中编辑VBS动作,对MSComm进行初始化。可在VBS全局脚本编辑器中输入如下程序: Sub OnLButtonDown(ByVal Item,ByVal Flags,ByVal x,ByVal y)Dim mscomm
Set mscomm=ScreenItems(“mscomm”)mscomm.CommPort =2 mscomm.Settings=“9600,N,8,1” mscomm.InputMode=1 mscomm.portopen=True End Sub 5)在ActiveX控件MSComm属性中也有OnComm事件。在该事件下输入VBS动作,对发送或者接收到的字符进行处理。Sub OnComm(ByVal Item)„„
„„ //对发送或者接收到的字符进行处理 End Sub 在将数据赋给Internal tag(内部标签)之后,上位监控系统就可在监控界面需要时,随时用于显示或计算,也可以把这些数据作历史数据归 档,以用于报表输出或查看数据的变化趋势图等。3 结论
串行通讯控件MSComm全面提供用于RS232串行通讯上层开发的所有细则,使得WinCC与智能仪表间的串行通讯能以较为简捷的方式实现。上述
方法曾在自动化控制项目中使用,事实证明,这两种方法不仅是可行的,而且是切实有效的。此外,还能很好地弥补了WinCC没有提供串口通
讯通道驱动这一缺陷,增加了使用WinCC的灵活性,大大提高了组态效率。
打开高考作文思路的六把金钥匙不少同学拿到作文题,常常大脑中一片空白,什么也想不起来.这是没有打开作文思路 所致.其实, 只要我们讲究方法, 审题立意关也就自然容易攻克, 写作材料也就会纷至沓来, 如此,又怎么会写不好作文呢? 这里,我送给大家迅速打开作文思路的六把金钥匙.为说明这些方法的适用性,我结合 过去的高考题作一解说.一,置换法 1.如果所给的作文题目, 话题或材料是借喻性质的, 那么这时就可使用本体去置换喻体.如山东高考作文题: 请以“春来草自青”为话题,写一篇不少于 800 字的文章.要求:①自拟题目.②自定立意.③除诗歌外,文体不限.④文体特征鲜明.命题人给了我们比喻的喻体,本体呢,思考可知道“春”的本体可以是信心,可以是毅 力,可以是机遇,也可以是改革,是友谊,是爱心,是互助,是合作,是诚信,等等.“草 自青”的本体可以是欣欣向荣的局面,可以是辉煌的成功,也可以是双赢的结果,等等.我 们展开联想,用一个又一个的本体去置换喻体,写什么的问题也就立马解决了.2.如果所给的作文题目或话题中的相关词语具有多义性,那么这时可用具有单一语义的 词语置换具有多义的词语.例如重庆高考作文题: 《现代汉语词典》对“自然”的释义有:①自然界.②自由发展;不经人力干预.③不 勉强;不局促;不呆板.…… 请以“在自然中生活”为题目,写一篇文章.要求:①立意自定;②除诗歌外,文体不限;③不少于 800 字;④不要套作,不得抄袭.以“在自然中生活”为题目, “自然”怎么理解?这是立意的关键.命题人想我们之所 想,给了我们三个义项进行诠释.我们只要用其中的一个义项去置换“自然” ,那么也就容 易迅速立意,打开思路.如果“自然”是指自然界,那么“在自然中生活” ,也就是在自然 界中生活,这样我们可以谈环保等.如果“自然”是指自由发展,不经人力干预,那么“在 自然中生活” ,也就是在自由发展中生活,这样我们可以谈教育中的张扬,发展个性等.如 果“自然”是指不勉强,不局促,不呆板,那么该如何理解呢?我们可以通过造句的方式来 看一看:态度很自然;他是初次演出,但演得挺自然.这么说来, “在自然中生活” ,也就是 大大方方, 也就是凡事能够深入进去融入其中.明白了这些, 我们谈什么, 也就一目了然了.3.如果所给的作文题中含有代词,那么这时可用代词所代的事物去置换作文题中的代 词.例如上海高考作文题:平常大家关注更多的也许是“我们” ,如果把视线转向“他们” ,你会看到什么,又会想 到什么?请以“他们”为题,写一篇文章.要求:(1)不少于 800 字.(2)不要写成诗歌.(3)不得透露个人相关信息.世界就是由“我们”与“他们”组成的,心中如果只有“我们” ,自然世界是不完整的.遗憾的是, 现在只关注自己的人太多了, 无论何时何地, 都是以自我为中心, 哪里还有他人? 这样的世界,又怎么会是一个和谐的世界.我们把视线转向“他们” ,会看到什么?会看到 贫穷,会看到富贵,会看到不公,会看到进步,会看到文明,等等.会想到什么?会想到共 同富裕,会想到平等,会想到感恩,会想到正义等.“他们”是谁?可以是农民工,可以是 干部子弟,可以是下岗工人,可以是一掷千金的大款,可以是沿街乞讨的老人,等等.这么 一置换,自然也就打开了思路.二,补充法 所谓补充法, 是指通过给标题或话题补出相关的句子成分来打开思路的方法.例如安徽 高考作文题: 请以“带着感动出发”为题,写一篇不少于 800 字的文章.要求:①立意自定.②文体自选.③不得抄袭,不得套作.④不得透露个人相关信息.⑤书写规范,正确使用标点符号.打开思路,写好“带着感动出发” ,需要思考三个问题.一是谁带着感动出发.也就是 补出标题的主语,可以是你(你们),可以是我(我们),可以是他(他们).二是什么样的感动, 或者说是为什么感动.联系实际,汶川大地震中,老师舍生救学生,我们为之感动;救援人 员不怕疲劳,日夜奋战,我们为之感动;群众排队捐款,献血,我们为之感动.具体到个人, 温总理第一时间在第一线指挥,我们感动;民警蒋小娟为灾民的孩子喂奶,我们感动.让人 感动的原因很多,让人感动的事例很多.三是带着感动出发的结果.带着感动出发,其结果 将产生更多的感动,从而使更多的人带着感动出发!再如广东高考作文题: 请以“不要轻易说'不' ”为题写一篇文章.要求:①除诗歌之外,文体不限;②不少于 800 字.可以通过给标题补充状语的方法来打开思路.不要轻易说“不” ,不是不能说“不” ,而 是不要轻易说.很多时候我们可以策略一些,这并不是要接受,认可,轻易说“不”的结果, 往往使我们受到不必要的伤害.比如面对同事,同学,朋友,家人的正当请求,不假思索脱 口而出的“不” ,往往伤害了他们的自尊心,拉大了与他们的距离,使双方变得越来越疏远.不要轻易说“不” ,是智慧的表现,是道德的要求.明白了这些,我们的立意,选材也就有 了取舍的空间,写出与众不同的好文章,也就成了一件容易的事.再如浙江高考作文题: 阅读下面的文字,根据要求作文.都市和乡村,是我们栖居的空间;都市生活和乡村生活,是我们平凡的生活.当我们从平凡中回望时,每个人都会有不同的感触和期待.请以“触摸都市”或“感受乡村”为题,写一篇作文,可讲述你自己或身边的故事,抒 发你的真情实感,也可阐明你的思想观点.【注意】①立意自定,角度自选.②除诗歌外,文体不限.③不少于 800 字.④不得抄 袭.无论是“触摸都市”中的“触摸” ,还是“感受乡村”中的“感受” ,都是用心去触摸, 用心去感受.即给“触摸”“感受”补充状语.也就是说,我们所写的,应该是都市或乡村 , 中能够在我们心灵的湖泊上激起波澜最起码是涟漪的人,事,物或观点.这样,我们所写才 可能充满与众不同的个性,而不是些人云亦云的内容.具有鲜明的个性,能够给人以陌生的 新意,自然会让阅卷老师喜欢!三,扩展法 例如湖南高考作文题: 阅读下面的文字,按要求作文.“天街小雨润如酥,草色遥看近却无”是唐代诗人韩愈的名句.诗句的意思是说,在滋 润如酥的初春细雨中,春草发芽,远远望去,一片淡淡的绿色,可是走近后,却只见到极为 稀疏的草芽,绿色反而感觉不到了.诗句的意境是美的,隐含的哲理也很丰富.它使我们领 悟到:置身太近,有时反而感受不到实际存在的东西;要把握某一事物,有时需要跳出这一 事物;人对事物的看法与对美的感受同距离是有关系的……其实, 生活中的许多事物和现象 都含有这两句诗的意境与哲理,关键在于你的观察和体会.请根据自己阅读诗句所体会到的意境与哲理, 联系现实生活, 写一篇不少于 800 字的议 论文或记叙文.【注意】①立意自定,题目自拟.②不要照抄或扩写材料.③所写文章符合文体要求.如何立意?命题人已经给了我们三个角度, 我们可以与现实生活相联系, 看哪一个认识 深刻,哪一个手头有材料,我们就用哪一个.除此之外,还可以谈从全局把握问题,才能看 得清,看得准;还可以谈在思想上先做一个冷静的旁观者,才能搞清事实真相,从而做一个 能够正确解决问题的参与者,等等.再如福建高考作文题: 阅读下面的文字,按要求写一篇不少于 800 字的文章.三个人走进商店.一个人买了一瓶果汁, “我喜欢甜的.说: ”一个人买了一杯咖啡, 说: “我就喜欢这又苦又甜的滋味.还有一个人买了一瓶矿泉水后说: ” “我喜欢淡淡的矿泉水.” 变换角度法 四,变换角度法 一些材料作文, 往往需要从不同角度对所给材料进行审视, 以发现能够打开我们思路的 角度.例如全国Ⅱ卷: 南太平洋的小岛上,有很多绿海龟孵化小龟的沙穴.一天黄昏,一只幼龟探头探脑地爬 出来.一只老鹰直冲下来要叼走它.一位好心的游客发现了,连忙跑过去赶走老鹰,护着小 龟爬进大海.可是,意想不到的事情发生了,沙穴里成群的幼龟鱼贯而出——原来,先出来 的那只幼龟是个“侦查兵” ,一旦遇到危险,它便缩回去,现在它安全到达大海,错误的信 息使幼龟们争先恐后地爬到毫无遮挡的海滩.好心的游客走了, 原先那只在等待时机的老鹰 又飞了回来,其它老鹰也跟过来了.要求:选择一个角度构思作文,自主确定立意,确定文体,确定标题;不要脱离材料内 容及含意的范围作文,不要套作,不得抄袭.看了这则材料,谁也知道游客是好心办坏事.为什么会这样呢?是因为无知.如果知道 幼龟是“侦察兵”的话,自然也就不会帮倒忙了.现实生活中这样的事例也不少.文革时期 的围湖造田,毁林造田,都是典型.拿现在来说,许多家长不懂教育规律,只抱着为孩子未 来着想的美好心愿,对孩子实行棍棒教育,严重违反了《未成年人保护法》 ,使孩子的身心 受到极大伤害.许多地方领导,不懂市场不懂企业,只抱着船大才能抗风浪的观点,盲目要 求企业一再扩张,结果使很多企业破产倒闭.从成群的幼龟这个角度来说,它们没有对得到的信息进行思考,只是绝对相信,才造成 了被老鹰叼走的悲剧.这提示我们,要善于动脑思考,综合考虑各种渠道得来的信息,这样 才能得出正确结论.如果不是这样,而是听见风就是风,听见雨就是雨,又怎么不会吃亏上 当呢? 从老鹰这个角度来说,为了达到目的,即使遇到了挫折,也不放弃,而是在耐心等待时 机.如果被游客赶走就不再前来,那么自然也就不能够捕捉到幼龟了.它们不仅在游客走后 又来了,而且还耐心等待,结果抓捕幼龟的机会就来了.这对于我们人类来说,不也是一种 启示吗? 再如北京高考作文题: 课堂上, 老师说: “今天我们来做个小实验.随后, ” 他拿出一个装满石块的玻璃广口瓶, 放在讲台上,问道: “瓶子满了吗?”所有学生答: “满了!”真的?“老师从桌下拿出一小 ” 桶沙子,慢慢倒进去,填满石块的间隙, “满子吗?”学生们若有所思.老师又拿来一壶水 倒了进去,直到水面与瓶口持平.“这个实验说明了什么?”老师问道.课堂活跃起来.一个学生说: “很多事情看起来到达了极限,实际上还存在很大空间.” 一个学生说: “顺序很重要.先放这桶沙子,有此石块肯定就放不进去了.” 一个学生说: “对,得先放石块.有些分量重的东西就得优先安排.” 一个学生说: “也不一定,先沙子和水就一定不行么?” …… 请就以上材料,展开联想,自定角度,写一篇文章.题目自拟,文体自选(除诗歌外), 不少于 800 字.自定角度, 其实前三个学生所说的就都是很好的立意角度.我们如果对其中的一个有深 刻的认识,而且手头还有材料,就不妨直接用一用.这则材料还说明思维方式很重要, 有了独辟蹊径的思维方式, 往往看似不能解决的问题 也就迎刃而解了;还说明办法总比困难多,只要我们想办法,困难总是能够解决的.这两个 立意角度也不错.再如湖北高考作文题: 阅读下面的文字,根据要求作文.你走过一棵树,树枝低垂,你是随手把树枝折断丢弃,还是弯身而过?一只长了癣的流 浪狗走近你,你是怜悯地避开,还是一脚踢过去?电梯门打开,你是谦抑地让人,还是霸道 地推人?一个盲人和你并肩路口,绿灯亮了,你会搀那盲者一把吗?你与别人如何擦肩而 过?你怎么从小贩手中接过找来的零钱?你如何低头系上自己松了的鞋带?你, 独处时如何 与自己相处? 请根据对这段文字的理解,展开联想,思考如何对待自然,如何对待他人,如何对待自 己.自选角度,以《举手投足之间》为题写一篇文章.要求:自定立意,自定文体,不少于 800 字.以《举手投足之间》为题,写什么?材料中的八个例子,都小得有些微不足道.可正是 这些微不足道,透露了我们思想深处的秘密,这就是我们的修养,道德,文明程度.这么说 来, 举手投足之间, 我们又怎么能不重视?从小处入手, 从细节入手, 一步一个脚印走下去, 我们才能成为一个有修养有道德的现代高素质的文明人.你说是不是呢? 八个例子,前两个是让我们思考如何对待自然,中间四个是让我们思考如何对待他人, 最后两个是让我们思考如何对待自己.三种类型,三个思考角度,从哪一个角度切入,展现 在我们面前的都是一片海阔凭鱼跃,天高任鸟飞的广阔天地.我们去联想,去思考,写出一 篇好文章来也就是水到渠成的事情了.五,关键词句把握法 对材料作文来说,有时抓住了概括性极强的词语或句子,也就能够把握命题人的意图, 从而顺利确定作文立意.如全国卷Ⅰ: 阅读下面的文字,根据要求写一篇不少于 800 字的文章.2008 年 5 月 12 日 14 时 28 分,四川省汶川县发生里氏 8.0 级特大地震.人民的生命高于一切!胡锦涛,温家宝等党政军领导人迅速赶赴灾区指导抗震救灾.十多万解放军, 武警和公安民警, 各省市的救援队, 医疗队, 工程抢修队迅速进入灾区.港台救援队和国际救援队飞抵灾区.志愿者从四面八方汇聚灾区.救援物资从水陆空源源不 断运进灾区.一位中学教师趴在讲台上用生命保护了下面的四个学生.一位失去 15 个亲人的县民政 局长连续指挥救灾五天只睡了七个小时.幸存者的生还奇迹在不断突破,100 小时,150 小 时,196 小时…… 中央电视台 24 小时播报.19 日 14 时 28 分举国哀悼.一样的爱心,不一样的表达.捐款,献血,义演,关注…… 要求:选择一个角度构思作文,自主确定立意,确定文体,确定标题;不要脱离材料内 容及含意的范围作文,不要套作,不得抄袭.所给的材料说的是什么呢?有两个句子值得我们注意,一是“人民的生命高于一切” , 一是“一样的爱心,不一样的表达.捐款,献血,义演,关注……”.我们想一想,围绕这 两条,发生了多少可歌可泣的故事啊!解放军救援的故事,国际救援队救援的故事,教师用 生命保护学生的故事,还有我们捐款,献血的故事等,都值得我们去写.这些故事,都可以 写得生动感人,让人激动的落泪.如果写成议论文,应该注意选择那些典型感人的事例,在 叙述的时候要饱蘸浓烈的感情,争取在以理服人的同时,以情感人.六,换位法 如江西高考作文题: 阅读下面的文字与漫画,按要求作文.2007 年,洞庭湖大水导致 20 亿只田鼠大迁徙,所过之处农田一片狼藉.专家认为,田 鼠为害之烈,原因之一是人类热衷于吃野味,导致田鼠的天敌(蛇,猫头鹰,黄鼠狼等)数量 急剧下降.根据上述材料,请你为田鼠或田鼠的天敌代拟一封给人类的信.要求:①必须按书信格式作文.②题目自拟.③所有内容必须与给定的材料相关.④不 少于 800 字.⑤不得抄袭,套作.代拟书信,自然需要换位思考.只有换位思考,才能写得贴切,写得逼真.以田鼠的口 吻给人类写一封信.写什么呢?写感谢, 感谢人类吃掉了自己的天敌, 使自己得以迅速繁衍.要注意,写得越是情真意切,对人类的讽刺意味才愈大愈强.可用正反对比手法来写.写人 类没有吃自己的天敌时自己的悲惨处境, 写自己的天敌被人类吃光时自己的欢欣鼓舞.不妨 用勾勒法,写得形象写得有趣.以田鼠的天敌的口吻给人类写一封信.写什么呢?写人类的不理智.因为自己被吃掉, 才有了今天这种田鼠泛滥横行的局面.还可以推断,总有一天,田鼠会代人将所有田里的粮 食全部吃光,那个时候,人类悔悟也已经晚了.最后要劝人类深刻反省,认识到保护田鼠的 天敌,就是保护自己.平常写信,都是写给亲戚朋友,也就是现实生活中的人,现在却是以田鼠或田鼠的天敌 的口吻来写,我们想,一定能够写得别开生面,让人喜欢!最后需要指出的是,我们分着介绍这六种打开作文思路的方法,是为了行文的方便.实 际应用时,往往是两种或多种方法综合运用.只有如此,我们的思维才会处于活跃状态,从 而顺利通过审题立意关,将作文写好!
第五篇:在平凡中实现梦想
在平凡中实现梦想
——“中国梦•劳动美•我与学院共发展”主题演讲稿 尊敬的各位领导,各位老师,亲爱的同学们,大家下午好!我是来自学院房地产经济管理系的一名普通教师。我今天非常荣幸能代表房地产经济管理系来参加这次的“中国梦•劳动美•我与学院共发展”的主题演讲比赛。我的演讲题目是“在平凡中实现梦想”。
去年,我们学院刚刚迎来了她40岁的生日。40年的风雨历程,我们学院在探索中拼搏,在拼搏中创新,在创新中发展。特别是三校合并以来,我们学院更是走在了创新发展的前列,我们在伟大祖国的快速发展中茁壮成长。天津获得了对中国国际矿业大会的永久承办权,学院就可以一直在国际矿业大会的舞台上尽情的展示我们师生的风采;在教书育人的本职工作中,我们更是在硬件和软件上两手抓,青年教师的培养初具效果,实训室的建设也初具规模,举办的各类活动更是给校园带来了活力与生机。
我是一名90后,出生于80年代末、90年代初的中国。一提到90后,大家可能想到的就是叛逆与新潮。不过,我今天想说的是,无论其他人对我们的认识是什么,我所见到的我们这一代人是这样的:生长于一个网络较为发达的时代,在刚刚开始接触世界的时候就受到了信息大爆炸的冲击,可能这样会使我们有着不同以往的人生观和价值观。我们之所以在生活与工作当中充满热情,充满希望,就是希望自己的价值可以实现。而这份热情与希望,我认为正是我们学院发展所需要的,而学院带给我们的平台也促进我们更好更快的成长!
刚来到学院时,我在会议中心从事服务员的实习工作。这是我第一次做服务工作,新鲜感让我在开始的时候卯足劲,但是琐碎的、重复的工作,也让我的热情在一段时间后慢慢开始消磨。这时候,我就在提醒自己,无论你想干什么,无论你干得是什么,无论你干一件事一项工作多长时间,你都应该不断地告诫自己坚持下去并且保持热情。服务员的工作让我懂得,平凡中我们要知足,越是平凡越要坚持。
我很自豪自己能成为房经系的一员。开始时,面对崭新的工作环境,我显得有些不知所措。我提醒自己,要坚持下去,要尽快熟悉工作,找到工作的方式方法,找到自己与工作的契合点。因为我深深的知道,只有坚持做好每一件平凡的小事,才能对得起这份工作,对得起支持自己给予自己充分信任的领导和同事,对得起含辛茹苦用心血将自己培养成人的父母。
一年里,我也接触了不同方面的工作,但给我印象最深的有两件事。第一件是刚进入系内,突然接到陌生的教学秘书工作,我经过了几天的迷茫期,受到了不少人的质疑与批评,但我还是在犯错与改正的交错中勇敢的坚持了下来,因为我相信,能接受得了多大的批评就能获得多大的进步,最终我圆满的完成了领导交给我的任务,实现了这个岗位的平稳过渡。第二件就是11月初参加中国国际矿业大会的过程,这个过程让我记忆犹新,我负责同传翻译接收机/耳机的发放与回收工作,之前这种设备我连见也没有见过,更是没有进行过大型会议的设备管理工作。我就是带着一身的忐忑来到了梅江会展中心,来到了代表学院、代表天津、代表中国的舞台上。在这里,我见识到
了什么是国际舞台,什么是全方位素质,什么是专业团队,什么是一流水准,这些都让我在眼界上得到很大的拓宽,让我在思想上有了新的认识。整个过程中,我在整个矿大服务团队里看到了鼓足干劲、力争上游的决心和勇气,这些更督促我不能懈怠,勇往直前。我也希望每一年的矿大我都能参与其中,为学院争光添彩。
在这里,我必须感谢一年来给予我信任、支持与帮助的领导及同事,是你们的信任让我敢于接手陌生的工作任务,是你们的帮助让我处理问题越来越熟练,是你们的包容让我有机会改正自己工作上的纰漏;是因为你们,才会让现在的我这么充满自信的站在这个演讲台上,谢谢你们!
“平凡的岗位,不平庸的态度”是我工作的座右铭。我喜欢“平凡”的“凡”字,它的意思是“所有”。它中间有一个点,这个点时刻告诉我,别忘了自己的重心和初心,当你落下这个点时,它只是一个不具体的“几”;而当你拾起来这个点时,它就变成了“凡”,也就是“所有”。如果想得到所有,你必须把平凡的事一一做好,并且坚持下去,这样就是最不容易的平凡。我也希望自己可以永远的“坚持平凡”。这就是我自己的梦。
我相信,如果每一个人都能做好自己平凡的工作,坚持平凡的梦,不仅自己的梦可以实现,学院也会越来越好,宏大的“中国梦”也就可以照进现实。
谢谢大家!