串行通讯范文(精选9篇)
串行通讯 第1篇
随着数字化技术的飞速发展, 通讯传输在油田自动化控制领域得到越来越广泛的应用。采用串行通讯方式具有使用线路少、成本低、简单易用的特点, 在远程传输时, 避免了多条线路特性的不一致而被广泛采用。现在各控制器、智能仪器仪表基本都支持串行通讯能力, 合理利用串行通讯功能将极大的降低自动化项目成本, 提高产品竞争力。
2、串行通讯及CAPE-1200油井测控终端串行通讯介绍
计算机通讯是不同的终端设备通过线路互相交换信息数据, 其主要目的在于将数据从某个终端传送到另一终端, 实现信息的交换。计算机通讯通常有并行和串行两种方式, 由于并行传输方式在信息传送的过程中容易衰减干扰, 并且物力链路成本很高, 而串行通讯的方式可以很好的解决这些问题, 所以在油田行业应用中一般使用串行通讯。
2.1 串行通讯的基本接口方式分为RS-232和RS-485两种标准
(1) RS-232接口。RS-232一般使用DB-9的9芯插头, 只需三条接口线即可实现通讯, 即“发送数据”、“接收数据”和“信号地”。在RS232的规范要求, 电压域值在+3V---+15V (一般使用+6V) 之间称为“0”或“ON”;电压在-3V----15V (一般使用-6V) 之间称为“1”或“OFF”;计算机上的RS-232“高电位”约9V, 而“低电位”则约-9V。RS-232为全双工工作模式, 信号是参考地线而得, 分别作为数据的传送和接收;实际应用中一般传输距离可以达到15米。只能实现一对一通讯。
(2) RS485接口。传输线路采用正负两根信号线。RS-485的电气特性:逻辑“1”以两线间的电压差为+ (2—6) V表示;逻辑“0”以两线间的电压差为- (2—6) V表示。RS485为半双工工作模式, 其信号是两条线路电压差, 是差动式输入方式, 抗共模干能力比较强, 即抗噪声干扰性比较好;实际应用中其传输距离可达1200米。具有多站能力, 即一对多的主从通讯。
2.2 CAPE-1200油井测控终端串行通讯功能
CAPE-1200控制器内有2个标准的通讯口, 一个RS232和一个RS485接口, 其中RS485口内接了电量变送器不能使用, 而RS232口主要用于和上位机参数配置、通讯控制等。CAPE-1200在软件指令上对通讯的支持也很便利, 主要通过MODBUS/RTU通讯方式。MODBUS协议是目前国际上已经公开的工业标准串行通迅协议。CAPE-1200控制器通讯符合MODBUS协议, MODBUS通讯方式的编程简单, 且也具有一定的编程灵活性。
3、WINDOWS串行通信编程概述及通讯案例
3.1 WINDOWS串行通信编程概述
Windows下通过串行通信编程实现和CAPE-1200通讯的方法有三种:I/O端口直接操作、调用系统API函数和设计专用的控件。在应用程序设计中一般采用后面的两种方法。
串行通信主要由数据的接收和发送两部分。程序设计时收发一般根据设备的主从特性采用主动发送和被动接收策略。主动发送方式比较容易实现。被动接收数据, 需要在数据到达后才能回应, 具体实现起来需要一定的方法和技巧, 不同的方法达到的目的和效率不同。编程实现数据接收, 一般有两种方法:事件驱动法 (异步通信) 和查询法 (同步通信) 。事件驱动方式, 即:每当有端口状态改变、数据到达或错误发生时触发定义的事件, 通知应用程序做出相应的处理, 这种方法程序响应及时, 可靠性高。采用查询方式, 通过不断地去查询是否有数据接收等事件的发生来实现, 这种方法比较繁琐, 在通信比较频繁的情况下, 会占用应用计算机大量时间造成用户界面假死现象。
3.2 使用异步串行通信和CAPE-1200油井测控终端通讯的案例
该案例使用RS-232串口通讯方式跟CAPE-1200实现通讯, 持续提取油井油压、悬点载荷、回压状态三个工作状态。因需要连续提取数据所以采用异步通讯方式, 开发语言使用C#。
案例使用PdaSerialPort自定义类实现异步收发串口通讯, 通讯协议使用标准MODBUS, 应用程序通过使用PdaSerialPort类向连接在计算机串口上的CAPE-1200油井测控终端发出指令;CAPE-1200收到指令后, 准备数据上传回复。PdaSerialPort类中使用一个线程控制指令的发送, 发送指令存放在发送指令队列中, PdaSerialPort类收到回复数据后通过事件委托通知主程序, 主程序根据返回的参数值刷新显示内容。下面给出了采集过程的主要代码, 因篇幅有限通信中未使用校验手段。
串口通讯类:
///当该类发生错误时的委托处理程序
public delegate void ErrorEventHandle (string errorMessage, string errorTile) ;
///收到串口数据委托处理程序, 用户可自行处理串口数据
主程序:略…
4、结语
该案例根据所通讯设备特性做适当修改, 可以和所有支持标准MODBUS/RTU协议的设备通讯。系统所用开发环境为Microsoft Visual Studio 2005, 开发语言C#, 运行平台WINDOWSXP, 测试设备CAPE-1200油井测试终端。文中的Modbus协议和寄存器地址表因篇幅所限不能完全介绍, 详细说明可以参考Modbus通讯协议和CAPE-1200油井测控终端手册。
案例运行结果:油压:1.0悬点载荷:48回压:1.1
摘要:本文根据串行通讯的基本原理, 以PC与中亚石油CAPE-1200油井测控终端为案例, 详细讨论PC的串行通迅功能及在项目中实际应用。主要介绍如何使用PC完善的通讯功能完成各种实际应用, 指出了各种方法的优势和不足, 阐述了如何扬长避短、综合应用各种方法编程实现可靠而高效的串行数据收发。
关键词:异步串行通讯,通讯协议,MODBUS协议
参考文献
[1]C#编程从入门到精通.电子工业出版社.
[2]Modbus通讯协议.
串行通讯 第2篇
来源:中国一卡通网 作者:翁康静,邬冠华,徐长英 发布时间:2007-8-10 11:42:03 字体[大、中、小]
关键词:ic卡售饭系统 售饭机 pos机 消费系统 串行通信 售饭系统
摘 要:使用VB的通讯控件和多台单片机AT89C2051实现了IC卡售饭系统的串口通讯。重点介绍了上位机通讯系统中的发送接收程序,利用下位机串口工作方式完成多机通讯。IC卡售饭系统
IC卡售饭系统作为电子钱包进行消费(售饭),它代替了传统的用现金消费的方式,消费者只需预先充钱于消费卡中,买饭时由售饭员在售饭机上输入消费金额,售饭机认可后便完成消费,就餐者可方便地持IC卡在专用的POS售饭机上进行消费。IC卡的管理及窗口POS机的一切工作,包括控制、数据交换、管理和统计报表打印均由上位微机来控制完成。由此可知,上、下位机的高效及时通讯是至关重要的。
一个单位可能有多个食堂,一个食堂可能有多个售饭点,每个售饭点均设一个POS窗口机,再加上发卡机和增款机,这样整个IC卡售饭系统就形成了一台PC机对多台下位机的串行通讯系统,见图1。系统通讯原理
整个系统中,上位机为PC机,使用Windows98操作系统;下位机为AT89C2O51单片机,采用RS一485和RS一232标准接口与PC机的串行口连接。MAX485接口转换芯片将RS一232转换成RS一485协议后可进行远距离传送。由于各下位机共享串行总线,为避免冲突,每次通讯都由上位机开始,由上位机分配总线的使用权,同时下位机也可请求通讯以上报数据,但需等待上位机将总线使用权分配给它才能发送数据,因此每台下位机都需分配一个唯一的机号。
上位机的通讯编程
打开Visual Basic 6.0集成开发环境,创建一个标准EXE的工程项目并命名,完成这一步后在主窗体Forml中添加一个Textbox(文本框)和一个CommonButton(按钮)后,选择菜单项工程/部件将弹出一个对话框以选择添加控件(Controls)。选择项目中的Microsoft Comm Control 6.0项和Microsoft Common Dialog Control 6.0项,并在该选择框中打勾,将MSComm控件及CommonDialog控件加入到本项目中。这时工具栏将MSCommCommonDialog控件图标加入到本项目中,这时就可以将它们添加到程序主窗体中去。
由于IC卡售饭系统的上位机管理系统采用VB平台和数据库技术支持,因此要实现对串口的通讯可采用以下两种方法:采用Windows的API函数或利用VB的通讯控件。在这里笔者详细介绍后一种方法的实现步骤。
(1)通讯参数设置。下面为实例程序清单:
Private Sub Commandl Click()开始按钮With MSCom m1
. CommPort:2使用COM2(一般均使用COM2,有些Pc上COM1系统已用). Setting=“9600,N,8,1”设置通讯口参数
. InBufferSize:40设置MSComml接收缓冲区为40字节
. 0utBufferSize:2设置MSComml发送缓冲区为2字节
InputMode=comlnputModeBinary设置接收数据模式为二进制形式
. InputLen=1设置Input一次从接收缓冲读取字节数为1 . SThreshold=11设置Output一次从发送缓冲读取字节数为1 . InBuffer(:0unt:0清除接收缓冲区,outBufferC0unt一0清除发送缓冲区
MaxW=一99最大值赋初值
MinW=99最小值赋初值
W =0数据个数计数器清零(需事先定义)
. RThreshold一1设置接收一个字节产生OnComm事件
If PortOpen—False Then判断通讯口是否打开 . PortOpen一=True打开通讯口 If Err Then错误处理
MsgBox“串口通讯无效”
Exit Sub End lf End lf End With End Sub
(2)接收过程。数据的接收是一个从计算机串口缓存读取数据的过程。在VB6.0语言里,采用MSComm 事件驱动方式—— Mscomml—OnComm 事件处理,利用MSComm控件INPUT函数实现数据的接收。实例程序如下:
(3)发送过程。利用在VB6.0里的通讯控件MSComm 的OUTPUT 函数实现数据发送,程序如下:
在通讯过程中,为了使通讯双方步调协调一致,需要在程序中增加延时程序。在VB6.0中,一般调用Windows API的时间函数来实现延时功能。可以采用下述方法实现延时过程: 下位机的通讯
单片机中串行通讯的波特率可以程控设定。单片机的串行端121有2个控制寄存器,可用来设置工作方式、发送或接收状态、特征位、数据传送的波特率以及中断标志TI和RI。串行端口的数据寄存器SBUF为发送和接收共有,当满足条件时,向SBUF写入数据就启动发送过程;反之读SBUF就启动接收过程。下位机通讯程序流程图见图2。
参考文献:
[1] 朝青.单片机原理与接口技术[M].北京:北京航空航天大学出版社.1994.
[2] 范逸之,陈立元.Visual Basic与RS一232串行通信控制最新版[M].北京:中国青年出版社,2000.
串行通讯 第3篇
关键词: SerialPort;串行通讯;波特率
1 引言
PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS-232串行接口与外部设备进行通讯,是许多测控系统中常用的一种通信解决方案。
在Microsoft.Net技术广泛应用的今天人们采用了许多方法在Visual Studio.Net中来编写串口通讯程序:第一种方法是通过采用Visual Studio 6.0中原来的MSComm控件,这是最简单、最方便的方法,但需要注册;第二种方法是自己用API写串口通信;第三种方法是采用微软推出的最新版本Visual Studio 2005开发工具,NET Framework 2.0类库中包含的SerialPort类,方便地实现了所需要串口通讯的多种功能。本文着重讨论了Visual Studio 2005开发工具中SerialPort类的设计方法。
2 SerialPort类常用属性、方法和事件
2.1 命名空间
System.IO.Ports命名空间包含了控制串口重要的SerialPort类,该类提供了同步I/O 和事件驱动的I/O、对管脚和中断状态的访问以及对串行驱动程序属性的访问。
2.2 串口的通讯参数
①通讯端口号:
[PortName]属性获取或设置通信端口,包括但不限于所有可用的COM端口,该属性返回类型为String。
②通讯格式:
SerialPort类分别用[BaudRate]、[Parity]、[DataBits]、[StopBits]属性设置通讯格式中的波特率、校验位、数据位和停止位。
2.3 串口的打开和关闭
SerialPort类中打开关闭串口相应的是调用类的Open()和Close()方法。
2.4 数据的发送和读取
SerialPort类调用重载的Write和WriteLine方法发送数据,其中WriteLine可发送字符串并在字符串末尾加入换行符。读取串口缓冲区的方法有许多,其中除了ReadExisting和ReadTo,其余的方法都是同步调用,线程被阻塞直到缓冲区有相应的数据或大于ReadTimeOut属性设定的时间值后,引发ReadExisting异常。
2.5 DataReceived事件
DataReceived事件在接收到了[ReceivedBytesThreshold]设置的字符个数或接收到了文件结束字符并将其放入了输入缓冲区时被触发。
3 PC机与8051实现串行通讯需要解决的问题
3.1 TTL电平与RS232电平的转换
89C51单片机采用的是TTL电平且采用正逻辑[1],而PC机采用RS232与外部设备进行通讯,RS232采用负逻辑,因此MCS51单片机串行口与PC机的RS232接口相连进行通讯时必须进行电平的转换。通常采用MAX232电平转换芯片。
3.2 单片机与PC机通讯时波特率的设定
PC机与51单片机双方进行通讯时必须采用相同的波特率,PC机的波特率默认为9600b/s, 51系列单片机有两个定时/计数器,四种工作方式,一般用定时器工作于方式2(可重新装载的8位定时器/计数器)作为定时波特率发生器。因此单片机与PC机进行异步通讯时的波特率可由公式3.1得出:
其中SMOD是单片机电源控制寄存器(PCON)中的位7,开机(RESET)时,SMOD的设定值为0,亦可用指令“ANL PCON,#7FH”清除为0。fosc为单片机的晶振频率。根据需要的波特率即可得计数初值TH1。
4 单片机与PC机通讯时通讯协议的约定及部分初始化程序
在单片机与PC机的通讯中,单片机一般作为下位机负责从控制对象采集数据(如压力、流量等),上位机则进行现场可视化检测。传输数据采用二进制数据,上位机与下位机之间采用主从式通讯。以下给出单片机和VC# 环境下部分的通讯程序。
4.1 串口通讯协议约定
波特率为9600b/s,无奇偶校验位,传输的数据位为8位,停止位为1位,用串行口工作于方式1。单片机的晶振频率fosc=11.059MHz,定时器T1工作于方式2作为波特率发生器,根据计数初值的计算公式(3.1)可得计数初值TH1为0FDH 。
4.2 单片机的串行通讯程序
单片机串行通讯程序,给出了初始化程序:
ORG0000H
AJMP START;转到初始化程序
ORG0023H
AJMP PGUART ;转到串行中断服务子程序
START: MOVSP,#60H ;堆栈指针初始化
MOVP0,#0FFH ;端口初始化
MOVP1,#0FFH
MOVP2,#0FFH
MOVP3,#0FFH
MOVTMOD,#20H;定时器T1工作于模式2,自动重装载
MOVTH1,#0FDH;TH1、TL1初值为"0FDH",9600bps
MOVTL1,#0FDH
MOVSCON,#50H;串行口工作于方式1,允许接收
SETB TR1 ;启动定时器T1
SETB ES ;允许串行口中断
SETB EA ;开总中断
MAIN:...... ;主程序处理其他任务,等待串口中断
AJMP MAIN
PAUSE:...... ;串口中断服务子程序,接收处理数据
RETI
END
4.3 上位机的串行通讯程序
例:发送及接收数据的程序:
private void button1_Click(object sender, EventArgs e)
{
string a;
SerialPort Ser1 = new SerialPort("com1", 9600, Parity.None, 8, StopBits.One);
Try
{
Ser1.Open();
}
catch (InvalidOperationException ex)
{
MessageBox.Show(ex.ToString());
}
if (textBox1.Text == "")
{
MessageBox.Show("Err");
Ser1.Close();
}
else
{
a=textBox1.Text;
try
{
//p.WriteLine(a);
p.Write(a);
}
catch(InvalidOperationException ex)
{
MessageBox.Show(ex.ToString());
}
textBox2.Text = Ser1.ReadByte().ToString();
Ser1.Close();
}
}
5 结束语
单片机与上位机的通讯在工业现场中应用的比较广泛,本文对C#提供的串行通讯SerialPort类来实现PC机与51单片机的通讯进行了探讨。实践证明,这种方案是可行的,能保证双方通讯正常。
参考文献
[1]蔡朝洋.单片机控制实习与专题制作.北京航空航天大学出版社.
串行通讯 第4篇
上世纪70年代, 同时出现了串行通信和并行通信。经过时间的检验, 并行通信, 由于位同步问题和干扰问题已经逐步被淘汰。串行通信接口标准则经过实践的考验并得到了长足的发展, 演化为诸多串口通许标准, 如:USB、SAS、SATA、RJ-45 (以太网卡接口) 均来源于串行通讯①, 最初的串口标准RS232则是所有串口通讯的前身和基础。近年来随着物联网、智能家居、高性能单片机等技术和市场的发展, RS-232也是老树开花, 再次被广泛应用。本文首先对RS-232、RS485接口进行详细的说明, 然后说明他们之间的转换。最后对常见串行通讯技术做个简单的对比阐述供初学者借鉴。
二、RS-232接口
RS-232是最早出现的串行通讯接口, 也是其他串口通讯的基础。1970年由美国电子工业协会 (EIA) 联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定了用于串行通讯的标准, 该标准采用一个25脚的DB-25连接器。后来IBM的PC机将RS232简化成了DB-9连接器, 从而成为事实标准。虽然纯粹的RS-232接口已经少见, 但是许多的串口通讯技术保持了相同的时序和操作方法。
RS-232采取不平衡传输方式, 即所谓单端通讯。收、发端的数据信号是相对于信号地。典型的RS-232信号在正负电平之间摆动。RS-232是为点对点通讯而设计的, 其驱动器负载为3kΩ~7kΩ。所以RS-232适合本地设备之间的通信, 最大传输波特率为256000, 最大传输距离约15米, 传输速度随传输距离增大而减小。
在PC机上, 不管是unix (含linux) 系统还是windows系统, 均把串口通信进行了封装, 我们对串口的操作简化为文件操作, 只不过, 和普通文件相比, 它在打开文件后, 需要设定串口通讯参数, 并需要处理好串口读写的超时问题。通常在PC机上串口的读写由独立的线程完成, 在需要读写串口时, 读写线程启动, 对串口进行初始化, 然后循环关注串口, 当读到数据后, 产生消息通知主线程。
在单片机上, 情况相对复杂, 有的开发平台也进行了封装, 有的没有, 不管是否封装, 操作方法都不大相同, 需按照单片机或开发平台的数据手册执行。但是89C52兼容机均可以通过对串口寄存器的操作来完成的, 这个过程中的核心是以下几个问题:1、通讯模式设定;2、波特率发生器 (定时器) 的选择和设定;3、波特率的计算和设定;4、控制寄存器进行数据通讯。
通讯模式有4种:1、同步位移串行, 在该模式1帧信息8位, 即8位数据位;2、8位异步波特率可变, 在该模式1帧信息10位, 1个起始位, 8位数据位, 1个停止位;3、9位异步, 在该模式1帧信息11位, 1个起始位, 8位数据位, 1个可编程位, 1个停止位;4、9位异步波特率可变, 1帧信息11位同模式3。
需要特别说明的是由于信号的电平标准不同, 不能单片机的串口直接接在COM口 (即DB-9接口) 的对应针脚上, 必须通过电路转换。常见的转换芯片有MAX232芯片, 每个MAX232芯片可以完成两组DB-9到TTL的转换 (电路图可以参见MAX232 Data Sheet, 此处略) 。在实际应用中, 直接用COM口加转换芯片的情况并不多见, 更多的情况是用USB接口模拟COM口, 其另一端直接就是单片机所用的TTL电平信号。
三、RS-422和RS485接口
RS-422标准全称是“平衡电压数字接口电路的电气特性”, 它推出不久就发展了更高级的RS-485。它们相对于RS-232最大的优点有:首先是多机通讯, 一主多从的通讯方式, 允许一条总线上可以连接多达32个设备;其次大大延伸了通讯距离, 通讯距离从十几米延伸至上千米。再次是通许速率大大提高, 最高传输速率为10Mbps。另外, 由于其驱动电压也从25V降到6V, 这样也就延长了接口电路的芯片的寿命;最后是连线方式也大大简化, 从原来的9线, 变为两线制 (不含信号地。以前RS485也有四线制接法, 该接法为全双工, 但是只能实现点对点的通信方式, 现很少采用) 。由于PC机多数没有RS485接口, 在实际中RS485很少独立使用, 而是通过转换器将DB-9接口的RS-232转换成RS-485接口转换器, 采用屏蔽双绞线传输。RS-485其典型的连线方式如图1。
需要注意485总线必须要单点可靠接地。单点就是整个485总线上只能是有一个点接地, 不能多点接地, 因为将其接地是因为要将地线 (一般都是屏蔽线作地线) 上的电压保持一致, 防止共模干扰, 如果多点接地适得其反。另外在在低速、短距离、无干扰的场合可以不要匹配电阻, 相反必须有120欧的匹配电阻。
由于在一条总线上有多个设备, 为了防止多个设备同时发出信息而相互干扰 (撞包) , 一主多从时, 只能半双工通讯, 如果从机要上报信息, 只能等待主机轮询到该从机时, 才可以发送信息, 而主机发出的信息包所有从机都可接收到信息, 所以主机发出的信息包中要有从机地址码, 以便从机辨识发送给自己的信息包。
四、RS232、RS485和TTL之间的转换
RS232和RS485的时序是相同的, 只有电平标准不同, 所以只要通过转换电路将两者之间电平之间转换即可。转换电路见图2:
在这个电路中MAX232芯片将RS232转换为TTL信号, MAX485芯片将串口TTL信号转换为RS485标准。
五、其他常见串口标准
其他和单片机相关的常见的串口通讯技术和标准有:I2C、CAN、SPI/QSPI、USB、TTL等。其中TTL不是串行通讯技术, 它是计算机处理器控制的设备内部, 各部分之间通信的电平标准, +5V等价于逻辑“1”, 0V等价于逻辑“0”。USB作为PC机最常用的外设接口, 可以在PC机端模拟串口, 但是其另一端不是标准RS232口, 而是TTL信号。在上边提到的技术中I2C、CAN由于时序不同, 所以无法通过电路转换成RS232标准。
在通讯距离上I2C和TTL通常是一块主板上的不同芯片间的通讯, SPI/QSPI和USB通常是在几米的通讯距离;CAN控制器局域网属于现场总线的范畴, 是一种有效支持分布式控制系统的串行通信网络。通信距离最远可达10KM (速率低于5Kbps) 速率可达到1Mbps (通信距离小于40M) , 可用于汽车、舰船上的设备控制。
参考文献
[1]http://baike.baidu.com/view/1060187.htm
[2]http://baike.baidu.com/link?url=w4227e1zf PIEl P21j3odp8_p XB5VW3ak Rp ZMVn Cb2Qk IYhq NH1Rlvmjzl GBJE_ERTBIUYv Zwr Jv VKPWK3TLIZqxnu EACSc Ud Cps7pp EC2x TVu T8j Om5t ERu2bbhj I-Tr Oa3633-khn TIVJd DMMp Ifq
变频器与上位机串行通讯程序设计 第5篇
1.1 TD2000变频器的安装和使用
TD2000系列通用变频器是艾默生网络能源有限公司自主开发生产的高品质多功能低噪音变频器,其丰富的功能完全满足各种不同的、需求紧凑的结构设计,可以灵活地安装先进的控制算法空间电压矢量控制技术,停电再启动自动电压调整,死区补偿自动转差补偿节能运行内置PI,保证高精度的控制要求按照国际标准进行设计和测试,保证产品的可靠性。外部接口如图1和图2所示。
变频器安装在室内通风良好的场所,一般应垂直安装。选择安装环境时应注意以下事项:环境温度要求在-10℃~40℃的范围内,如周围温度为40℃~50℃时要取下盖板或打开安装柜前门,以利于通风散热;安装在湿度低于90%无水珠凝结的场所,不要安装在多尘埃、金属粉末的场所安装在无腐蚀性、爆炸性气体场所;安装在振动小于5.9米/秒2(0.6g)的场所;安装在无阳光直射的场所。
关于电动机及机械负载,与工频运行比较,TD2000系列变频器为电压型变频器,输出电压是PWM波,有一定的畸波,因此在电机的温升噪声和振动使用时略有增加。恒转矩低速运行,变频器带普通电机长期低速运行时,由于散热效果变差,输出转矩额度有必要降低,如果需低速恒转矩长期运行,必须选用特殊的变频电机。电机的电子热保护值,与变频器匹配的电机如果按要求选配,变频器对电机能实施热保护,如果匹配电机与变频器额定值不符合,务必调整保护值,以保证电机的安全运行。在50Hz以上频率运行,超过50Hz运行除了考虑振动噪音增大外,还必须确保电机轴承及机械装置的使用速度范围,务必事先查询。机械装置的润滑、减速箱及齿轮电动机等需要润滑的机械装置长期低速运行时,由于润滑效果变差可能带来损坏,务必事先查询。负转矩负载,对于如提升负载之类的场合常常会有负转矩发生,变频器常会产生过流或过压故障而跳闸,此时应该考虑选配制动组件。往复式负载,变频器在驱动活塞式往复性负载时请注意输出电流会有不稳定现象,长期低频运行时情况更突出推荐20Hz以上频率运行,负载装置的机械共振点,变频器在一定的输出频率范围内可能会遇到负载装置的机械共振点,必须通过设置跳跃频率来避开。
用操作面板可对变频器进行运转、功能参数设定、状态监控等操作。
1.2 变频器的上位机监控
变频器的上位通信控制指的是用上位机工控机、业PLC机、触摸屏与变频器链接,进行传送变频器开机、关机、设定频率、读取参数等动作的命令代码,遵守通信协议。
变频器内部的基本构成:变频器内置PID调节器和输出24VDC电源,方便组成最简单的内部闭环控制系统,带自动电压提升功能,能在交流304V~456V电压范围内正常工作。并且内含简易PLC,配合内置计数器。外接端子可编程设计,利于用户灵活运用。并且带有速度脉冲反馈输入接口,可以满足高端精度速度控制的要求。频率设定信号与输入频率对应关系的灵活设置,可以与通用变频器和调节器组成正、反两种闭环系统。
2 利用力控组态软件实现变频器上位机监控
2.1 I/O设备组态
I/O设备组态是连接外部设备的关键部分。I/O驱动程序负责力控与控制设备的通信。它将I/O设备寄存器中的数据读出后,传送到力控的数据库,然后在界面运行系统的画面上动态显示。
串口叫做串行接口,也称串行通信接口,按电气标准及协议来分,包括RS-232-C、RS-422、RS485、USB等。RS-232-C、RS-422与RS-485标准只对接口的电气特性进行规定,不涉及接插件、电缆或协议。串口形容一下就是一条车道,而并口就是有8个车道同一时刻能传送8位(一个字节)数据。但是并不比串口快,由于8位通道之间的互相干扰,传输时速度就受到了限制。而且当传输出错时,要同时重新传8个位的数据。串口没有干扰,传输出错后重发一位就可以了。
2.2 上位机监控的运行
首先,将外部设备链接好,把变频器上位机监控的参数设置好。
然后,打开上面建立的变频器上位机监控的工程,单击“运行”,可以通过控制界面对变频器启停、频率设置等进行上位机监控。
注意:操作的时候一定不能过快,因为电机启动停止时需要时间,如果操作过快,会对电机损害,而且监控也会出错立马停止。
3 结语
串行通讯 第6篇
数据采集是工业控制领域最为常见的一种技术手段, 数据采集为技术分析和控制策略提供了依据。随着工况复杂程度的提高, 数据采集也面临着数据类型不断增加, 对采集速度要求不断提高的问题。
智能仪表是随着80年代初单片机技术的成熟而发展起来的, 现在世界仪表市场基本被智能仪表所垄断。究其原因就是企业信息化的需要, 企业在仪表选型时其中的一个必要条件就是要具有联网通信接口。最初是数据模拟信号输出简单过程量, 后来仪表接口是RS232接口, 这种接口可以实现点对点的通信方式, 但这种方式不能实现联网功能。随后出现的RS485解决了这个问题。
RS-485是串行通讯的首选, 数据最高传输速率为10Mbps3。RS-485接口具有良好的抗噪声干扰性、长的传输距离和多站能力等特点, 广泛的应用到各种工业场合中。RS485接口组成的半双工网络, 一般只需二根连线, 所以RS485接口均采用屏蔽双绞线传输。RS-485接口的最大传输距离标准值为4000英尺, 实际上可达3000m, RS485和RS232的基本的通讯机理是一致的, 它的优点在于弥补了RS232通讯距离短, 不能进行多台设备同时进行联网管理的缺点。
本文介绍的系统针对需求, 利用串行通讯优点, 采用成熟产品, 设计了一套串行通讯系统及通讯方法。
2 控制系统结构及方法
2.1 R S485介绍
接口:RS485采用差分信号负逻辑, +2V~+6V表示“0”, -6V~-2V表示“1”。RS485有两线制和四线制两种接线, 四线制只能实现点对点的通信方式, 现很少采用, 现在多采用的是两线制接线方式, 这种接线方式为总线式拓朴结构在同一总线上最多可以挂接32个结点。在RS485通信网络中一般采用的是主从通信方式, 即一个主机带多个从机。很多情况下, 连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。而忽略了信号地的连接, 这种连接方法在许多场合是能正常工作的, 但却埋下了很大的隐患, 这有二个原因:⑴共模干扰问题:RS-485接口采用差分方式传输信号方式, 并不需要相对于某个参照点来检测信号, 系统只需检测两线之间的电位差就可以了。但人们往往忽视了收发器有一定的共模电压范围, RS-485收发器共模电压范围为-7~+12V, 只有满足上述条件, 整个网络才能正常工作。当网络线路中共模电压超出此范围时就会影响通信的稳定可靠, 甚至损坏接口。⑵EMI问题:发送驱动器输出信号中的共模部分需要一个返回通路, 如没有一个低阻的返回通道 (信号地) , 就会以辐射的形式返回源端, 整个总线就会像一个巨大的天线向外辐射电磁波。
由于PC机默认的只带有RS232接口, 有两种方法可以得到PC上位机的RS485电路: (1) 通过RS232/RS485转换电路将PC机串口RS232信号转换成RS485信号, 对于情况比较复杂的工业环境最好是选用防浪涌带隔离珊的产品。 (2) 通过PCI多串口卡, 可以直接选用输出信号为RS485类型的扩展卡。
电缆:在低速、短距离、无干扰的场合可以采用普通的双绞线, 反之, 在高速、长线传输时, 则必须采用阻抗匹配 (一般为120Ω) 的RS485专用电缆 (STP-120Ω (for RS485&CAN) one pair 18 AWG) , 而在干扰恶劣的环境下还应采用铠装型双绞屏蔽电缆 (ASTP-120Ω (for RS485&CAN) one pair 18 AWG) 。在使用RS485接口时, 对于特定的传输线路, 从RS485接口到负载其数据信号传输所允许的最大电缆长度与信号传输的波特率成反比, 这个长度数据主要是受信号失真及噪声等影响所影响。理论上, 通信速率在100Kpbs及以下时, RS485的最长传输距离可达1200m, 但在实际应用中传输的距离也因芯片及电缆的传输特性而所差异。在传输过程中可以采用增加中继的方法对信号进行放大, 最多可以加八个中继, 也就是说理论上RS485的最大传输距离可以达到9.6公里。如果真需要长距离传输, 可以采用光纤为传播介质, 收发两端各加一个光电转换器, 多模光纤的传输距离是5~10公里, 而采用单模光纤可达50公里的传播距离。
布网:网络拓扑一般采用终端匹配的总线型结构, 不支持环形或星形网络。在构建网络时, 应注意如下几点:
采用一条双绞线电缆作总线, 将各个节点串接起来, 从总线到每个节点的引出线长度应尽量短, 以便使引出线中的反射信号对总线信号的影响最低。有些网络连接尽管不正确, 在短距离、低速率仍可能正常工作, 但随着通信距离的延长或通信速率的提高, 其不良影响会越来越严重, 主要原因是信号在各支路末端反射后与原信号叠加, 会造成信号质量下降。
应注意总线特性阻抗的连续性, 在阻抗不连续点就会发生信号的反射。下列几种情况易产生这种不连续性:总线的不同区段采用了不同电缆, 或某一段总线上有过多收发器紧靠在一起安装, 再者是过长的分支线引出到总线。
总之, 应该提供一条单一、连续的信号通道作为总线。
在RS485组网过程中另一个需要注意的问题是终端负载电阻问题, 在设备少距离短的情况下不加终端负载电阻整个网络能很好的工作但随着距离的增加性能将降低。理论上, 在每个接收数据信号的中点进行采样时, 只要反射信号在开始采样时衰减到足够低就可以不考虑匹配。但这在实际上难以掌握, 美国MAXIM公司有篇文章提到一条经验性的原则可以用来判断在什么样的数据速率和电缆长度时需要进行匹配:当信号的转换时间 (上升或下降时间) 超过电信号沿总线单向传输所需时间的3倍以上时就可以不加匹配。
一般终端匹配采用终端电阻方法, RS-485应在总线电缆的开始和末端都并接终端电阻。终接电阻在RS-485网络中取120Ω。相当于电缆特性阻抗的电阻, 因为大多数双绞线电缆特性阻抗大约在100~120Ω。这种匹配方法简单有效, 但有一个缺点, 匹配电阻要消耗较大功率, 对于功耗限制比较严格的系统不太适合。另外一种比较省电的匹配方式是RC匹配。利用一只电容C隔断直流成分可以节省大部分功率。但电容C的取值是个难点, 需要在功耗和匹配质量间进行折衷。还有一种采用二极管的匹配方法, 这种方案虽未实现真正的“匹配”, 但它利用二极管的钳位作用能迅速削弱反射信号, 达到改善信号质量的目的, 节能效果显著。
最近两年一些公司基于部分企业信息化的实施已完成, 工厂中已经铺设了延伸到车间每个办公室、控制室的局域网的现状, 推出了串口服务器来取代多串口卡, 这主要是利用企业已有的局域网资源减少线路投资, 节约成本, 相当于通过tcp/ip把多串口卡放在了现场。
2.2 数据采集系统
本数据采集系统包括控制模块、采集模块和电源模块三部分。将控制模块和采集模块的485通讯线接到一起。控制模块采用ADAM4500。ADAM4500是工业控制场合普遍适用的可编程控制器, 为各种复杂的工业控制提供了一个良好的与IBM PC机兼容的硬件平台。ADAM4500是一个紧凑的计算机系统, 运行DOS操作系统, 包括一个80188CPU、256 KB Flash ROM、256 KB SRAM, 此外还配备两个通讯通道COM1、COM2和一个程序下载通道。ADAM4500可以运行各种高级语言, 如C或C++, ADAM4500支持RS232和RS484两种通讯方式。根据现场信号的情况选择采集模块的种类和数量, 根据现场对采集速度的要求设置采集模块的波特率。设置完成后, 将数据输入设备如现场各种传感器等连接到对应的采集模块上进行采集。采集到的数据可以通过485通讯显示软件在上位机上显示。
数据采集装置的装置结构图如图1所示:主控制器、模拟量输入模块、模拟量输出模块、数字量输入模块、数字量输出模块的+VSS端与24V直流电源的+VSS端;上述所有设备的GND端也连接到一起;主控制器Data+与Data-端通过双绞线连接模拟量输入模块、模拟量输出模块、数字量输入模块、数字量输出模块的Data+与Data-端, 完成通讯线路的连接;为接线方便, 数据采集模块的输入端口分别连接数据采集端子, 数据采集端子用来连接相应的受控设备。
为除主控制器之外的所有采集模块设定唯一的网络通讯地址, 可以灵活的访问任河采集模块, 利用应用程序使其完成特定的工作。可以对ADAM4500的通讯模式进行设置, 如通道的选择、波特率的设定。
模拟量输入模块ADAM4117是一种4通道模拟量采集模块, 其可以采集的信号种类有:+/-1V、+/-2.5V、+/-5V、+/-10VV、+/-100m V、+/-500m V的电压信号;+/-20m A、+4~20m A的电流信号, 需要+5V电压驱动;ADAM4117支持9600~57600之间的通讯波特率。
模拟量输出模块ADAM4024具有12位的精度, 可以输出的电流信号和电压信号:0~20m A、4~20m A电流信号, ±10V的电压信号, 支持9600~57600之间的通讯波特率。
数字量输入模块ADAM4150是8通道隔离的数字量输入模块, 有两种工作模式, 模式0的门限电压是+1V, 模式1的电压范围为+3.5~30V, 支持9600~57600之间的通讯波特率。
数字量输出模块ADAM4168是8通道数字量输出模块, 可以输出开关量控制受控设备, 支持9600~57600之间的通讯波特率。
电源为直流稳压电源, 提供24V直流电压。
系统的控制方法通过控制程序实现, 方法如下:
系统启动, 若启动失败则停机。系统启动后, 首先检测与其连接的外接设备是否存在起始便没有置零现象, 若有, 则启动报警, 等待人工将其置零;若没有, 系统开始扫描模拟量输入端口, 采集模拟量数据。若数据超过了允许范围, 则将其去除;没有则根据数据大小形成模拟量输出数据, 并调用模拟量输出函数进行模拟量输出。若在输出是系统发生异常, 则进行异常处理, 并继续扫描数字量输入端口, 采集数字量数据。若采集数字量时发生异常, 则进行异常处理并形成数字量数据, 调用数字量输出函数。若在输出是系统发生异常, 则进行异常处理, 程序回到扫描模拟量输入端口状态, 继续以上过程的循环。
控制流程如图2所示:
3 系统实施效果
系统具有良好的扩展性, 可根据实际应用场合增加或较少数据采集控制器, 并为其分配地址, 使用起来较为方便。实际应用时将波特率设置为115200, 可以满足绝大多数场合对采集速率的要求。若传输距离超过1000m, 需在两端加终端电阻, 阻值200欧姆, 以增强系统的抗干扰性能。
摘要:串行数据采集具有成本低、扩展性好、易于维护等特点。本文介绍了一种RS485串行数据采集系统及方法, 适用于复杂工业场合的数据采集工作。
关键词:智能控制,微型ROV,定位,自主回归
参考文献
[1]杨国霞.采用消息方式处理串口与主程序间的通讯[J].河北省科学院学报, 2001, 18 (4) :220-223.
[2]龚建伟, 熊光明.串口通信编程实践[M].北京:电子工业出版社, 2005:169-195
串行通讯 第7篇
万立氧空分装置是2008年辽化公司20万吨环氧乙烷/乙二醇改造的配套项目,该装置仪控系统采用了先进的Honeywell PKS集散控制系统来实现对整个装置的各系统及主要设备的工艺参数的监控,并实现各主要操作阀门、切换阀门的自动控制或遥控操作,以及必要的联锁保护措施。氮压机选用Ingersoll-rand的CENTAC 3C70MX5N2型压缩机,该压缩机配置独立的控制系统CMC控制器,为了有效的监控氮压机的运行参数,我们利用Modbus协议实现了Honeywell PKS集散系统与Ingersoll-rand CMC可编程序控制器之间串行通讯。
2 Modbus协议简介
Modbus是Modicon公司于1979年提出的一种通信协议,经过多年的实际应用,已经成为一种应用于工业控制器上的标准通信协议。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了控制器请求访问其它设备的过程,以及怎样侦测错误并记录,它制定了消息域格局和内容的公共格式[5]。当在Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。标准的Modbus口是使用RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。
2.1 Modbus报文
如图1所示,Modbus通信使用主从技术,即仅设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、错误检测域。从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和错误检测域。如果在消息接收过程中发生错误,或从设备不能执行其命令,从设备将建立错误消息并把它作为回应发送出去[2]。
2.2 Modbus传输方式
Modbus协议有两种传输模式ASCII(美国标准信息交换代码)或RTU(远程终端单元)。它定义了在这些网络上连续传输的消息段的每一位,以及决定怎样将信息打包成消息域和如何解码。用户选择想要的模式,包括串口通信参数(波特率、校验方式等),在配置每个控制器的时候,在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。ASCII模式通信的主要优点是字符发送的时间间隔可达到1秒而不产生错误。RTU模式通信的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据[3]。
2.3 错误检测方法[4]
标准的Modbus串行网络采用两种错误检测方法。奇偶校验对每个字符都可用,帧检测(LRC或CRC)应用于整个消息。它们都是在消息发送前由主设备产生的,从设备在接收过程中检测每个字符和整个消息帧。
用户要给主设备配置一预先定义的超时时间间隔,这个时间间隔要足够长,以使任何从设备都能作为正常反应。如果从设备测到一传输错误,消息将不会接收,也不会向主设备作出回应。这样超时事件将触发主设备来处理错误。发往不存在的从设备的地址也会产生超时。
3 CMC控制器
CMC控制器是Ingersoll-rand CENTA C3C70MX5N2型压缩机随机配置的可编程序控制器,用来管理氮压机各种压力的控制和监控功能,以及控制辅助设备,如主电机启动器,润滑油加热器和预润滑油泵。其功能如下:
·多功能LED显示屏显示数据和工作状态。
·完成多种性能控制:卸载,调制和自动-双重工作方式。
·先进的喘振监测与控制。
·高电流限制,用于主驱动电机保护。
·快速指示和事件纪录,有助于确定压缩机跳闸的根本原因。
CMC控制器提供RS422/RS485串行通讯接口,通过MODBUS协议与具有RS422/485端口的系列装置通信,以适应远程遥控和监控的需要。
利用Modbus协议,我们采用RTU通讯模式,把CMC控制器作为从设备,设备地址设置为2,通讯波特率为9600,校验方式为奇校验,通讯方式为全双工。
4 PKS系统的通讯功能[1]
图2硬件配置图
PKS系统是Honeywell公司推出的新一代DCS系统,全称为Experion Process Knowledge Solution System,它支持多种类型的控制器通讯,例如Modicon PLCS,Honeywell 9000系列和Allen-Bradley,并可以灵活的采用多种连接方式。如果控制器本身带网络接口,可以直接连接到网络上,如果控制器带有串口,可以通过“终端服务”(terminal sever)连接到网络上。一个“终端服务”允许多个控制器同时连接到网络上,并提供多种的连接接口RS-232,RS-422,RS-485。所谓“终端服务”其实质就是Modbos协议。我们利用“终端服务”配置方式实现了Honeywell PKS集散系统与Ingersollrand CMC可编程序控制器之间串行通讯。如图2所示。
4.1 硬件说明
串行接口模件(SIM)是安装在PKS系统标准卡槽上的双宽度I/O模件,它的功能是实现通过FTA(现场端子板)连接串行接口模件(SIM)的现场设备与PKS控制器之间通讯的桥梁。串行接口模件可以提供与单FTA电源适配器连接的两个FTA通讯的两个串口的双向通讯接口,它不存储和保持任何现场I/O设备的组态数据和实时数据,它只在与它相连接的现场设备与控制器之间传送数据参数。
FTA采用插接模件根据现场设备的需要选用指定的串行接口,共有两种标准的FTA产品。
·MU-TSIM12 Modbus型FTA提供点对点RTU EIA-232(RS-232)或EIA-422/485(RS-422/485)多点通讯接口。
·MU-TSIA12 Allen-Bradley(A-B)型FTA提供一个EIA-232(RS-232)通讯接口用于DF1通讯协议的A-BPLC-2,PLC-3,PLC-5等现场设备。
在此我们选用第一种产品
一个SIM卡可带两个FTA接线端子板(即FTA A,FTAB图2),由单独电源模块供电,每个FTA接线端子板通过屏蔽双绞通讯线与第三方设备连接。需要注意各通讯设备以总线方式接入(即相互串连起来最后接入FTA端子上),当通讯距离超过100米或干扰很强时两端均应加上120欧姆电阻,连接第三方通讯设备到FTA端子的最大接线长度不应超过300米,如超过300米应采用信号中继器或放大器,每个FTA接线端子板最多可接入的设备为15个。
4.2 软件说明
如图3所示。PKS系统组态工具中提供一种SIM I/O模件功能块来实现将一个SIM组态并分配给一个控制器。当SIM功能块一旦指派并下装到指定的控制器,SIM和控制器之间便可以建立通讯关系,但这并不意味着SIM和现场设备也建立了通讯关系,为了与现场设备建立起通讯关系必须还要组态、指派下装串行接口通道阵列功能块(SI)到CM(控制模件)。SI阵列通道功能块有三种:
Numeric(SINUMARRCH):接收/发送数值型量,包括整数、浮点数;
Flag(SIFLAGARRCH):接收/发送布尔量,即标志位;
Text(SITEXTARRCH):接收/发送字符型量。
4.3 组态说明(以SINUMARRCH功能块为例)
(1)每个SIM卡有32个软通道(Channel),其中0~1 5通道与连接在FTA“A”板上的第三方设备的进行通讯,而16~31通道与通道与连接在FTA“B”板上的第三方设备的进行通讯。当只有1个FTA板时,那么这块F T A板必须配置成FTA“A”使用(即按1图将FTA接到Power Adapter的“Channel A”上),且只能使用0~15通道。
(2)Control Builder中SI通讯功能块(软通道类型)有三种:
对于一个“SINUMARRCH”功能块(即一个软通道),可接收/发送最多16个32位浮点数或32个16位整型数。
(3)组态
具体组态见图4。
Serial Link Device Address:为设备地址,即Modbus ID;
Starting Element Index:为接收/发送数据的起始地址,此为第三方厂家提供的,是modbus通讯寄存器首地址,1个寄存器地址存储一个16位二进制数;
Number of Numeric Value:接收/发送的数据的个数。
其中Starting Element Index的设置也包含了接收/发送数据的类型,这是通过其最高位的数字来识别的(如图4中的Starting Element Index设置为20020,其最高位数字为2,表示接收/发送的数据类型为可读写的32位浮点数)。
这里需要注意的是一个SINUMARRCH块(SIFLAGARRCH或SITEXTARRCH)只能设置为一种数据类型,且接收/发送数据的地址必须是连续的。故Number of Numeric Value这一项设置的值是从起始地址开始连续存储的数据的个数;如果第三方设备发送/接收数据的Modbus存储地址是放在不连续的几个地址段上,那么就必须用多个SINUMARRCH块来接收不同地址段的数据。
图4中右侧的Auxiliary Config Data的设置,仅需要配置第3和4行即可,如图4中红圈所示(图4红圈中配置表示采用串行485通讯方式、通讯波特率为9600、校验方式为奇校验)。
5 结束语
目前,石油天然气生产装置中,普遍存在着DCS与其他多个专用控制系统同时使用的情况,这些专用控制系统包括PLC、数据采集器和各种智能仪表。若将多个系统融合成一个整体,使所有监视、控制都在DCS上进行,就涉及DCS与其他专用控制系统的通讯问题。目前,Modbus协议是应用最为广泛的一种形式,需特别注意的是:在Modbus网络上传输方式和串行参数(波特率、校验方式等)对各装置的设置必须是相同的。
摘要:本文主要通过讨论Honeywell PKS集散系统与Ingersoll-rand CMC可编程序控制器之间实现串行通讯所需的Modbus协议,硬件配置,软件组态以及连线,来说明用Modbus协议实现DCS与PLC之间串行通讯的一般方法及注意事项。
关键词:Modbus协议,PKS系统,CMC控制器
参考文献
[1]Honeywell.Experion PKS Serial Interface ModuleImplementation Guide.EP-DCX143,R210,2004,10:18-45.
[2]温照方,冯建呈.基于Modbus协议的DSP与PLC通信实现研究[J].实验室研究与探索,2008,27(9):27-28.
[3]彭兰,李松柏.Modbus通讯协议在空气压缩机监控系统中的应用[J].金属材料与冶金工程2007,35(3):41-43.
[4]周铭,刘晓军,王箭.Modbus协议在CENTUM CS系统中的应用[J].自动化与仪器仪表,2008,(2):51-53.
串行通讯 第8篇
汽车安全气囊作为汽车行驶过程的第一重要安全部件, 对其生产过程的可靠性以及质量控制研究即已成为近年来的研讨热点。通常, 一条汽车安全气囊装配线多会由若干个装配或检测工位计算机, 以及一台数据库服务器工位计算机组合设计而成[1]。其中, 每个工位计算机可能和本工位的条码扫描器、PLC、电动螺栓拧紧机和专用电气检测仪表等多种串行设备进行广泛互连, 可实现部件品种纠错及工序间顺序控制等功能;进一步地, 还可记录操作人员信息、机械或电气等检测参数信息, 并存入SQL数据库实现产品追溯功能。但是, 如果计算机上的监控软件均采用组态软件时, 却会由于站点数量较多, 而使得成本颇高, 同时组态软件还存在着对数据库支持功能不足等缺陷。基于此种情况, 经过分析可知, 应用VB等高级语言设计程序仍然是比较常用的方法之一。但是由于设计者技术等方面的原因, 该类应用程序普遍存在可靠性差, 后续维护困难等问题, 特别是在与其它底层设备, 如PLC通讯时, 常会由于通讯错误而引发系统死机或操作反映延迟等现象。本文即针对这一状况, 提出了一种采用内存共享技术的解决方案[2], 并以上位计算机与S7-200 PLC进行串行通讯为例进行了仿真验证, 而且取得了良好的应用效果。
1 采用内存共享技术的通讯原理
多数情况下, 普通用户会将通讯子程序嵌入到主程序中, 这样当通讯发生错误, 或通讯返回数据需要时间较长时, 系统将会发生死锁或停顿现象, 严重时还会影响操作界面程序的正常运行。为此, 本文采取了一种利用公共数据区交换数据的方法, 将通讯程序和主程序分成两个独立的可执行文件, 并且通讯程序位于后台工作, 而主程序则位于前台。采用这种方法的优点在于通讯程序和人机界面及其它控制程序、也就是主程序是完全分离的, 即使通讯程序出现暂时的死锁现象, 也不致影响主程序的正常运行, 从而提高了软件的可靠性和可操作性。同时, 由于Win32是一个基于页式虚拟内存的操作系统, 每个进程只能访问自己的虚拟内存页面空间, 若要实现这种公共数据区的预设功能, 就要利用内存映射文件的概念。
内存映射文件技术是WINDOWS内存管理的一个重要组成部分。当一个应用程序启动时, 系统打开该应用程序的.exe文件, 确定该应用程序的代码和数据规模, 系统也随之保留一个地址空间的区域, 并指明与该区域相关联的物理存储器就是.exe文件本身, 这一过程可称为内存文件映射, 具体来说就是系统装载.exe文件, 并将其映射到进程地址空间的过程。如果使两个或多个进程映射同一文件映射对象的视图, 那么就将共享磁盘上同一文件或者物理磁盘的同一页面, 这样当一个进程将数据写入另一个共享文件映射对象的视图时, 其他进程可以立即在其对应视图中查看数据的变化, 从而实现了进程间内存级的高速数据传输[3], 这一过程如图1所示。
需要指出的是, 共享文件可以是一个磁盘文件, 也可以是一个物理内存区域, 或一个虚拟磁盘区域。为了实现高速交互, 一般只使用物理内存或虚拟磁盘文件。另外, 对每一个通讯程序, 根据数据类型和应用要求, 可以设置多个共享文件映射对象。
2 内存映射文件的使用步骤
VB本身不提供内存映射文件操作功能, 此时需要调用WINDOWS提供的API函数实现, 且将执行下列操作步骤[2,3]:
(1) 创建一个内存映射文件。用函数Create_File Mapping () 在主程序中创建一个文件映射内核对象, 例如:
Long Mapping Handle=Create File Mapping (&HFFFFFFFF, 0, PAGE_READWRITE, 0, 256, “map”) 即表示创建了一个可读写的、256字节、且名字为“map”的内存映射文件。同时, 为了实现快速数据传输, 设置第一个参数为&HFFFFFFFF, 即表示在物理内存上创建对象。通过调用本函数就可获得文件映射内存对象句柄。
(2) 在创建文件映射对象后, 主程序调用Map View Of File () 函数映射到本程序的地址空间内, 例如:
Long Maping Address=Map View Of File (Mapping Handle, FILE_MAP_WRITE, 0, 0, 0)
(3) 通讯程序访问共享内存对象时, 需要通过内存对象名调用Open File Mapping () 函数, 以获取共享内存对象的句柄。例如:
Long Mapping Handle=Open File Mapping (FILE_MAP_WRITE, False, "map")
(4) 如果通讯程序成功获得了共享内存对象的句柄, 也需要执行 (2) 的操作来获取映射对象视图指针。
(5) 主程序或通讯后台程序利用 (2) 返回的映射对象视图指针Maping Address, 采用Copy Memory () 函数即可实现对该空间的访问, 具体可参见实例代码部分。
当完成对内存映射文件的使用时, 需要执行如下步骤将其彻底清除。具体步骤为:
(1) 调用Unmap View Of File () 从进程地址空间中撤销文件映射内核对象的映像。
(2) 调用Close Handle () 关闭文件映射内核对象。
3 PC与PLC的串行通讯技术
VB中通常采用了MSComm控件以实现工位PC与PLC等底层设备的交互通讯。MSComm控件的实用性强、且功能完善, 同时更为应用程序提供了通过串行接口收发数据的简便方法[4]。
MSComm控件提供了两种处理通信的方式。一种是事件驱动方式, 当有字符到达或发生变化时, MSComm控件都将触发On Comm事件。事件驱动方式的优点就是程序响应及时, 但由于接收一个完整信息却需多次中断, 如此则不仅降低了程序的执行效率, 而且也增加了出错的可能性;另外一种即是查询方式, 通过定时或延时查询MSComm控件的某些属性 (比如Comm Event和In Buffer Count属性) 值是否发生变化, 以此来选择并确定相应的处理程序。这种方式的优点就在于可以由用户控制通讯过程, 尤其当程序空闲较多时多采用这种方式。
本文将每个通讯过程设计成独立的通讯程序, 每一通讯程序将采用查询方法来实现和底层设备的通讯过程, 再通过各自定义的公共数据区而与主程序实现数据交换。下面即可以与西门子的S7-200PLC的MODBUS通讯方式为例, 介绍通讯程序的设计, PLC侧的MODBUS通讯程序则利用西门子公司所提供的库函数[5]。
具体地, 通讯程序的一次通讯流程即如图2所示, 实际程序中, 每次通讯过程均由定时器定时触发。
由图2可知, 通讯程序设置定时器定时向通讯对象 (如PLC) 发出读信息命令, 并置循环计数器n=0、再休眠 (延时) 一定时间间隔后, 即进入读取接收信息死循环。程序首先读取缓冲区接收字符长度 (In Buffer Count) 信息, 若该值不为零, 说明数据已经收到, 接收后分解数据, 同时根据接收到的功能号或校验结果, 判断接收是否正确。若正确, 就将该数据更新标志G_Shr PLC.b Flag置为1, 且更新数据G_Shr PLC.n Ddata, 并调用Write To Shared Memory () 存入公共数据区 (详情参见程序代码) ;若不正确则丢弃。若In Buffer Count值为零, 说明没有接收到数据, 进行空循环, 再次读取In BufferCount信息, 并使空循环计数器n加1, 当n超过设定次数 (如10次) 时, 即预定为接收失败, 将跳出接收死循环。
采用如上方法可以人工控制程序流程, 避免出现死循环现象, 而且需要根据读信息命令的内容, 调节延时间隔, 即可以实现正确的接收过程。
而对于通信主程序来说, 也是由相同定时间隔的定时器触发定时读取公共区的数据, 再根据数据更新标志G_ShrPLC.b Flag来判断是否进行更新显示或控制等操作, 由此可见数据更新标志在主程序和通讯子程序之间起到一个同步作用, 详细流程则如图3所示。此外, 对于向PLC下发控制命令, 则采取相反的流程。
4 部分程序代码
在此, 给出内存映射文件的部分实例代码, 具体则如下所示。
5 结束语
将主程序与PLC等通讯程序分离, 同时利用共享内存技术实现程序间数据的快速交换, 并且充分利用Windows系统自身的多任务调度机制, 得到的监控程序具有通讯可靠、界面操作流畅等优点。应用时由主程序调用SELL () 启动其它通讯程序, 并设其为后台运行方式。本方法可用于研制的汽车安全气囊装配生产线上, 而且通过在企业的实际应用, 系统已完全达到了设计目标, 获得了良好的应用效果。
摘要:VB由于具有强大的界面生成能力及灵活的数据库操作功能, 是上位软件的主要编程工具之一, 在很多场合领域得到了应用。然而, 直接采用VB编程的主要问题是可靠性较差, 特别是在与其它低层设备, 如PLC通讯时。本文提出一种采用内存共享技术的程序之间数据交换方法, 将VB的通讯子程序和主程序分离, 以解决通讯子程序死锁等故障对主程序的影响。本方法用在汽车安全气囊装配生产线的软件设计中, 取得了良好的效果。
关键词:VB,内存映射,共享内存,串行通讯,PLC
参考文献
[1]胡荣, 沈俊杰.基于条形码技术的汽车安全气袋监控系统研制[J].机电一体化, 2007 (2) :48-51, 54.
[2]孙文庆, 刘秉权, 肖镜辉.基于内存映射文件的数据共享技术研究与应用[J].微计算机应用, 2005, 26 (2) :192-194.
[3]党志斌, 李迎纲, 樊燕京, 等.基于内存映射的进程间通信实现跨平台软件互联互通[J].现代电子技术, 2012, 29 (14) :46-47.
[4]裘智峰, 成晓明.基于PLC的不定字长的串行通讯的研究及实现[J].工业控制计算机, 2004, 17 (2) :54-55.
串行通讯 第9篇
可编程序控制器 (PLC) 专门用于工业控制, 它的核心是以微处理器的结构为基础, 在硬件结构上和普通的计算机基本一致。它在基本的计算机结构当中, 加入了传统的继电器控制系统, 使其具有了高度的可靠性, 更好的适应工业现场的环境, 而且具备了强大的联网处理功能, 广泛地应用在工业控制生产过程中。
微软的Visual Basic提供了MSComm控件, 通过硬件的串行端口传送和接收数据, 实现了PC机与PLC之间的通信, 为可视化程序对PLC的控制提供了可能。
本文基于西门子公司生产的S7-200型PLC, 应用MSComm控件, 编写了计算机与PLC通讯程序, 包括了上位机和下位机相应的程序代码。提出了应用编程语言实现PC/PLC网络之间数据通信的软件解决方案, 实现了用PC机对PLC的监控及控制。
1 PLC与计算机间的通讯
S7-200型PLC可以连接编程器、人机接口设备, 甚至连接其他的PLC或PC机, 组成PLC网络, 可以实现PC与PLC、PLC与PLC的各种通信功能。同时可以应用PC的管理功能实现对PLC的编程、监控和联网的功能。S7-200系列PLC具有9针的RS-485接口, 可以通过PC/PPI电缆与计算机连接, PLC之间可以通过SINEC-L2接口连接成PLC网络。
S7-200系列PLC主要有两种通信模式:一种为点对点 (PPI) 通信协议模式, 用在PLC与编程器或人机接口产品之间通讯;另一种是自由口通讯模式, 此模式对用户完全开放, 用户可以自行设定通讯协议, 使用程序控制串行通讯接口。
其中PPI通信模式需要在PLC的停止方式 (STOP) 下通信;自由口通讯模式要在PLC运行方式 (RUN) 下通讯。本文选用灵活性更高的自由口模式。在此模式下, 可以通过发送中断、接收中断、发送指令和接收指令等命令控制串行通讯口的工作, 用户可以自行设置通讯控制协议。把SMB30 (端口0) 和SMB130 (端口1) 的协议选择区置1, 允许自由端口模式, 通过SMB30和SMB130设置波特率与奇偶校验位。
2 PLC的通讯程序
通过S7-200系列PLC的可编程通讯端口模式可以实现很多复杂的通信功能。即可以组建成PLC网络进行PLC的多机通信, 也可以组建成PC和多PLC的PLC监控通信网络, 以及利用电信网络建立PC和多PLC的远程通信网络。
PLC存储器中的数据通过中断方式发送到上位PC机, 下面是相应的程序:
LD SM0.1
MOVB 16#09, SMB30;首次扫描时为PLC初始化自由端口, 数据格式为9600波特率, 8位数据位, 无校验
MOVB 100, SMB34;采用定时器中断0
MOVB 1, VB100;发送字节数为1
ENI;允许进行中断
ATCH INT 0, 10;
以下为部分中断程序:
LD SM0.0
MOVB 120, VB101;PC机发送的数据
XMT VB100, 0;向PC机发送数据, 用0号端口, 采用定时中断。
3 计算机通讯程序
在PC机上, 编写程序实现PC与PLC的通讯。本文采用Visual Basic语言编写PLC与计算机间通讯程序的程序界面, 控制程序部分应用MSComm控件, 程序中通过设置控件的属性值和检查控件的事件来完成数据的发送和接收工作。
MSComm控件采用检测方法和事件驱动方法处理事件:程序检测方法可以在需要时通过检查CommEvent属性的值来检测事件和通讯错误, 这种方法常用作非实时环境中, 用来检测设备的某些响应情况。如果处于实时性要求高的场合, 这种方法会占用CPU的运行时间, 达不到实时控制的要求;事件驱动方法通过对OnComm控件事件的捕获处理通信事件, 当接收到新的数据或者检测到通讯端口的状态发生了改变就会引发OnComm事件, 应用程序捕获到这个事件并对其进行相应的处理, OnComm事件也可以用来捕获和处理通信中的错误。
PLC与计算机的通讯程序分为三个部分:初始化程序、发送程序和接收程序。
初始化程序设置通讯端口, 可以选择串口1或串口2等等;设置发送和接收的波特率、有无校验位、设置数据位和停止位, 一般情况下波特率选择9.6k或19.2k, 无校验, 8位数据位和1位停止位;将MSComm的InputMode置1, 使得接收类型为二进制数据;将RThreshold属性置1, 控件接收到一个字节数据就会触发OnComm () 事件;清空发送缓冲区和接收缓冲区。
发送程序的数据格式:起始字符为0, 结束字符为十六进制数&HFF, 无校验。
接收程序通过MSComm控件的OnComm事件触发运行。由于PLC只有接收到PC机发送的信息后才开始发送数据, PC机在发送完成后如果OnComm事件被触发, 就把接收到的第一个字节数据作为接收报文的开始, 一直到串口再没有接收事件作为报文的结束。
运行PLC和PC机的程序, 计算机和PLC能够互相发送和接收数据, 实现了PC和PLC之间的串行通讯功能。
4 结论
本文应用VB语言的MSComm控件, 通过可视化编程语言在PC机与PLC网络中实现了PC与PLC之间的数据通信, 达到了应用PC机对工业自动化现场中PLC设备的监控和管理, 在对PLC控制系统的调试过程中, 缩短了调试周期, 提高了工作效率。
此通信技术对西门子S7-200系列PLC及其他西门子工业控制产品的应用有着普遍的意义。
摘要:本文应用S7-200系列PLC的RS-485接口, 通过PC/PPI电缆与计算机的RS-232接口连接, 软件方面应用Visual Basic提供的串行通讯控件 (MSComm) 实现PC机对可编程序控制器的监控与管理。本文主旨在于探讨应用可视化编程语言实现PC机与PLC网络之间数据通讯的技术以及实现方案, 利用PC机的管理与监控功能实现对PLC的自动化控制。
关键词:可编程序控制器,串行通讯,中断
参考文献
[1]范逸之.Visual Basic与分布式监控系统-RS232/485串行通信[M].北京:清华大学出版社, 2002.
[2]Gofton P W.精通串行通信[M].北京:电子工业出版社, 1995.