基于WIN32API函数的PLC与PC串行通信解读

合集下载

WIN32 API串口通信

WIN32 API串口通信

WIN32 API串口通信掌握串行通信API函数的用法是掌握串行通信编程技术的关键。

在Win32中,系统将串行口与文件统一了起来,对它们的打开、读写、关闭等操作都使用相同的API函数,但是它们之间又有差别,这些差别主要体现在API函数中部分参数的设置上。

有关通信的API主要包括打开串口、关闭串口、配置串口、设置缓冲区、设置超时、事件驱动、读串口、写串口等。

串口的打开和关闭1:串口的打开。

由于在Windows环境中,串口作为一种文件来使用,打开串口用打开文件同样的API函数CreateFile()。

函数原型为:HANDLE CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); 其中几个参数的含义分别为:lpFileName指定文件名或设备名,串口通讯时,它必须是“COMx”,其中的“x”为串口编号,如第一个串口则为“COM1”;dwDesiredAccess为串口读写属性;dwShareMode指定该端口的共享属性,串行口不能作为共享设备,故参数值必须为0;lpSecurityAttributes为安全属性,对于串口应该为0 ;dwCreationDisposition指文件的创建模式,对于串口必须为OPEN—EXISTING;dwFlagsAndAttributes描述了创建文件的其它属性,对于串行口,有效的设置只能是FILE-FLAG-OVERLAPPED 或者0,分别表示异步或同步读写;参数hTemplateFile必须为NULL。

返回值:若成功,返回创建的句柄;否则返回INVALID—HANDLE—VALUE。

win32API串口通信

win32API串口通信

win32API串口通信WIN32API--串口通信[源码]serial.cpp vc++6.0#include#include#includeHANDLE hComm;OVERLAPPED m_ov;COMSTAT comstat;DWORD m_dwCommEvents;/*注意:在异步通信时不用等到I/O操作完成后函数才返回异步可以更快的响应用户操作;同步,相反,响应的I/O操作必须完成后函数才返回,否则阻塞线程*/bool openport(char *portname)//打开一个串口{//创建串口句柄hComm = CreateFile(portname, //设备名GENERIC_READ | GENERIC_WRITE, //指定可对串口进行读写0,//串口不能共享0,OPEN_EXISTING, //定义文件创建方式FILE_FLAG_OVERLAPPED, //设定为异步通信方式0);//模板文件句柄 0:串口无模板if (hComm == INVALID_HANDLE_VALUE)return FALSE; //串口打开不成功INVALID_HANDLE_value(0XFFFFFFFF)。

elsereturn true; //串口打开成功}/*设置串口在打开通信设备句柄后,常常需要对串行口进行一些初始化工作。

这需要通过一个DCB结构来进行。

DCB结构包含了诸如波特率、每个字符的数据位数、奇偶校验和停止位数等信息。

在查询或配置串口的属性时,都要用DCB结构来作为缓冲区。

第一次打开串口时,串口设置为系统默认值,函数GetCommState和SetCommState可用于检索和设定端口设置的DCB(设备控制块)结构。

该结构中BaudRate、ByteSize、StopBits和Parity字段含有串口波特率、数据位数、停止位和奇偶校验控制等信息。

程序中用DCB进行串口设置时,应先调用API函数GetCommState,来获得串口的设置信息*/bool setupdcb(int rate_arg){DCB dcb;int rate = rate_arg;memset(&dcb, 0, sizeof(dcb)); //申请一块内存单元并清零if (!GetCommState(hComm, &dcb)) //获取当前DCB配置-hFile:串口句柄-lpDCB:设备控制块(Device Control Block)结构地址{return FALSE;}/* -------------------------------------------------------------------- */// set DCB to configure the serial portdcb.DCBlength = sizeof(dcb);//设备控制块结构体大小/* ---------- Serial Port Config ------- */dcb.BaudRate = rate; //波特率dcb.Parity = NOPARITY; //奇偶校验dcb.fParity = 0; //是否进行奇偶校验dcb.StopBits = ONESTOPBIT;// 停止位个数,0~2分别对应1位、1.5位、2位停止位dcb.ByteSize = 8; //数据宽度,一般为8,有时候为7dcb.fOutxCtsFlow = 0;//是否CTS线上的硬件握手dcb.fOutxDsrFlow = 0;//是否DSR线上的硬件握手dcb.fDtrControl = DTR_CONTROL_DISABLE; //DTR控制dcb.fDsrSensitivity = 0;dcb.fRtsControl = RTS_CONTROL_DISABLE;dcb.fOutX = 0; //是否使用XON/XOFF协议dcb.fInX = 0; //是否使用XON/XOFF协议/* ----------------- misc parameters ----- */dcb.fErrorChar = 0;dcb.fBinary = 1;dcb.fNull = 0;dcb.fAbortOnError = 0;dcb.wReserved = 0;dcb.XonLim = 2;//设置在XON字符发送之前inbuf中允许的最少字节数dcb.XoffLim = 4;//在发送XOFF字符之前outbuf中允许的最多字节数dcb.XonChar = 0x13;//设置表示XON字符的字符,一般是采用0x11这个数值dcb.XoffChar = 0x19;//设置表示XOFF字符的字符,一般是采用0x13这个数值dcb.EvtChar = 0;/*真正在串口编程中用到的数据成员没有几个,在此仅介绍少数的几个常用的参数:DWORD BaudRate:串口波特率DWORD fParity:为1的话激活奇偶校验检查DWORD Parity:校验方式,值0~4分别对应无校验、奇校验、偶校验、校验置位、校验清零DWORD ByteSize:一个字节的数据位个数,范围是5~8DWORD StopBits:停止位个数,0~2分别对应1位、1.5位、2位停止位然后再末尾调用SetCommState就可以了,还是比较方便的。

PLC与PC(个人计算机)通讯概述

PLC与PC(个人计算机)通讯概述

PLC与PC(个人计算机)通讯概述个人计算机(以下简称PC)具有较强的数据处理功能,配备着多种高级语言,若选择适当的操作系统,则可提供优良的软件平台,开发各种应用系统,特别是动态画面显示等。

随着工业PC的推出,PC在工业现场运行的可靠性问题也得到了解决,用户普遍感到,把PC连入PLC应用系统可以带来一系列的好处。

1. PC与PLC实现通信的意义把PC连入PLC应用系统具有以下四个方面作用:1)构成以PC为上位机,单台或多台PLC为下位机的小型集散系统,可用PC实现操作站功能。

2)在PLC应用系统中,把PC开发成简易工作站或者工业终端,可实现集中显示、集中报警功能。

3)把PC开发成PLC编程终端,可通过编程器接口接入PLC,进行编程、调试及监控。

4)把PC开发成网间连接器,进行协议转换,可实现PLC与其它计算机网络的互联。

2. PC与PLC实现通信的方法把PC连入PLC应用系统是为了向用户提供诸如工艺流程图显示、动态数据画面显示、报表编制、趋势图生成、窗口技术以及生产管理等多种功能,为PLC应用系统提供良好、物美价廉的人机界面。

但这对用户的要求较高,用户必须做较多的开发工作,才能实现PC 与PLC的通信。

为了实现PC与PLC的通信,用户应当做如下工作:1)判别PC上配置的通信口是否与要连入的PLC匹配,若不匹配,则增加通信模板。

2)要清楚PLC的通信协议,按照协议的规定及帧格式编写PC的通信程序。

PLC中配有通信机制,一般不需用户编程。

若PLC厂家有PLC与PC的专用通信软件出售,则此项任务较容易完成。

3)选择适当的操作系统提供的软件平台,利用与PLC交换的数据编制用户要求的画面。

4)若要远程传送,可通过Modem接入电话网。

若要PC具有编程功能,应配置编程软件。

3. PC与PLC实现通信的条件从原则上讲,PC连入PLC网络并没有什么困难。

只要为PC配备该种PLC网专用的通信卡以及通信软件,按要求对通信卡进行初始化,并编制用户程序即可。

用Win32 API 实现串行通信

用Win32 API 实现串行通信

用Win32 API 实现串行通信南京航空航天大学牛新庄--------------------------------------------------------------------------------串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛。

我们可以利用Windows API 提供的通信函数编写出高可移植性的串行通信程序。

在Win16中,可以利用OpenComm、CloseComm和WriteComm等函数打开、关闭和读写串口。

但在Win32中,串口和其他通信设备均被作为文件处理,串口的打开、关闭和读写等操作所用的API函数与操作文件的函数相同。

可通过CreateFile函数打开串口,通过CloseFile函数关闭串口,通过CommProp、DCB结构、GetCommProperties、SetCommProperties、GetCommState及SetCommState等函数设置串口状态,通过函数ReadFile和WritFile读写串口。

VC++ 6.0是Windows应用程序开发的主流语言之一,它具有良好的图形设计界面并支持面向对象的程序设计方法。

本文结合一个实例介绍在VC++ 6.0下如何利用Win32 API 实现串行通信程序。

实现原理本文的实例来自一个水泥发货系统,在系统中,需要将通过总量传感器采集到的仓重值传入到计算机中,以便系统做出相应的处理。

这需要使用串行通信来完成采集数据的传递工作。

对于串行通信设备,Win32 API支持同步和异步两种I/O操作。

同步操作方式的程序设计相对比较简单,但I/O操作函数在I/O操作结束前不能返回,这将挂起调用线程,直到I/O操作结束。

异步操作方式相对要复杂一些,但它可让耗时的I/O操作在后台进行,不会挂起调用线程,这在大数据量通信的情况下对改善调用线程的响应速度是相当有效的。

异步操作方式特别适合同时对多个串行设备进行I/O操作和同时对一个串行设备进行读/写操作。

基于编程口的三菱PLC与PC机串行通信实现 优秀论文

基于编程口的三菱PLC与PC机串行通信实现  优秀论文

