7
呼和浩特西门子PLC代理商触摸屏供应商
1 系统介绍
炭素成型生产是炭素配料、混捏后的又一生产重要环节。成型就是将混捏好的糊料用加压设备压制成所需要的形状和尺寸以及具有较高密度的半成品(生坯)。我公司炭素厂使用振动成型方法,主要生产炼铝用预焙阳和高炉用的炭块等。
振动成型主要设备有振动台、模具和重锤,将盛装热糊料的模具放在振动台上,然后把重锤压在糊料表面上开动振动台,使糊料受到振幅小而频率高的强迫振动,在强烈的振动下糊料颗粒间的及糊料与模具壁间的摩擦力减小,颗粒移动并合理分布,得到具有规定形状的高密度的产品。压好的半成品经冷却、检查后堆放。
我公司炭素厂原使用的振动成型机是人工手动调节,炭块的重量、高度波动范围大,对产品的产量和质量有较大的影响。为此根据人工操作积累的经验设计一种具有较高智能、高度的自动控制系统,来提高炭素振动成型生产的产能和合格率,延长电气设备的运转周期,缩短故障检修时间,降低生产成本和岗位操作工的劳动强度。
2 系统组成
PLC是采用微处理器技术的新型工业控制装置,是一种使用可编程序存储器来存储设备所需程序的电气设备。它具有将逻辑运算顺序操作,,计时以及算术运算,数据通讯等功能,通过数字量或模拟量的输入/输出模板去控制各种设备或过程。其硬件结构如图1所示。
它采用了大规模的集成电路,故特别适应于高温、潮湿、电磁干扰、机械振动大的比较恶劣的工业现场环境。输入/输出接口组件的模块化,系统设计时根据被控对象的要求,选择必要的功能模块组成控制系统,大大提高了工程效率和系统的性。
在该控制系统中选用日本三菱公司的PLCMITSUBISHI A1S小型系列作为下位机。它具有、功能强的特点。上位机选择惠普P III微机,配以美国Inbbtion FIX软件,ORMON公司的继电器、行程开关,德国威德米勒隔离器、变送器,安川变频器等组成自动控制系统。系统总貌图如图2所示。
3 系统功能
3.1 该系统的上位机系统功能如下:
1.实时反映工艺流程,形象再现生产过程(系统主画面图见图3);
2.图表显示生产数据,方便操作工了解生产状况;
3.及时产生报警信息并予以打印,帮助操作工查找分析故障原因;
4.以曲线形式在线生产数据,方便查找历史数据,分析生产趋势;
5.以报表打印形式反映生产状况;
6.帮助操作工实现电机连锁开、停,并反映电机启动停车的有关信息;
7.给定控制工艺参数。
3.2 该系统的下位机功能如下:
1.数据采集:通过PLC AlS68AD转换模板对冷却水温度、糊料温度、糊料计量称、油箱油温、油箱油压、炭块高度、变频器电流进行模拟采集,并转换成FIX认可的数据格式(系统主要测点如下图4)。
2.电机连锁控制,以简单易行的PLC取代以往繁琐复杂、故障率高的电气连锁控制,并实现操作工远程开、停电机的功能。主要I/0点安排如下:
I/O Name Comment Remark
X80 CAR-EAST 称量车回到位
X81 CAR-WEST 称量车送料到位
X82 CAR-CLOSED 称量车门闭到位
X83 CLAMP-L CLOSED 左模夹紧到位
X84 CLAMP-R.CLOSED 右模夹紧到位
X85 CLAMP-L.OPENED 左模夹放松到位
X86 CLMP.R.OPENED 右模夹放松到位
X87 HAMMER-HIGH 重锤上升到位
X88 HAMMER-LOW 重锤下降到位
X89 MOLD-HIGH 模具上升到位
X8A MOLD-LOW 模具下降到位
X8B PUSH-OUT 推进器推出到位
X8C PUSH-IN 推进器返回到位
X8D SAFE-L.OPENED 左爪开到位
X8E SAFE-R.OPENED 右爪开到位
X90 SAFE-L.CLOSED 左爪闭到位
X91 SAFE-R.CLOSED 右爪闭到位
X92 CLASP-OPENED 抱闸开到位
X93 CLASP-CLOSED 抱闸闭到位
X94 PUSH-ENABLE 后辅机允许推出
X95 CAR-OVERLOAD 称量车电机过载
X96 QUIVER-OVERLOAD 振动电机过载
X97 BP.RUNNING 变频运行
X98 BP.ALARM 变频报警
X99 SYS.AUTO 系统手自动切换
X9A OIL-LOW 低油压
X9B BP.GIVE-M 点动补料
X9C GIVE-SAFE 布料
YA1 CLAMP-CLOSE 模具加紧
YAl CLAMP-OPEN 模具放松
YA2 HAMMER-DOWN 重锤下降
YA3 HAMMER-UP 重锤上升
YA4 MOLD-UP 模具上升
YA5 MOLD-DOWN 模具下降
YA6 PUSH-GO 推进器推出
YA7 OIL-GUSH 喷油
YA8 DOOR-OPEN 开车门
YA9 BP.FWD 变频下料
YAA BP.RESET 变频复位
YB0 CAR-GO 程量车送料
YBl CAR-BACK 程量车返回
YB2 QUIVER-START 振动开始
YB3 CLASP-OPEN 开抱闸
YB6 TRANS.RUN 板式机运行
3.3 通过变频器控制圆盘螺旋下料机的电机转速来控制炭块的重量。
三菱A2ASCPFSI系列I/0点数量能达到1024点,程序语言使用梯形图或指令字语言,程序容量可达到64K步,并具有自诊断功能。
4 控制过程的实现
控制过程有4个操作程序:1、下料;2、装料;3、振动挤压、脱模;4、炭块推出、冷却输送。贯穿于振动成型过程中的主要问题是正确掌握温度、压力、振动频率、振动时间、推出速度。
4.1下料
经过混捏好的糊料,一般温度在130℃-140℃左右,从圆盘螺旋下料机部加料口加入,经分料器的上部锥体分布在圆盘上。在下料前,检查判断糊料斗称量车是否在圆盘螺旋下料机的下方等待接料,然后控制变频器输出驱动圆盘螺旋下料机电机的螺旋转速,对糊料斗称量车下料,下料过程由快到慢以满足炭块的重量。糊料斗车连**走铁轨装有TOLEDO衡器公司生产的称重装置用于计量炭块的重量。炭块的重量可根据产品的类型、要求由上位机给定。
4.2装料
装料前PLC检查判断模具到位、模具爪夹紧到位、重锤上升到位、重锤爪夹紧到位等信号,然后打开糊料斗称量车的抱闸驱动小车送料,行走到模具口上方时停止行走关抱闸,然后糊料斗称量车底开门把称好的糊料放入模具中。
4.3振动挤压、脱模
1、振动挤压:此时PLC检查判断糊料斗称量车存在返回到位信号,然后重锤爪松开并到位,重锤下降并到位,开始驱动2台振动电机带动偏心振子转动,不平衡质量回转引起惯性力迫使振动台振动。又由于2个振动器转动方向相反、同步,使它们的惯性合力水平方向为零,只有在垂直方向产生激动力。振动台上的模具和装在模具内的糊料都处于强烈的振动状态。虽然振幅不大(一般在1~2mm),但振动频率很高(40~50HZ),它们的运动速度很快,振动周期在0.02秒左右,将产生大的加速度,这个加速度大大过重力加速度,是它的几十倍至几百倍,因此糊料颗粒质量大小不同,获得的惯性力也不同,颗粒界面间产生应力,而这个应力过糊料的内聚力,便产生相对位移。同时,在强烈的振动下,糊料颗粒间的内摩擦力及糊料与模具壁之间的外摩擦力也急剧下降,糊料便具有重液体的液体性质,跳跃着的糊料充填到模具的各个角落,较小的颗粒充填到大颗粒间的空隙中去,从而得到具有规定形状的高密度程度的产品。
2、振动时间:是从重锤落到糊料面到完成振动所需的时间。振动时间短,则糊料密度低,既孔隙度大。铝电解用预熔阳炭块振动时间为1~2分钟。振动时间可根据产品在现场整定。
3、脱模:输出信号驱动重锤上升并到位,重锤爪夹紧并到位;模具爪松开并到位,驱动模具上升且到位。
4.4炭块推出、冷却输送
1、炭块推出:驱动推出器从振动台推出炭块,在推出过程中对产品的高度进行检测。测高仪选用西安适盛测试设备公司的激光测高仪表,用来测试产品的质量。
2、冷却输送:被推出的产品马上在凉水中冷却,防止产品冷却的弯曲和变形。冷却时间应根据季节、产品直径大小、冷却水的温度TE103,现场整定。冷却完成后,驱动板式输送机输送炭块到炭块堆场,检查合格后堆放。
5、结束语
本系统已投入运行,软件设计完善,功能齐全,运行效果稳定,性能良好。自动控制的实现,大大降低了操作工的工作强度,提高了工作效率,达到了节能降耗的目的。该系统是PLC在实际生产中的成功应用,可为业内**借鉴。
1 引言
随着时代的发展,社会经济环境的整体提升,作为中国支柱产业之一的房地产业进入了跨越式发展的新阶段。在这个进程当中,作为建筑物附属设备的电梯也有不可估量的发展空间。目前在电梯中所应用的交流双速或可控硅调压调速控制方式里逻辑部件均由继电器、选层器完成。但随着时间的推移其触头就会磨损、插接口会严重氧化造成接触不良,缺少设备维护时甚至会出现困人、冲、乱层、蹾底等现象,所有这些都不利于电梯的维修和运行。但现有的电梯系统其机械部分性能良好,所以用变频器和PLC改造原有的控制系统即可以满足客户对电梯的服务质量的要求又可以节约资金避免不必要的重复投资。
2 电梯驱动系统介绍[1]
电梯的电力驱动系统对电梯的起动加速、稳速运行、制动减速起着决定性作用。驱动系统的优劣直接影响电梯的起动、制动、加减速度、平层精度、乘座的舒适感等指标。
由于目前电器电子元件的高速发展,使得变频变压技术逐步成熟,因此使用变频变压(VVVF)调速系统控制的电梯也投入使用。自1984年日本三菱电机公司台变频变压控制的电梯问世以来,这种系统驱动的电梯其额定速度已越来越高,而利用矢量变换控制的变频变压系统的电梯的额定速度可达14m/s。它们的调速性能都已达到了直流电动机驱动电梯的水平,并具有驱动控制设备体积小、重量轻、、节省能源等优点,成为当前新的电梯驱动系统。
3 控制系统介绍
控制系统主要由PLC、变频器及旋转编码器组成。可编程控制器(PLC)负责处理各种信号的逻辑关系,从而向变频器发出起、停等信号,同时变频器也将工作状态信号送给PLC,形成双向联络关系,它是系统的。变频器实现电机的调速。本文所选用的安川VS-616G5通用变频器可实现平稳操作和控制,使电动机达到理想输出。为满足电梯的要求,变频器又要通过与电动机同轴连接的旋转编码器和PG卡,完成速度及反馈,形成闭环系统。旋转编码器与电动机同轴连接,对电动机进行测速。旋转编码器输出A、B两相脉冲,旋转编码器根据A、B脉冲的相序,可判断电动机转动方向,并可根据A、B脉冲的频率测得电动机的转速。旋转编码器将此脉冲输出给PG卡, PG卡再将此反馈信号送给变频器内部,以便进行运算调节。所以旋转编码器和PG卡实现了闭环运行。
3.1 硬件系统组成
控制系统包括信号采集和PLC控制两部分
(1) VS-616G5变频器具有自学习功能,在使用矢量控制时,变频器能自动设定电动机铭牌范围的电动机参数。由此从变频器电动机到通用电动机都可以进行矢量控制运行,电动机可大限度地发挥作用。VS-616G5可使用PID控制功能实现简单的追踪控制,使用脉冲发生器等速度器时,不管负载大小变化都可使其速度保持一致,保了电梯零速制动抱闸的要求。
(2) 旋转编码器(PG)[2]的选择。
本文根据电梯平层精度要求选择PG。根据GB1058/T-1997电梯技术条件中的要求,运行速度为0.5m/s调速电梯的平层精度为±15mm以内。而平层精度与钢丝绳的松紧度,平层干簧管的位移,PLC的输入脉冲数有关。者为机械因素,而PLC的输入脉冲来自于脉冲监视输出。考虑PLC的自身频率,为保证输入脉冲的正确性,设定PG脉冲监视输出分频比F1-06功能码为16,既PG输出脉冲的1/16作为PLC的输入脉冲。为尽可能在PG参数上来保证平层的精度,以1mm误差计算。
齿轮箱减速比K为61:2,曳引机直径D为0.65m,采用半绕式2:1绕法,N=2,电机每转一圈电梯上下行程:
L=3.14×D×K×1000/N(mm) (1)
代入式(1)求得L=33.5mm,
PG参数=33.5×16=536p/rev。根据PG解析度的分类,选用解析度为600的旋转编码器。本文采用增量式圆光栅编码器, 它将测得的转速脉冲反馈给变频器,形成闭环控制。
图1中TA1为变频器的速度控制卡的脉冲输入部分,接收来自旋转编码器的脉冲;TA2为速度控制卡的脉冲输出部分,向PLC输出脉冲。
(3) 由于电梯是载人的起重设备,要求性系数特别大,为地满足乘客的舒适感,使用VS-616G5的带PG矢量控制,将测速脉冲反馈给变频器,提高控制精度;为配合脉冲记数和平层精度,选用三菱公司FX2N系列可编程控制器PLC,其X0-X1端子可采取高速脉冲,满足了系统记数,达到准确平层的要求。
由电力电网送来的380V动力电源变为可控的直流电,经变频器转变为可调的频率可变的变频变压三相正弦交流电,驱动电动机平稳运行。
当电梯检修时,是点动运行方式,PLC向变频器发出方向和检修运行信号,装置按预先编好的速度指令向电动机输送点动频率(10Hz)的交流电,作上、下慢速运行。
当电梯正常运行时,PLC向变频器发出快速命令和方向信号,系统按预先编入的频率指令沿理想曲线上升至满速(45Hz)运行。当需要减速时,PLC断开高速指令,输出按理想曲线下降至停止,在降程中,由于系统的惯性作用,将动能通过能量回馈装置消耗在制动电阻上,因此曳引电动机不会发热,可以不用强迫冷却风机。变频器内部带电流反馈和速度反馈。电梯的速度通过脉冲编码器反馈回变频器,当实际速度或给定速度时,变频器会自动调节输出电压(电流)和频率,使两者相等,从而达到理想的运行状态。
3.2 软件部分说明
(1) VS-616G5部分参数设置如下表1所示。
表1 变频器参数设置
4 控制系统特点
4.1 采用级队列
根据电梯所处的位置和运行方向,在编程中,采用了四个级队列,即上行级队列、上行次级队列、下行级队列、下行次级队列。其中,上行级队列为电梯向上运行时,在电梯所处位置以上楼层所发出的向上运行的呼叫信号,该呼叫信号所对应的楼层所具有的脉冲数存放的寄存器所构成的队列:上行次级队列为电梯向上运行时,在电梯所处位置以下楼层所发出的向上运行的呼叫信号,该呼叫信号所对应的楼层所具有的脉冲数存放的寄存器所构成的队列。
4.2 采用检测逻辑控制
当电梯以某一运行方向接近某楼层的减速位置时,判别该楼层是否有同向的呼叫信号(有呼叫请求时,相应寄存器为l,否则为0),如有,将相应的寄存器的脉冲数与比较寄存器进行比较,如相同,则在该楼层减速停车;如果不相同,则将该寄存器数据送入比较寄存器,并将原比较寄存器数据保存,执行该楼层的减速停车。
4.3 采用先出队列
根据电梯的运行方向,将同向的级队列中非零单元(有呼叫时此单元为七零单元,无呼叫时则此单元为零)送入寄存器队列(先出队列FIFO), 利用先出读出SFRDP指令,将FIFO个单元中的数据送入比较寄存器。
4.4 对变频器的灵活控制
PLC根据控制的要求,可向变频器发出正向运行、反向运行、减速以及制动信号,再由变频器根据一定的控制规律和控制算法来控制电机。
4.5 的系统工作状态
当系统出现故障时,PLC可向变频器发出信号,则避免了大事故的发生。
5 结束语
以PLC和变频器为的电梯控制系统可根据客户的要求对以往的电梯控制系统进行改造,这不仅避免了旧系统的诸多缺点而且加节约能源。本控制系统具有、、经济的特色。
在自动测量和控制系统中,常常需要在上位机(微机)和PLC(可编程控制器) 之间进行数据交 换和发送控制信号,串行通信是其主要手段,我们在开发一套自动测试系统时就是采用串行 通信的方法,即由上位机向PLC发送命令,控制其进行各种测试线路的切换。
1 通信协议
在本系统中微机和PLC采用一对一通信连接,上位机作主局,PLC作子局。通信开始时由上位 机向PLC发出呼叫,PLC收到上位机的呼叫后应答,并返回应答信号,然后上位机发标,PL C应答,接着上位机发数据块,PLC应答,数据全部发完后上位机发一结束标志,至此上位机 与PLC的通信结束。
该协议使用的传输控制字符有:
ENQ(查询):在需要通信时作为发送方的请求。
ACK(认可):接收方给发送方的应答,表示正确接收信息包。
SOH(标):表示要传送的是标。
ETB(数据结束):标志数据块的结束。
STX(文本开始):标志数据块的开始。
ETX(文本结束):标志文本块的结束。
EOT(结束):表示传送结束。
LRC:纵向冗余校验码,即对所有的传输码进行异或计算。
2 bbbbbbs95下用Delphi实现串行通信
在bbbbbbs95环境下用Delphi3.0实现串行通信有3种方法:①使用VB的通信构件MSComm ;② 调用bbbbbbs95下的API函数来完成通信;③熟悉C/C++或其它语言的用户可以将自己的程序 编译链接为DLL(动态链接库),这样Delphi就可以调用DLL里的函数来通信。下面就这3种方 法分别加以讨论。
2.1 使用VB通信构件
在使用VB构件之前,要将VB构件文件MSComm32.OCX安装到Delphi的动态构件库中。打开 主菜单Component选择Import ActiveX Control...项,在弹出的对话框里选中Microsoft Co mm Control5.0(安装VB5.0后必有此项),再单击Install按钮。此时Delphi载入VB构件文件并重新编译DCL(Delphi Component Library)。编译完成后,MSComm的小按钮出现在ActiveX 页中,这时程序就可以使用此 构件了。应该注意的是,安装前要确保VB通信构件的控制文件MSComm32.OCX(在VB4.0以上版 本中)在编译DCL之前已在\bbbbbbs\System下。接着向窗体中 添加1个MSComm构件并进行串行口的初始化,初始化子例程序如下:
Procedure Tbbbb1.bbbbCreate(Sender:Tbbbbbb);
begin
mPort:=2; {使用COM2口为通信口}
MSComm1.InBufferSize:=1024; {设定接收队列长度为
1KB}
MSComm1.OutBufferSize:=1024; {设定发送队列长度为
1KB}
MSComm1.Settings:=‘9600,N,8,1';{波特率9600b/s,无校验,8个数据位,1 个停止位}
MSComm1.bbbbbLen:=0; {读取整个接收缓冲区内容}
MSComm1.bbbbbBufferCount:=0; {接收缓冲区}
MSComm1.PortOpen=:True; {打开串行口}
End;
用bbbbb属性从接收对列读入字符串:ReadBuffer:=MSComm1.bbbbb;用Output属性发送字 符串:MSComm1.Output:=WriteBuffer;然后根据上述通信协议,即可快速编制出通信软件 。
2.2 调用bbbbbbs95下的API函数
bbbbbbs95对通信功能的支持非常强,它增加了一系列用于通信的API函数供用户调用。同样 ,要进行串行通信,也需要先对串口进行初始化。bbbbbbs95把串行口作为设备文件,对串 口操作就是对文件操作。因此,先为串口分配1个文件句柄,以后对串口操作都将通过 这个文件句柄来完成。初始化过程如下:
(1)调用CreateFile函数为串口分配1个文件句柄。
Var HComm:THandle;
HComm:=CreateFile(‘COM2',GENERICREAD or GENERICWRITE ,0,@NULL,OPENEXISTING,FILEFLAGOVERLAPPED,0);
如果对串行口1操作,用字符串COM1代替COM2即可。
(2)调用SetupComm函数设置串行口的输入和输出缓存区。
SetupComm(HComm,1024,1024);
(3)1个DCB(设备控制块)结构来设置通信参数。通过调用GetCommState函数 获得当前系统的DCB结构,按需要赋值给DCB的成员,如波特率、奇偶校验、数据位、停止位 等,后将创建后的DCB结构作为参数传给SetCommState函数就可以初始化串口了。
Var DCB:TDCB;
GetCommState(HComm,DCB);
BuildCommDCB(‘9600,N,8,1',DCB);
SetCommState(HComm,DCB);
(4)用PurgeComm函数来接收缓存区的内容。
PurgeComm(HComm,PurgeRXbbbbb);
(5)串行口的初始化完成后,接下来的工作就是根据通信协议发送和接收串行口上的数据。R eadFile函数用于接收数据,WriteFile函数用于发送数据。
Var
OverLapped:TOverLapped;
DataIn:Byte;
DataOut:Byte;
BufferSize:Integer;
COMSTAT cs;
ReadFile(HComm,DataIn,cs.cbInQue,BufferSize,@OverLapped);
{从串行口读输入缓存的字节,存入DataIn变量中}
WriteFile(HComm,DataOut,cs.cbOutQue,BufferSize,@OverLapped);
{向串行口写输出缓存的字节,要写的数据存放在DataOut}
按照上述步骤,再根据的通信协议,即可完成串行通信。
2.3 调用其它语言编写的DLL
由于这里所说的其它语言包含面很广,可以是开发人员所熟悉的编程语言(只要其支持DLL即 可),如C和C++等,所以如何编写DLL就不再详述了。将编写好的DLL进行编译,然后把编译 通过后的DLL放在\bbbbbbs\System子目录下,在Delphi下打开1个单元文件,将DLL里的所 有函数在单元文件中声明,格式如下:
unit UnitName;
interface
procedure p1(bbbbb1:type1;bbbbb2:type2;...);stdcall;
external‘DLLName';
…
implementation
end
其中UnitName为单元文件名,p1为调用过程名,bbbbb1、bbbbb2为参数名,type1、type2为 参数类型名,DLLName为DLL名。串行通信时,只要将此单元包含进编程单元就行了。
3 结 论
对使用Delphi开发bbbbbbs95下与PLC进行串行通信程序的3种方法进行比较可以得出这样的 结论:
(1)使用VB通信构件不但能够实现API的所有功能,而且程序简单明了。
(2)调用bbbbbbs95的API通信函数,可以设计和开发出各种通信软件,但编程复杂。
(3)3种方法适合那些熟悉其它编程语言的开发人员。
以上所有程序均在bbbbbbs95中文版下使用Delphi3.0调试通过。
作者单位:合肥工业大学计算机系(230061)
参考文献
1 李汉涛,杨长春.bbbbbbs下三线制串行通信的实现方法.电脑技 术,1998;(7)
2 王仲文译.精通串行通信.北京:电子工业出版社
一、MSComm控件的主要属性及事件
(1)CommPort:设置或返回串行端口号,缺省值1。
(2)Setting:设置或返回串口通信参数,格式为“波特率,奇偶校验位,数据位,停止位”。例如:MSComm1.Setting:=′9600,n,8,1′
(3)PortOpen:打开或关闭串行端口,格式为:MSComm1.PortOpen:={True|False}
(4)InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。
(5)InBufferCount:返回接收缓冲区内等待读取的字节数,可通过设置该属性为0来清空接收缓冲区。
(6)RThreshold:该属性为一阀值,它确定当接收缓冲区内的字节个数达到或过该值后就产生代码为ComEvReceive的OnComm事件。
(7)SThreshold:该属性为一阀值,它确定当发送缓冲区内的字节个数少于该值后就产生代码为ComEvSend的OnComm事件。
(8)bbbbbLen:设置或返回接收缓冲区内用bbbbb读入的字节数,设置该属性为0表示bbbbb读取整个缓冲区的内容。
(9)bbbbb:从接收缓冲区读取一串字符。
(10)OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。
(11)OutBufferCount:返回发送缓冲区内等待发送的字节数,可通过设置该属性为0来清空缓冲区。
(12)OutPut:向发送缓冲区传送一串字符。
如果在通信过程中发生错误或事件,就会触发OnComm事件,并由CommEvent属性代码反映错误类型,在通信程序的设计中可根据该属性值来执行不同的操作。CommEvent属性值及其含义如下:
(1)ComEvSend:值为1,发送缓冲区的内容少于SThreshold的值。
(2)ComEvReceive:值为2,接收缓冲区内字符数达到RThreshold的值。
(3)ComEvFrame:值为1004,硬件检测到帧错误。
(4)ComEvRxOver:值为1008,接收缓冲区溢出。
(5)ComEvTxFull:值为1010,发送缓冲区溢出。
(6)ComEvRxParity:值为1009,奇偶校验错误。
(7)ComEvEOF:值为7,接收数据中出现文件尾(ASCII码为26)字符。
二、程序样例
下面是一接收程序的样例(主要部分),大家可根据实际需要进行完善。
在bbbb中放置一Memo控件用于显示接收的数据,Combobox1选择通信参数(Setting属性值),Combobox2选择串口(CommPort属性值),按Button1开始接收数据,按Button2停止接收。
procedure Tbbbb1.bbbbCreate(Sender: Tbbbbbb);
begin
Mscomm1.InBufferCount :=0; // 清空接收缓冲区
Mscomm1.bbbbbLen :=0; // bbbbb读取整个缓冲区内容
Mscomm1.RThreshold :=1; // 每次接收到字符即产生OnComm事件
end;
procedure Tbbbb1.Button1Click(Sender: Tbbbbbb);
begin
Mscomm1.Settings :=ComboBox1.Text;
if ComboBox2.Text =′com1′ then // 设只考虑COM1和COM2两种情况
mPort :=1
else
mPort :=2;
Mscomm1.PortOpen :=true; // 打开串口
Mscomm1.DTREnable :=true; // 数据终端准备好
Mscomm1.RTSEnable :=true; // 请求发送
end;
procedure Tbbbb1.Button2Click(Sender: Tbbbbbb);
begin
Mscomm1.PortOpen :=false; // 关闭串口
Mscomm1.DTREnable :=false;
Mscomm1.RTSEnable :=false;
end;
procedure Tbbbb1.MSComm1Comm(Sender: Tbbbbbb);
var
recstr:Olevariant;
begin
if mEvent = 2 then
begin
recstr := Mscomm1.bbbbb ;
Memo1.text := Memo1.Text + recstr;
end;
end;
上位机(pc)<->全透明网关<->下位机(单片机)
全透明网关是一个tcp转rs232设备,有自己的ip和端口。
下位机原来接收pc的串口发送数据。但是现在有了tcp->rs232的全透明网关,所以理论可以实现在局域网内任何一台pc都可给下位机的网关发送数据。
现在做的是一个客户端,和网关建立连接,然后把数据发送到网关,网关可以把数据全部传送到下位机上。用D7的tcpclient控件,非阻塞模式。上位机先和网关建立连接:然后发送挂钩数据,直到挂钩成功(下位机返回相同数据),然后发送数据+1位校验码。下位机从网关依次接受数据:接收挂钩数据,判断然后返回挂钩成功数据,然后接收数据,再返回数据校验码。因为要使得下位机回传的数据会立刻通过网关回传到上位机上,所以上位软件建立了一个接收的线程,在不停的接受。现在基本调通。有下面几个问题: