Linux电脑通过RS-232向PLC发送rs232信号波形。 我在装有linux系统的电脑上写了个C++程序

你的位置:
&& 详细内容
《嵌入式Linux系统实用开发》高清文字版[PDF]
本资料所属分类:
更新时间:日
如不能下载,请查看
电子书http://www.minxue.net:&嵌入式Linux系统实用开发作者:& 何永琪图书分类:&软件资源格式:&PDF版本:&高清文字版出版社:&电子工业出版社书号:&0地区:& 大陆语言:& 简体中文简介:&
本书是高清文字版.非扫描.拒绝模糊.享受清晰!电子书www.minxue.net地址!目录:&
"封面页1版权页4序6前言页10目录页16第1部分 嵌入式开发基础29第1章 引言301.1 嵌入式产业概况301.2 Linux操作系统331.3 ARM体系概况361.3.1 ARM7381.3.2 ARM9391.3.3 ARM9E391.3.4 ARM10E401.3.5 ARM11401.3.6 Cortex411.4 常见嵌入式产品及其基本平台简介411.4.1 学习开发板411.4.2 行业终端441.4.3 工业控制461.4.4 手持娱乐471.4.5 医疗仪器491.4.6 汽车电子501.4.7 智能本511.5 嵌入式产品开发基本流程53第2章 C语言编程要点562.1 数据类型562.2 常数572.3 变量592.3.1 变量的定义与初始化592.3.2 变量的访问592.3.3 左值与右值592.3.4 只读变量602.4 操作符602.4.1 只读操作符602.4.2 读写操作符632.4.3 类型转换操作符642.4.4 sizeof操作符642.5 表达式和语句642.5.1 表达式642.5.2 语句652.6 复合类型662.6.1 数组662.6.2 结构体692.6.3 位域702.6.4 数据的对齐712.6.5 联合体722.6.6 类型嵌套732.6.7 类型别名742.6.8 枚举类型752.7 流程控制752.7.1 顺序结构752.7.2 分支结构762.7.3 隐含的分支结构782.7.4 循环结构792.7.5 goto812.8 函数822.8.1 声明与定义822.8.2 函数的调用与传值方式842.8.3 函数与复合类型852.8.4 内联函数862.8.5 变量的作用范围与生存期862.9 指针892.9.1 指针与变量892.9.2 指针与操作符922.9.3 指针与数组932.9.4 字符串942.9.5 指针与结构体962.9.6 指针与函数972.9.7 回调函数1002.9.8 函数指针类型转换1012.10 预处理语句1022.10.1 文件包含1022.10.2 宏定义1022.10.3 宏与函数1042.10.4 代码分支106第3章 开发环境1083.1 Linux使用基础1083.1.1 命令参数与选项1083.1.2 文件 目录和路径1093.1.3 用户与权限1093.1.4 硬链接与符号链接1103.1.5 命令使用技巧1113.2 Linux常用命令1113.2.1 查阅手册1113.2.2 文件相关1123.2.3 文件内容相关1163.2.4 压缩与解压缩1173.2.5 文件系统与磁盘1193.2.6 用户与权限1203.2.7 进程管理1223.2.8 系统信息1243.2.9 网络1243.3 Shell 使用进阶1283.3.1 重定向1283.3.2 管道1293.3.3 变量与替换1303.3.4 环境变量1323.3.5 脚本1333.3.6 脚本编程1343.3.7 作业管理1353.4 Debian 5.0 的安装与使用1373.4.1 安装Debian 5.01373.4.2 Debian 5.0的基本操作1373.4.3 常用软件的安装与使用1403.4.4 从源码安装软件1463.4.5 安装编译环境1473.5 建立交叉编译环境1493.5.1 下载安装1503.5.2 从源码编译安装1503.6 vi编辑器1543.6.1 vi的工作模式1543.6.2 普通模式1553.6.3 命令行模式1563.6.4 寄存器1573.6.5 与编程有关的技巧1573.7 gcc工具链1573.7.1 编译过程1573.7.2 gcc用法1583.8 make与Makefile1603.8.1 make工具的使用1603.8.2 Makefile1613.9 gdb调试工具1633.9.1 调试本地程序1633.9.2 远程调试1653.10 buildroot开发工具165第2部分 ARM架构与编程168第4章 ARM处理器架构与编程模型1694.1 嵌入式硬件系统1704.1.1 嵌入式系统架构1704.1.2 S3C2410A地址映射1714.1.3 HY2410A开发板硬件配置1724.2 ARM架构概述1724.2.1 ARM处理器模式与寄存器组1724.2.2 ARM异常与异常向量表1754.2.3 程序状态寄存器1764.2.4 大端与小端存储格式1784.3 ARM指令集概述1794.3.1 ARM汇编指令格式1794.3.2 数据处理指令1814.3.3 存储器访问指令1834.3.4 分支指令1864.3.5 软中断指令1864.3.6 程序状态寄存器传送指令1874.3.7 乘法指令1884.3.8 协处理器指令1894.3.9 伪指令1904.4 GNU ARM汇编1914.4.1 基本语法1914.4.2 GNU ARM汇编伪指令1924.5 汇编与C语言1974.5.1 程序及其二进制映像1974.5.2 程序的编译与运行1984.5.3 ATPCS约定1994.5.4 汇编与C语言的对照2014.5.5 函数调用与栈2064.5.6 堆的概念2084.6 汇编与C语言混合编程2094.6.1 C语言调用汇编函数2094.6.2 汇编语言中使用C全局变量2104.6.3 内嵌汇编211第5章 搭建嵌入式固件开发平台2145.1 硬件设备与软件环境2145.2 搭建开发环境2155.2.1 硬件连接2155.2.2 使用终端软件2165.2.3 下载和执行程序2175.3 创建固件程序219第6章 S3C2410接口与编程2226.1 软中断异常编程2226.1.1 软中断异常入口2226.1.2 软中断异常应用例程2236.2 中断控制器及外部中断编程2266.2.1 中断体系结构2266.2.2 中断控制器2276.2.3 中断源安排2276.2.4 中断控制器寄存器配置2296.2.5 中断应用例程2306.3 定时器及其编程2346.3.1 定时器体系2346.3.2 定时器单元工作原理2356.3.3 定时器寄存器配置2366.3.4 定时器应用例程2386.4 GPIO接口2436.5 UART控制器及串口通信应用2446.5.1 UART通信原理2446.5.2 RS232C串行接口标准2456.5.3 UART控制寄存器2466.5.4 串口通信应用例程2506.6 NAND Flash芯片与控制器2536.6.1 NAND Flash的访问2536.6.2 NAND Flash控制器2556.6.3 NAND Flash控制器编程实例257第7章 Uboot源码分析与移植2607.1 bootloader的概念2607.1.1 bootloader的启动过程2617.1.2 bootloader的操作模式2617.1.3 ARM bootloader的特点2627.2 使用Uboot2637.2.1 Uboot主要命令与环境变量2637.2.2 使用实例2647.3 Uboot源码分析2657.3.1 总体架构与内存布局2667.3.2 源码目录2677.3.3 实现分析2677.4 Uboot移植2777.4.1 源码修改2777.4.2 配置和编译290第3部分 Linux系统编程292第8章 Linux系统编程基础2938.1 系统调用与API2938.2 程序的生成与执行2958.3 API 的错误处理2968.4 命令行参数与环境变量296第9章 Linux文件系统编程2999.1 文件的概念2999.2 文件描述符与索引节点3009.3 文件操作的系统调用接口3019.3.1 打开文件3019.3.2 从文件读取数据3039.3.3 写数据到文件3059.3.4 发送控制命令3079.3.5 关闭文件3089.4 标准I/O函数库3089.4.1 fopen3099.4.2 fread和fwrite3109.4.3 fclose3109.4.4 fflush3119.4.5 fseek和ftell3119.4.6 fgetc, getc和getchar3119.4.7 fputc, putc和putchar3129.4.8 fgets和gets3139.4.9 fputs和puts3139.4.10 fprintf, printf和sprintf3149.4.11 fscanf, scanf和sscanf3169.4.12 标准I/O错误处理317第10章 深入理解进程31810.1 Linux中的进程31810.1.1 创建进程31910.1.2 执行程序32010.1.3 进程的内存布局32110.1.4 进程的状态迁移32310.1.5 进程的终止32310.2 进程与信号32410.2.1 Linux中的信号处理机制32510.2.2 发送信号32610.2.3 捕捉信号32810.2.4 屏蔽信号33310.2.5 信号安全函数33410.3 进程与文件33510.3.1 内核文件管理33610.3.2 进程中的文件33610.3.3 文件的重定向33910.3.4 文件控制34010.4 进程间通信34210.4.1 Linux中的IPC34210.4.2 信号灯与进程同步34310.4.3 管道34610.4.4 命名管道34810.4.5 共享内存35110.4.6 消息队列355第11章 socket编程36011.1 网络协议层次模型36011.2 socket编程接口36111.2.1 打开socket36111.2.2 socket地址36311.2.3 网络字节序36411.2.4 socket与地址的绑定36511.2.5 侦听36611.2.6 接受连接请求36611.2.7 连接36711.2.8 关闭和切断连接36711.2.9 发送数据36811.2.10 接收数据36911.2.11 使用socket 选项36911.2.12 阻塞与非阻塞操作37111.2.13 可靠的发送与接收操作37211.2.14 多路复用37311.3 socket编程实例37511.3.1 TCP与UDP 程序流程37511.3.2 TCP通信例程37511.3.3 多进程并发服务器应用37811.3.4 多路复用服务器应用38611.3.5 UDP服务器应用392第12章 多线程并发程序设计39812.1 线程的概念39812.2 线程编程接口39812.2.1 线程的创建与退出39912.2.2 线程属性39912.2.3 线程的分离状态40112.2.4 线程应用实例40112.3 线程的同步40312.3.1 使用信号灯进行线程同步40312.3.2 使用互斥体41012.3.3 使用条件变量41412.4 多线程并发程序设计41812.4.1 多线程并发服务器应用41812.4.2 消费者/生产者模型42612.4.3 线程池应用427第4部分 内核与驱动编程435第13章 内核编程初步43613.1 从用户态到内核态43613.1.1 实模式与保护模式43613.1.2 用户态与内核态43613.1.3 内核编程的特点43713.1.4 内核模块与驱动43813.2 内核模块编程43813.2.1 编写源码43813.2.2 printk函数44013.2.3 编译内核模块44113.2.4 加载与卸载44213.2.5 模块参数44313.3 字符设备驱动44513.3.1 设备文件与设备号44513.3.2 字符设备编程接口44613.3.3 文件操作45013.3.4 访问用户态内存45513.3.5 动态分配内存45513.3.6 内存操作45613.3.7 字符设备驱动例程462第14章 内核编程接口46914.1 双向环形链表46914.1.1 定义与初始化46914.1.2 链表操作47014.1.3 链表的使用47214.2 等待与延时47414.2.1 调度与抢占47414.2.2 进程运行状态47614.2.3 定时47714.2.4 等待队列47814.2.5 阻塞与非阻塞操作48014.2.6 延时48114.2.7 等待队列例程48314.3 定时器与延期工作49014.3.1 定时器49014.3.2 tasklet49414.3.3 工作队列49614.3.4 定时器例程50114.4 自旋锁与同步50714.4.1 并发与竞态50714.4.2 自旋锁50814.4.3 原子上下文51214.4.4 读写锁51314.4.5 原子类型51614.4.6 比特位操作51914.4.7 互斥体52014.4.8 信号灯52214.4.9 读写信号灯52414.5 端口IO和内存映射IO52514.5.1 端口IO52714.5.2 内存映射 IO53014.5.3 内存屏障53414.6 中断53614.6.1 申请和释放中断53614.6.2 中断处理函数53714.6.3 中断的禁止和使能53814.6.4 线程化中断53914.6.5 共享中断539第15章 Linux2.6设备模型54115.1 对象与集合54115.1.1 引用计数54115.1.2 内核对象54215.1.3 内核对象的类型54515.1.4 内核集合55015.1.5 内核集合与对象例程55415.2 设备管理55915.2.1 设备56015.2.2 错误码与指针56215.2.3 驱动56315.2.4 总线56415.2.5 类别56615.2.6 接口56815.3 常见总线与类别56915.3.1 platform总线56915.3.2 misc类别573第16章 Linux驱动实例详解57516.1 输入设备驱动57516.1.1 输入设备编程接口57616.1.2 触摸屏驱动例程58016.2 USB驱动59016.2.1 USB概述59016.2.2 USB驱动模型59116.2.3 USB驱动编程接口59216.2.4 USB接口与端点59416.2.5 USB类别59716.2.6 URB59916.2.7 同步传输接口60416.2.8 USB锚60516.2.9 USB驱动范例分析607第5部分 嵌入式Linux系统构建617第17章 Linux内核构建61817.1 内核编译过程61817.2 内核配置系统架构62017.2.1 内核Makefile62117.2.2 KBuild配置系统62417.3 增加代码到内核63117.4 内核配置简介63217.5 启动内核634第18章 根文件系统构建63518.1 init进程63518.2 创建根文件系统63718.2.1 创建目录63718.2.2 创建设备文件63818.2.3 安装共享库63918.2.4 安装busybox64018.2.5 创建配置文件64218.3 挂载根文件系统64318.3.1 使用网络文件系统64318.3.2 使用Flash文件系统644第6部分 应用编程647第19章 C++语言编程要点64819.1 布尔型数据64819.2 引用64819.3 类和对象65019.3.1 类和对象的定义65019.3.2 构造与析构65019.3.3 类的实现65119.3.4 访问对象65219.3.5 this指针65319.3.6 new和delete65319.3.7 静态成员65419.3.8 只读成员65519.3.9 复制构造函数65619.3.10 友元65719.4 类的继承65819.4.1 继承的语法65819.4.2 继承方式65819.4.3 多重继承65919.5 函数和操作符重载66019.5.1 函数重载66019.5.2 操作符重载66219.6 覆盖与虚函数66619.6.1 覆盖66619.6.2 虚函数和多态66719.6.3 虚函数的实现66819.6.4 纯虚函数与抽象类66919.7 名字空间66919.8 模板67019.8.1 模板函数67019.8.2 模板类67219.9 异常处理67219.10 C 与C++混合编程674第20章 嵌入式GUI编程67520.1 建立开发环境67520.2 简单的Qt应用程序67820.2.1 编写源代码67820.2.2 编译67920.2.3 工程文件67920.2.4 运行68120.2.5 移植到目标机68120.3 窗口布局68220.3.1 水平布局与垂直布局68320.3.2 栅格布局68520.4 Qt对象68720.4.1 层次化管理68820.4.2 信号与槽68820.4.3 事件69220.4.4 定时器69520.5 使用 designer69720.5.1 窗体设计69720.5.2 代码编写69920.5.3 运行结果70420.6 Qt 常用类70420.6.1 QChar70420.6.2 QString70520.6.3 QPoint71220.6.4 QSize71320.6.5 QRect71420.6.6 QFont71620.6.7 QPixmap71720.6.8 QIcon71820.6.9 QWidget72020.6.10 QDialog72920.6.11 QLabel73120.6.12 QAbstractButton73320.6.13 QPushButton73520.6.14 QCheckBox73520.6.15 QRadioButton73620.6.16 QLineEdit73720.7 Qt 综合应用73920.7.1 软件设计73920.7.2 源码实现74220.7.3 运行结果74820.7.4 Qt国际化编程748第21章 嵌入式数据库编程75221.1 基本SQL语句75221.1.1 数据库与表75221.1.2 创建和删除表75321.1.3 插入、修改及删除记录75321.1.4 条件表达式75421.1.5 数据库查询75521.2 建立SQLite3开发平台75621.3 SQLite3编程接口75721.3.1 打开和关闭数据库75721.3.2 执行SQL语句75821.3.3 查询数据库75921.4 使用SQLite3工具76021.5 SQLite3数据库应用实例76121.5.1 使用sqlite3_exec查询数据库76221.5.2 使用sqlite3_get_table查询数据库763第22章 产品开发实例:无线信息终端76522.1 总体架构76522.2 硬件设计76622.3 软件设计76722.3.1 总体框架76722.3.2 协议报文格式76822.4 应用软件77122.4.1 GUI应用模块77122.4.2 通信协议模块77522.4.3 业务功能模块78022.4.4 使用多线程读取设备78222.4.5 模块集成784附录A 缩略语785"
内容介绍:本书以S3C2410A芯片及HY2410A开发板为主,介绍了嵌入式ARM平台上Linux系统开发所需的各种技术,包括ARM处理器架构与汇编语言、嵌入式Linux开发环境的建立、C及C++语言要点、bootloader和Linux内核的移植、Linux系统应用编程、Linux内核驱动编程和Qt图形界面应用的开发等,涵盖了嵌入式产品软件开发工作所需的各种主要技术。内容截图:
自带站内搜索End-->
相关学习资料您现在所在的是:
→ 浏览主题:
* 帖子主题:
文章数:10
年度积分:50
历史总积分:50
注册时间:
请教高手,我有个三菱GT1150-QBBD-C 的触摸屏有三个连接口,分别是;RS-232,RS-422,还有一个是跟手机充电口一样的,我现在要用这个触摸屏与笔记本电脑连接还有与三菱PLC连接,但是我买不到这两根连接线,请问高手指点在哪能买的到这两根线呢,还有买到后应该怎样连接的,要不要下载驱动,谢谢
文章数:4194
年度积分:532
历史总积分:8124
注册时间:
三菱电机活动(三)
寻找英威腾(三)
三菱串口下载线就可以,像手机接口的那个是程序下载口,电子市场上很多的
致力于自动化
伺服 PLC HMI
fumz78 版主
文章数:12775
年度积分:584
历史总积分:24487
注册时间:
2015论坛优秀版主
2014论坛优秀版主
晒晒工控小礼品
2012论坛优秀版主
2011论坛贡献奖
2010年论坛优秀版主
08年最佳博客奖
那个迷你的USB接口和232接口可以用来下载程序
另外232口和422口可以用来连接PLC
232接口下载线 FX-232-CAB1 &USB下载线GT09-C30USB-5P(这线用国产的,只要接口对就可以,要装驱动)
和FX的PLC连接线FX-50DU-CAB0
这些线外面很好买的。
PLC、触摸屏、伺服电机、变频器 &及配件
&三菱 & & & &S & &S & &S & &S
文章数:10
年度积分:50
历史总积分:50
注册时间:
谢谢大家,下载驱动怎么下的,我在淘宝在买可以吗
fumz78 版主
文章数:12775
年度积分:584
历史总积分:24487
注册时间:
2015论坛优秀版主
2014论坛优秀版主
晒晒工控小礼品
2012论坛优秀版主
2011论坛贡献奖
2010年论坛优秀版主
08年最佳博客奖
USB的驱动是编程软件自带的,第一次通过USB电缆插上触摸屏通电后会发现新硬件,安装驱动就可以
PLC、触摸屏、伺服电机、变频器 &及配件
&三菱 & & & &S & &S & &S & &S
文章数:34587
年度积分:944
历史总积分:56288
注册时间:
2015论坛优秀版主
2014论坛优秀版主
2014相约国庆
2013论坛优秀版主
2012论坛优秀版主
2011论坛贡献奖
2010年论坛优秀版主
呵呵;与三菱PLC的通讯电缆与老款的F940的线是一样的;
下载电缆可以用F940的线,也可以直接用USB下载线;
工控学堂推荐视频:文档分类:
下载前请先预览,预览内容跟原文是一样的,在线预览图片经过高度压缩,下载原文更清晰。
您的浏览器不支持进度条
淘豆网网友近日为您收集整理了关于PLC串行通信在分布式监控系统中的应用的文档,希望对您的工作和学习有所帮助。以下是文档介绍:?PLC串行通信在分布式监控系统中的应用?1引言目前,plc作为一种成熟稳定可靠的控制器,已经在工业控制中得到了广泛的应用。在实际应用中通常采用以工业控制计算机和plc构成计算机监控系统。在这里,plc完成对系统的底层控制,即直接控制执行机构,实现数据采集,处理与控制;上位计算机则完成数据处理、信息管理等复杂的监控管理任务。通讯的实现就成为这种系统中的关键技术之一。本文以电厂输煤监控系统为例,介绍了串行通信技术在分布式监控系统中的应用。2监控系统硬件构成某电厂输煤系统共有储煤圆筒仓6个,每个仓下面各对应着环式给煤机,犁煤机,变频器和皮带等设备,每个仓距离几十米。我们使用可编程控制器(omronc200h型plc)作为下位机负责对每台圆筒仓下的设备信号采集和控制命令的发送。由程序实现对设备启停的连锁控制,出现异常情况,如设备电流越限,给煤车挡板卡死等情况,能快速作出反应并报警。采用工业控制计算机(ipc)作为操作员站,实现对整个的监控和管理功能。plc之间以rs422方式组成网络,并和上位机之间采用hostlink方式连接。系统结构图如图1所示。每个圆筒仓下的设备使用一个c200h型plc对其进行控制,06通信模块。它能够为plc提供rs422/485方式的通讯。这样可以方便的将其联网。rs422采用平行发送接收方式,具有传输距离长,抗干扰能力强和多点通信能力,最多可以连接32台plc。在plc和上位机之间使用一个rs422/232转换模块,将rs422信号转换为rs232信号,这里使用的是研华adam4520。这种网络通信方式经济实用,完全能满足生产运行的需要。3系统软件开发及串行通信的实现上位机监控系统开发c++builder6.0编程软件。c++builder是borland公司的产品,它采用面向对象的c++语言,实时性好,运算速度快,编程效率高,人机界面功能强大。近年来越来越多地应用于工业控制。plc与上位机的串行通信程序的编制是监控系统开发的关键部分。使用c++builder开发系统人机界面的部分较为容易,不是本文讨论的主要内容,在此不作详细叙述。?3.1plc的通信协议简介上位计算机和plc通讯使用的是上位链接通讯方式,所以我们要开发c++builder与omronplc的串行通信,必须使用omronplc的上位机链接通信协议。mand)和应答(response)帧实现的。在一次交换中从上位机传输至plc的命令称为命令帧,plc对命令帧的应答数据称为应答帧。每个帧以设备号和标题开始,以检验码fcs及结束符结束。一个命令帧最多可以包含131个数据字符,多于131个数据字符的数据要分成若干帧发送。从上位机发送一个命令帧时,命令格式如图2所示。@符号必须置于每个命令的开头。节点号用来辨识接收命令的plc,节点号在数据寄存区dm6558地址中设定。识别码是2个字符的命令代码,用来设置通信的功能。正文设置命令参数,包括要读写的plc寄存器单元的起始地址和字数。fcs是2个字符的帧检查顺序码,是检查前面数据的校验码,终止符以“*”和回车(chr$(13))两字符,表示命令结束。一些常用命令代码如rr表示读ir/sr区的值,rd表示读dm区的值,wd表示向dm区写数据。具体情况可参照相关操作手册。响应帧的格式与命令帧类似,在标志码后多了两位的结束代码。不同结束代码的值代表不同含义。查看结束码可以得知是否有错误发生以及发生错误的类型。正常情况下的结束码为00。表1为常见的结束代码及其含义。帧顺序检查fcs在终止符之前,以检查传送时是否存在数据错误。fcs是一个转换成2个ascⅱ字符的8位数据。这8位数据为从帧开始到帧正文结束所有字符ascⅱ码执行“异或”操作的结果。每次接收到一帧,先要计算fcs,与帧中所包含的fcs作比较,就能检查数据传输的正确与否。例如:要读出01号plc的ir200里的数据,通过上位机可以发送格式为“@01rr*”的命令帧。其中“41”即为计算所得的fcs。每一帧的fcs的可由上位机程序计算得到。3.2c++builder中串行通信的实现使用c++builder开发串行通信程序有两种方法:一种是利用activex控件,c++builder本身并不提供单独的串行通信控件,m32控件,在c++builder中注册它,c++builder就可以调用了。另一种方法是利用windowsapi函数创建串行通信。?利用activex控件开发串行通信程序较为容易,很多文章都进行论述过,但是这种方法实时性较差。使用windowsapi函数开发串行通信程序虽然比较复杂,但是采用多线程技术,其准确性高,实时性好,适用于连续生产过程中通讯要求严格,实时性强,数据量大的场合。在本次系统开发中,经过综合考虑,我们选择了使用windowsapi函数开发串行通信程序。在开发过程中,我们使用了多线程,事件驱动的方式。通信程序主要由两个线程组成,主线程负责接收用户输入,相应键盘鼠标,接收windows消息,以及向串口发送数据。另一个监视线程监视串口接收消息,并向主线程发送windows消息。通信过程如图3所示。?使用过程中,首先使用一系列api函数初始化通信端口。这部分程序如下:file://取得要打开的通信端口sendtemp=“com”+inttostr(radiogroup1-》itemindex+1);comno=sendtemp.c_str();file://m=no,generic_read|generic_write,0,null,open_existing,0,0);file://使用createfile函数打开一个通信端口,打开的file://端口视窗体上选择的而定。if(hcomm==invalid_handle_value)file://如果串口未打开,报警消息。{messagebox(0,“打开通信端口错误!!”,“commerror”,mb_ok);}mstate(hcomm,&dcb);file://取目前串口状态file://设置通信端口的状态dcb.baudrate=cbr_9600;file://波特率设为9600dcb.bytesize=7;file://数据位7位dcb.parity=//奇偶校验设为偶校验dcb.stopbits=//停止位设为2位if(!mstate(hcomm,&dcb)){messagebox(0,“通信端口设置错误!!”,“seterror”,mb_ok);}?通信端口初始化成功后,主线程开始接收用户消息,监测用户输入,然后开始发送命令帧,发送完毕后将发送事件标记设为false,接收事件标记设为true。接收标记为true时,监视线程启动,使用readfile函数读取从plc返回的应答帧。如果没有错误而且校验帧fcs正确,则使用一段翻译程序将应答帧中的plc信息翻译出来,例如某个dm区的值,存入内存变量中,即可以在监控画面上作出显示。然后主线程发送下一个命令帧,开始下一个循环。如果plc返回的应答帧错误,或者fcs不正确,那么监视线程将根据错误的类型,发送消息至主线程,通知主线程重发命令帧或者改变设置。主线程经过多次重发仍然出现错误,则发出相关报警信息,通知操作员进行处理。由于监视线程在接收消息状态下立即启动,且与主线程采用同步处理方式,只需要向主线程发送消息,因此循环时间短,提高了控制系统的实时性。在本系统中,例如要使用上位计算机控制plc关闭某个设备。主线程首先监测到鼠标点击开关事件,然后将这个操作事件翻译成相应的命令帧,通过串口发送此命令到对应的plc中,改变plc内存区的某个对应的值,进而改变plc的输出,关闭这个设备。同时监控画面可以显示出改变后的设备状态。4结束语使用本文介绍的方法编制通信程序,在火电厂输媒监控系统中得到了实际应用。目前这一方案已经应用到现场,一段时间的试运行表明此方案是可行的。通信稳定可靠,实时性强,完全满足现场设备通信的需要。同时,由c++builder开发的监控画面,采用了面向对象的编程技术,缩短了此系统的开发周期,在上位机上再现生产过程,人机界面友好。相信此方案对同类系统的设计与开发有一定借鉴作用。播放器加载中,请稍候...
该用户其他文档
下载所得到的文件列表PLC串行通信在分布式监控系统中的应用.doc
文档介绍:
?PLC串行通信在分布式监控系统中的应用?1引言目前,plc作为一种成熟稳定可靠的控制器,已经在工业控制中得到了广泛的应用。在实际应用中通常采用以工业控制计算机和plc构成计算机监控系统。在这里,plc完成对系统的底层控制,即直接控制执行机构,实现数据采集,处理与控制;上位计算机则完成数据处理、信息管理等复杂的监控管理任...
内容来自淘豆网转载请标明出处.}

我要回帖

更多关于 rs232信号波形 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信