柳 剑 陈於学 杨曙年
( 华中科技大学机械科学与工程学院,湖北 武汉 430074)
摘 制中有着广泛的应用。介绍了一种不使用通信模块而直接通过
PLC 自带编程口与 PC 机实现串行通信的方法,阐述了通信系统内部两种不同标准接口之间通信的基本原理,给出了在 LabVIEW 开发
信号传输,采用的是单向传输方式; RS-422 标准则是 利用传输线之间信 号 的 电 压 差 进 行 传 输 的 ,采 用 的 是
差动传输方式。SC-09 电缆实现了这两种不同的信号 传输方式之间的转换,其内部电路如图 2 所示。
图 2 SC-09 电缆内部电路 Fig. 2 Internal circuit of SC-09 cable
的数据、报文结束标志以及和校验码组成,如图 3 所 示。写入正常时,PLC 应答“ACK”; 写入出错时,PLC 应答“NAK”。
起始 命令
软元件首地址
STX
CMD
16 3
16 2
16 1
16 0
02H 31H
BYTE 数
16 1
16 0
16 1
16 0
第一个字节
数据段 … …
16 1
16 0
末字节
2 通信协议
PC 机与 PLC 之间有两种通信方式: 一种是 PC 机 具有优先权而 PLC 始终被动响应 PC 机发来的命令; 另一种则是 PLC 具有优先权,将命令发送给 PC 机,并 接收来自 PC 机的响应[4]。本文采用的是前一种通信 方式。
为实现 PC 机与 FX 系列 PLC 编程口之间的通信, 系统采用的是编程口专用通信协议[5]。 2. 1 控制字符
环境下设计的通信程序,并在 FX1N-40MR-001 型号的 PLC 上进行了实验验证。实验结果表明,该通信方式稳定可靠,实现了预期功

WindowsAPI在串口通信中的应用

WindowsAPI在串口通信中的应用

1 引言在很多情况下,远程监控和工业自动化领域系统经常采用串并口通信编程,其中串行接口被广泛地应用于工程实践的长距离通信中。

运用Windows通信API可以在Windows 环境下进行串口编程,不用对硬件直接进行操作,并通过VC、VB和Delphi等语言进行调用,大大方便了对数据的处理。

本文对和串口通信相关的32位Windows API函数进行了介绍,并给出了相应的程序实例。

2 Windows API简介Win32 API作为Microsoft 32位平台(包括:Windows 9x,Windows NT3.1/4.0/5.0,WindowsCE)的应用程序编程接口,它是构筑所有32位Windows平台的基石,所有在Windows平台上运行的应用程序都可以调用这些函数。

API是windows的核心,从事Windows应用程序开发,离不开对Win32 API函数的调用。

只有充分理解和利用API 函数,才能深入到Windows的部,充分挖掘系统提供的强大功能和灵活性。

3 Windows API相关串口通信函数介绍在32位的Windows系统中,串口通信是作为文件处理的,串口操作一般为的打开、关闭、读取、写入等操作,相应的Windows API 函数如下:3.1 打开和关闭串口1 打开串口在Windows系统中串口通信会话以调用CreateFile ( )函数开始。

CreateFile ( )函数可以读写访问串口,并返回一个句柄,并在以后的端口操作中使用。

现其他初始化工作。

2 关闭串口关闭串口通过调用CloseHandle ( )函数关闭由CreatHandle ( )函数返回的句柄来完成。

3.2 串口配置和串口属性在用CreatFile ( )函数打开串口后,系统将根据上次打开串口时设置的值来初始化串口,可以集成上次打开操作后的数值,包括设备控制块(DCB)和超时控制结构(COMMTIMEOUTS)。

PC(上位机)与PLC串行通讯协议与串口DLL之 MODBUS RTU 协议UU

PC(上位机)与PLC串行通讯协议与串口DLL之  MODBUS RTU 协议UU

Modbus rtu通信协议串口通讯动态链接库DLL(以下简称DLL),是为满足工业通信需要,针对工业领域要求上位机对PLC、工业仪表通讯实时采集与控制的组态编程而设计。

本DLL是采用Delphi语言开发的标准串口通讯库,具有以下特点:1)、遵循modbus rtu串口通讯协议(施耐德、西门子、台达、永宏等品牌PLC及各类工业仪表等支持本协议);2)、实时性、可靠性好,通用性强;3)、适用于多PLC联网和上位机通信,满足多方面的需要(联网时可采用485总线式);4)、函数接口功能全,操作简单,支持modbus的大部分读写功能函数;5)、附加实用转换与读取函数,易于快速开发(VC等非RAD开发环境的开发);6)、支持USB、PC扩展卡等扩展串口号;7)、支持多种操作系统win9x/win2000/winXP(标注Win32 DLL);8)、可在多种编程环境下使用,例如VB、VC、Delphi等开发环境。

9)、支持modbus rtu标准的功能代码01、02、03、04、05、06、15、16且对相关功能代码的读取和写如做了一些扩充更加符合工业自动化领域的工控软件的开发,是广大工控工程师的必备工具软件。

二、modbus rtu通讯协议简介Modbus 协议是应用于电子控制器上的一种通用语言。

通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。

它已经成为一通用工业标准。

有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。

它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。

它制定了消息域格局和内容的公共格式。

当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。

如果需要回应,控制器将生成反馈信息并用Modbus协议发出。

plc和计算机间串行通讯程序设计

plc和计算机间串行通讯程序设计

plc和计算机间串行通讯程序设计PLC和计算机间的串行通讯可以通过多种协议,如RS232、RS485、Modbus等进行。

其基本原理是通过串行通讯口将PLC和计算机连接起来,然后通过编程实现对PLC进行读写操作,以实现数据的交换。

具体的串行通讯程序设计需要考虑以下几个方面:
1. 确定通讯协议:在实现串行通讯时,需要确定通讯协议,比如RS232、RS485、Modbus等,然后根据协议要求对通讯口进行配置。

2. 配置串行通讯口:对于不同的通讯协议,需要对串行通讯口进
行不同的配置,如波特率、数据位、校验位等。

3. 编写数据收发程序:通过编写数据收发程序,可以实现对PLC
和计算机之间数据的交换。

一般来说,先发送数据请求给PLC,PLC接
收请求后返回数据,然后计算机再对收到的数据进行解析和处理。

4. 错误处理:在实际的串行通讯中,可能会发生各种错误,如通
讯中断、数据异常等,需要对这些错误进行处理,以保证程序的稳定
性和可靠性。

总的来说,串行通讯程序设计需要充分了解通讯协议和串行通讯
口的相关知识,同时需要对PLC和计算机之间的通讯进行严谨的设计
和实现,以确保程序的正常运行。

Windows 32 API在串口通信中的应用

Windows 32 API在串口通信中的应用
杨 洁
( 坊 学 院 , 山东 潍
潍坊
2 16 ) 6 0 1

要 :本 文分析 了Wi o s n w 环境 下 串行通信 的编程技 术 ,并介绍 了在用v + d c +语 言编 写
P C机与单片机 串行通信程序 实现 ,提 出了在实际应用中提 高串行通信性能的方法。 关键词:V + ;Wi 2 P 函数;串行通信;单 片机 c+ n AI 3
维普资讯
第6 卷第4 期
20 0 6年 7月
潍坊学院学报
J u a f W e fn ie s o m l i a Un v ri o a
VO . No4 1 . 6
J1 0 6 u. 0 2
Widw 2 P 在 串E通信 中的应用 no S I 3A l
Mioo c s ̄公 一 的 V + 6 r J C + . 一 种 高级 编 程 语 数据景 的实时通信,大大提高 了通信 的效率,故 0是 言 ,其 基 础类 库 ( C 封 装 了Wi3AP 中 的标 奉程 序 采 用 此种 方 式 进 行 串 行通 信 ,至 于 通 信 的 MF ) n2 l 准通 信 函数 ,可 方 便 地 支 持 串 口通信 。 下面 就 结 可 靠性 可 以通过 软件 设 汁来 保证 。 合 实例 介 绍 在 Wi o 环 境 下 , 用VC + . : 3 串行通信程序 n ws d + 60编 与 . 串行通信 程序 的技 术及 方法 。
序处 理 。
数 、 消息 的集 合 ,它 可 以看 作 是 Wi o s系统 为 n w d 在其 下运 行 的各 种 丌 发 系 统 提供 的 丌放 式 通用 功
在Widws中 , 串行 通 信 有 两 种 T 作 方 式 : no

基于Win32 API函数和多线程技术的串行通信编程

基于Win32 API函数和多线程技术的串行通信编程

些 差 别 体 现 在 A I函 数 中 部 分 参 数 的 设 置 上 。 弄 清 串 行 通 信 P
A I 数 的 用 法 是 掌 握 串 行 通 信 编 程 技 术 的 关 键 。下 面 介 绍 几 P 函 个 与 串行 通 信 编 程 密 切 相 关 的 AP 函 数 及 其 参 数 设 置 。 I
摘 要 运 用 Wi3 I函数 和 多线 程 技 术 , 磁 悬 浮 伺 服 装 置 控 制 系统 中 P 机 与 单 片 机 间 串行 通 信 进 行 编 程 。 介 n 2 AP 对 C
绍 了 开 关 串 口 、 始 化 串 口 、 置 缓 冲 区 、 写 串 口 、 叠 IO 操 作 、 视 通 信 事 件 等 与 串行 通 信 编 程 密 切 相 关 的 A I 初 设 读 重 / 监 P 函
机 与 单 片 机 问 进 行 近 距 离 串行 通 信 , 采 用 R 一 3 C标 准 的 3 可 S 22

在 Wid w x N n o s 9 / T下 串 行 通 信 编 程 时 将 串 口 与 文 件 统

Hale Waihona Puke 对 它 们 的 开 、 、 、 等 操 作 都 使 用 相 同 的 AP 函 数 , 相 关 读 写 I 但
维普资讯
基 于 W i3 I函数 和 多 线 程 技 术 的 n 2 AP 串行 通 信 编 程
颜 波 谢存禧 张 铁 ( 南理 工 大 学机 电工 程 系 , 州 5 0 4 ) 华 广 16 0
E—m a l m e o t 2 . t i : r bo @ 63ne
A bsr t: t ac Wi 2 n3 API u to an f nc in d M u t r d ec no o y r ad t d o hih ea t h l g a e op e t pr g am S ial or er co mm uniato bewe PC c in t en a m i o on r le uni n h c nto s t m of nd cr c to lr t t e o r l yse i mag etc lvi i n e o n i e t o s nr de c API f at vie. unc ins nd her to a t i pa a e e s r m t r s tng u a o ni g nd eti s ch s pe n a clsng e a po t s ti g b f r r a,e o i s r l i r , e tn ufe a e r adig n n a d wrtng e al or , v ra i i s r p t o e lppe I i d /O op r — e a to wa c ng o m u c ton v nt whi a e elv t l e y o e i 1 o m un c ton i n, t hi c m ni a i e e . ch r r e an cos l t s ra c m i a i pr g amm i or ng. r i r duc d. a e nto e Ke ywor ds: Se a co m u ca in, i i r l m ni to W n32 API un i n, f cto Mulihr ad tt e

用WIN32API函数实现Windows下的串行通讯

用WIN32API函数实现Windows下的串行通讯

用WIN32API函数实现Windows下的串行通讯以往的DOS系统是通过DOS中断和BIOS中断向用户提供串行接口的通讯能力。

在Windows 环境下,C++的开发工具既没有提供象DOS和BIOS中那样专门的串行通讯控制方法,也不允许用户直接控制串口的中断。

为了保证资源共享,Windows系统完全接管了各种硬件资源,使用中断来控制端口将破坏系统的多任务性,使系统的稳定性受到影响。

但Windows同时也提供了功能强大的API函数使用户能间接的控制串行通讯。

1、实现串行通讯的相关API函数API函数不仅提供了打开和读写通讯端口的操作方法,还提供了名目繁多的函数以支持对串行通讯的各种操作。

常用函数及作用如表5-1所示。

表5-1 常用串行通讯API函数及其作用函数名作用CreateFile 打开串口GetCommState 检测串口设置SetCommState 设置串口BuilderCommDCB 用字符串中的值来填充设备控制块GetCommTimeouts 检测通信超时设置SetCommTimeouts 设置通信超时参数SetCommMask 设定被监控事件WaitCommEvent 等待被监控事件发生WaitForMultipleObjects 监测多个对象WriteFile 发送数据ReadFile 接收数据GetOverlappedResult 返回最后重叠操作结果PurgeComm 清空串口缓冲区,退出所有相关操作ClearCommError 更新串口状态结构体,并清除所有串口硬件错误CloseHandle 关闭串行口2、打开端口函数CreateFile原本用于打开文件,但它同样可用于打开一个通信端口。

与系统中其他对象一样,通信端口也是用句柄来标识的。

CreateFile函数返回被操作的通信端口句柄,其调用方法如下:HANDLE CreateFile (LPCTSTR lpFileName, //指向文件名字符串的指针DWORD dwDesireAccess,//操作模式DWORD dwShareMode,//共享方式LPSECURITY_ATTRIBUTES lpSecurityAttributes,//指向安全属性的指针DWORD dwCreationDistribution,//文件建立方式DWORD dwFlagsAndAttributes //文件属性HANDLE hTemplateFile)//模板文件句柄lpFileName:指向一个以NULL结束的字符串,该串指定了要创建、打开或截断的文件、管道、通信源、磁盘设备或控制台的名字。

基于Win32平台下串行通信编程方法研究

基于Win32平台下串行通信编程方法研究
[ 3] 李现 勇.VisualC++串 口 通 信 技 术 与 工 程 实 践 [ M] .北 京 : 人 民 邮 电 出版社, 2002. ( 责任编辑: 卓 光)
对串口进行初始化一般来说要完成以下几个设置: 设定通信端口号, 这是在CreateFile 中建立的。 设定通信协议, 即HandShaking 属性。 设定传输速率等参数, 由COMMCONFIG 结构来设定。 设定其它参数, 有必要时再加上其它的属性设定。 例2如下: COMMCONFIG cc; RtlZeroMemory( &cc, sizeof( cc) ) ;
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL) ;
if ( hComPort1 = = INVALID_HANDLE_VALUE) AfxMessageBox ( "CreateFile ( ) failed, hComPort1 is in2 valid。 ")
dwFlagsAndAttributes: 该参数描述了端口的各种属性。对 于串口硬件, 唯一有意义的设置是FILE_FLAG_OVERLAPPED。
hTemplateFile: 该参数指向模板文件的句柄。 例1如下: HANDLE hComPort1; hComPort1 = CreateFile ( "COM1", GENER IC_READ | GENER IC_WR ITE,
3 应用实例
笔者就计算机控制投影仪作为实例, 来实现串行通信。对 投影仪的操作有5种, 分别为退出、关机、S - Vedio 、Vedio 和开 机5种操作。由投影仪操作手册可知对串口写入不同数据实现 对投影仪的不同操作。

应用Win32 API函数开发串口通讯程序

应用Win32  API函数开发串口通讯程序

中 , 照预 定 好 的通 信 握 手 方 式 , 确 检 测 串 口状 按 正
态 , 取发 送 串 口数据 。 读
2 串 1通 讯 AP : 2 I函 数 及 编 程 机 制
2 1 串行 端 口 的 打 开 和 关 闭 .
I 0; If n t n / AP u ci o
在 Wi3 n 2中所有 的设 备都 被 看 成是 文 件 , 串行 端 口也是作 为文 件来进 行处 理 的。 串行端 口的打开
lp e ) a p d 和异 步方式 ( elp e ) Ov r p d 。下 面是 以 O e— a vr lp e a p d方式 打开 串 口的程序 片断 。
HADLE Co h mm :
无线通 讯适 配器 传送 到计算 机里 。从 而需要 控 制该
适 配器 的 收发状 态 以完成数 据 的发送 和接 收 。收发 状态 的切换 要 通过 串行 电 缆 中 R TS控 制线 的 电平 高低来 控 制 。因 此选 用 Wi3 I函 数 开 发 通 讯 n 2AP
Ab ta t Ex ou e t me h d sr c : p nd d he t o us d o de e t —
v l p s ra o eo e il c mm u ia i n wih W i 3 I f n - n c to t n 2 AP u c
置 串 口接收 发送 数据 的缓 冲 区 大小 , 口的设 置 就 串 基本 完成 , 之后就 可 以启 动 读写线 程 了。

关键 词 : 口通 讯 ; 步 I0; P 函数 串 异 / A I
中图分 类号 : 3 1 1 TP 1 . l
文献 标识 码 : A

PLC和PC机间的串行通信

PLC和PC机间的串行通信

关键词:RS-232串行通信可编程控制器自由端口模式数据缓冲区HG-2003型温升测控装置是笔者与我国北京某科学研究联联合开发的一套专门用于高压晶闸管阀温升检测试验的测控装置。

考虑到PLC及其网络已被公认为现代测控装置开发的几大支柱之一,而且从近几年的统计数字来看,PLC产品在世界范围内的产量、销量高居各测控器件榜首,因此笔者决定本测控系统的核心器件采用可编程控制器(PLC),其基本功能可通过软件编程实现。

PLC的三大亮点是:(1)集电控、电传、电仪三电于一体;(2)网络的性能价格比高;(3)可靠性高。

这些亮点就使得整个测控设备结构简单、可靠性高,同时也为实现系统控制功能的二次开发奠定了良好的技术基础。

本文主要讨论设备中所采用的西门子公司的S7-200型PLC和PC机之间的串行通信问题。

1、温升测控系统整体介绍1.1 HG-2003测控装置的测控对象及结构先来介绍一下该温升试验测控装置的基本工作流程。

10kV电源进线经过进线框中的高压断路器CB和高压隔离开关柜中的隔离开关G(用于在设备检修或维护时形成一个明显的断点)后,加在10kV转换变压器T1上。

该变压器将三相电转化为单相电。

这主要是由于做实验时负载电流很大,如果使用三相电源,容易造成负荷电流的不平衡从而造成试验故障。

在转换变压器的输出端(二次侧)连接单相温升试验变压器T2。

该温升变压器的一次侧应加装用于无功功率补偿的电容柜,二次侧则通过有载分接开关直接连接试验品(即高压晶闸管阀)进行温升试验。

从基本工作流程不难知道测控装置的测控对象,本装置的具体测控对象如表1所示。

表1 测控对象表测控装置的物理结构分为两部分:操作控制台和试区控制箱。

其中,试区控制箱即PLC 控制箱被安装在试验区的隔离开关框内。

操作控制台即PC机人机办是非曲直操作台则安装在控制室内。

由于二者之间相距约40m,所以采用PC/PPI电缆传输测控信号时需加装中继器。

1.2 HG-2003测控装置的基本功能本测控系统的基本功能包括:开关分合控制指示功能;设备和试品的过流、过压、过热报警及保护功能;各种操作连锁功能,如电源开关柜内10kV电源断路器和隔离开关柜内的手动隔离开关、控制室门触点、试验大厅门触点间的连锁保护功能等,并设有相关的报警提示画面。

基于win32技术的PC与PLC实时通讯系统的研究

基于win32技术的PC与PLC实时通讯系统的研究
Vaue En i e rn l gn eig
・1 5 ・ 5
基 于 wi3 n 2技 术 的 P 与 P C 实 时通 讯 系统 的研 究 C L
Re e c n PC nd PLC e l tm e Com m un c to se s d on wi 2 Te hno o y s ar h o a R a-i i a i n Sy t m Ba e n3 c lg
关键 词 :实 时通讯 ; 自由协 议 ; 串口通讯 ; 实时数据 ; L n 2 P C wi3
K e r :r a —tme c mmun c to fe g e me t s ra o y wo ds e l i o i a i n;r e a r e n ; e il c mmun c to r a — i a a; LC n3 i a i n; e l tme d t P wi 2
中 图分 类 号 :P 1 T 3
文献 标 识 码 : A
文章 编 号 :0 6 4 1 (0 0)6 0 5 — 2 10 — 3 12 1 2 — 15 0
的 连 接 电缆 , 实现 了 R 2 2与 R 4 5的 转 换 , 且 具 有 很 好 的隔 它 S3 S8 并 可 编 程 逻 辑 控 制 器 ( L 是 一 种 广 泛 应 用 于 工 业 环 境 的 新 型 离抗 干扰 功 能 。 P C) 数 字 运 算 操作 的 电子 装 置 。 它 采 用 可 以编 制 程 序 的 存 储 器 , 来 在 用 通 讯 原 理 :7 2 0 自带 的通 讯 口 R 4 5采 用 半 双 工 通 讯 , 需 S—0 S8 只 执 行 逻辑 运算 、 顺序 运算 、 时计 时 和 算 术 运 算 等 指 令 , 能 通 过 数 用 两根 数据 线 来 发 送 接 收 数 据 , 以在 通 讯 过 程 中没 有 硬 件 握 手 信 定 并 所 字 式 或模 拟式 的输 入 和 输 出 , 制 各种 类型 的机 械 或 生 产 过 程 。 随 号 , 以 用 软 件 握 手 通 讯 方 式 保 持 通 讯 数 据 的 同步 , 了 保 证 通 讯 控 所 为

PLC与PC计算机通信

PLC与PC计算机通信

PLC与PC计算机通信WWW_P※LCJS_CO※M-PLC-技-.术_网请问,我的PLC与PC计算机通信采用RS-232无协议通信方式(梯形图RS指令方式,可自定义通信协议),目前,PLC中串行通信程序已编出,听说PC机那块还要编程(用VB 或VC++),才能最终实现通信,是不是类似自己编通信协议,究竟应该怎么弄,我不太清楚,望各位工控前辈指点一下!WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)以下是对《PLC与PC计算机通信》的回复:W1WW_P4LCJS_COM-PLC-技.术_网匿名回复:WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)VB用MSCOMM控件或者用WIN32 API自己写。

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)匿名回复:W1WW_P4LCJS_COM-PLC-技.术_网PC机的串口和PLC的串口一样,也需要对其编程才能实现数据的收发。

看来PLC的通讯程序应该不是你自己编的,最多是依葫芦画瓢,因为你对串行通讯好象还没建立起基本的概念。

:)WWW_P※LCJS_CO※M-PLC-技-.术_网在你这个项目里面,上位机通讯程序的作用就是接收PLC送过来的数据,也可能还要向PLC发送数据。

你所说的“无协议通讯”实际上真正的含义应该是“未采用业界现行的一些标准通讯协议(比如Modbus协议),而是按自己定义协议编写程序”。

P.L.C.技.术.网——可编程控制器技术门户WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)所谓“通讯协议”的概念说白了实际上就是对如下一些问题作出明确的约定:WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)WWW_PL※CJS_COM-PLC-技.术_网1、上位机于下位机之间需要交换哪些数据——可——编——程——控-制-器-技——术——门——户WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)2、按什么格式发送这些数据plcjs.技.术_网WWW_PLC※JS_COM-PmLC-技.术_网我这里来举两个简单的通讯协议的例子,希望以此能让新入行的师弟师妹们对“通讯协议”这个看上去很深奥,其实很简单的东东能有个清楚的认识WWW_P※LCJS_COM-PLC-)技.术_网WW.W_PLCJS_COM-PLC-技.术_网例1:某项目中,PLC需要每隔1秒钟把一个温度测量值送往上位机,上位机不需要向PLC返回任何信息。

01 Win32 API串口通信相关函数详解

01 Win32 API串口通信相关函数详解

相关函数详解(仅牵扯到串口通信方面的)CreateFile函数——打开或创建串口HANDLE CreateFile(LPCTSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCrationDistribution,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile);函数调用成功,返回串口的句柄;否则返回INVALID_HADLE_VALUE。

SetupComm函数——设置串口缓冲区大小BOOL SetupComm(HANDLE hFile,DWROD dwInQueue, //输入缓冲区大小DWROD dwOutQueue //输出缓冲区大小);设置成功后返回非0值;如果失败返回0值。

串口打开后,如果不设置缓冲区大小,系统则采用默认的大小。

设置时应当避免缓冲区溢出。

GetCommState函数、SetCommState函数Get……获得当前串口配置信息、SetCommState设置指定串口配置信息。

BOOL GetCommState(HANDLE hFile, LPDCB lpDCB);BOOL SetCommState(HANDLE hFile, LPDCB lpDCB);GetCommTimeouts函数、SetCommTimeouts函数BOOL GetCommTimeouts(HANDL hFile, LPCOMMTIMEOUTS lpCommTimeouts);得到超时信息BOOL SetCommTimeouts(HANDL hFile, LPCOMMTIMEOUTS lpCommTimeouts);设置超时信息填充串口配置信息的方法也可用其他的方法替代,不同的函数有不同的参数规定,比如:BuildDCB填充DCB结构、BuildCommDCBAndTimeouts填充DCB和COMMTIMEOUTS,具体用法参见MSDN。

深入浅出VC串口编程之基于Win32_API

深入浅出VC串口编程之基于Win32_API

深入浅出VC++串口编程之基于Win32API1、API描述在WIN32 API中,串口使用文件方式进行访问,其操作的API基本上与文件操作的API一致。

打开串口Win32 中用于打开串口的API 函数为CreateFile,其原型为:HANDLE CreateFile (LPCTSTR lpFileName, //将要打开的串口逻辑名,如COM1 或COM2DWORD dwAccess, //指定串口访问的类型,可以是读取、写入或两者并列DWORD dwShareMode, //指定共享属性,由于串口不能共享,该参数必须置为0LPSECURITY_ATTRIBUTES lpsa, //引用安全性属性结构,缺省值为NULLDWORD dwCreate, //创建标志,对串口操作该参数必须置为OPEN EXISTINGDWORD dwAttrsAndFlags, //属性描述,用于指定该串口是否可进行异步操作,//FILE_FLAG_OVERLAPPED:可使用异步的I/OHANDLE hTemplateFile //指向模板文件的句柄,对串口而言该参数必须置为NULL);例如,以下程序用于以同步读写方式打开串口COM1:HANDLE hCom;DWORD dwError;hCon = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL,OPEN_EXISTING, 0, NULL);if (hCom == (HANDLE)0xFFFFFFFF){dwError = GetLastError();MessageBox(dwError);}对于dwAttrsAndFlags参数及FILE_FLAG_OVERLAPPED标志的由来,可解释如下:Windows文件操作分为同步I/O和重叠I/O(Overlapped I/ O)两种方式,在同步I/O方式中,API会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程);而在重叠I/O方式中,API会立即返回,操作在后台进行,避免线程的阻塞。

PLC和电脑使用串口通讯?这么做很方便!

PLC和电脑使用串口通讯?这么做很方便!

PLC和电脑使用串口通讯?这么做很方便!最近有好朋友问我,为什么我用PLC写的232/485通讯程序不好用?我应该怎么测试是哪出现了问题?正好我最近写了一个西门子S7-200smart利用RS485进行自由口通讯向电脑发送状态的小程序,在这里和大家分享一下。

以前我们讲过,一些电子称具备RS232/485接口,可以与PLC进行通讯,那么除了这个功能,它还可以干什么?PPI协议是西门子自己的协议,为自己的设备做连接用的。

我们重点说下自由口通讯,自由口通讯不限设备的限制,只要是支持RS485/232通讯的,不论是不是西门子的都可以使用。

比如说不同PLC之间的通讯读写数据,以及和一些驱动器做通讯读写数据或者是给电脑端读写数据。

今天我们了解一下如何使用西门子S7-200SMART使用RS485端口与电脑进行通讯并调试。

首先S7-200SMART自带一个485接口,还可以拓展一个485接口,需要在硬件里配置波特率。

硬件连接需要一个PLC,一个485转232的转换器,以及一台带串口的电脑或者笔记本加串口转USB,以及串口调试工具。

西门子S7-200SMART PLC485转232转换器(电脑侧是232)注意线序不要接错了,接错后依然有数据,只是数据是反的。

电脑端口编程时需要配置接口信息,比如说用哪个接口发送,通讯参数是多少等等。

S7-200smart 可接两RS485口通讯参数是特殊存储器SMB30(端口0)和SMB130(端口1)端口设置假如需要传输的数据是(波特率9600,无奇偶效验,数据位8,停止位1),数据从端口0传输,那么将9赋值给SMB30。

然后我们看下发送和接收指令,XMT和RCV,这两个指令需要注意的是;1 指令需要以脉冲形式触发。

2发送或者接受的第一个字节的含义是你要发送的字节总字数。

且不包含第一个。

比如说我发送从VB801-VB876,所以发送地址需要写VB800,且VB800赋值为76。

用WIN31PL函数实现PC机之间串行通讯

用WIN31PL函数实现PC机之间串行通讯

用WIN31PL函数实现PC机之间串行通讯
肖瑞来;周振江
【期刊名称】《牡丹江师范学院学报:自然科学版》
【年(卷),期】2000(000)001
【摘要】本文介绍在WINDOWS环境下用API函数实现PC机之间进行串行通讯的一种方法。

【总页数】2页(P52-53)
【作者】肖瑞来;周振江
【作者单位】牡丹江大学;牡丹江大学
【正文语种】中文
【中图分类】TN915.04
【相关文献】
1.使用C++ Builder和Windows API函数实现微机与数字化仪的串行通讯 [J], 宋延杰;刘均;樊萍
2.基于VC++6.0利用WinAPI函数实现PC机与PIC单片机的串行通信 [J], 朱圣烽
3.PLC与PC机串行通讯口之间信号适配器设计 [J], 贾玉芬
4.DSP同步串行口和PC机之间异步通讯的实现方法 [J], 徐彦峰;徐睿
5.PC机与智能计数器之间串行通讯的实现 [J], 邢小军
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档