<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>未来不是梦 &#187; 工控相关</title>
	<atom:link href="http://www.wlbsm.com/category/7/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.wlbsm.com</link>
	<description>个人知识管理网摘</description>
	<lastBuildDate>Mon, 02 Aug 2010 02:39:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>白话监控组态软件</title>
		<link>http://www.wlbsm.com/2010/05/%e7%99%bd%e8%af%9d%e7%9b%91%e6%8e%a7%e7%bb%84%e6%80%81%e8%bd%af%e4%bb%b6/</link>
		<comments>http://www.wlbsm.com/2010/05/%e7%99%bd%e8%af%9d%e7%9b%91%e6%8e%a7%e7%bb%84%e6%80%81%e8%bd%af%e4%bb%b6/#comments</comments>
		<pubDate>Thu, 20 May 2010 05:02:06 +0000</pubDate>
		<dc:creator>yq2uan</dc:creator>
				<category><![CDATA[工控相关]]></category>
		<category><![CDATA[工控]]></category>
		<category><![CDATA[组态]]></category>

		<guid isPermaLink="false">http://www.wlbsm.com/?p=40</guid>
		<description><![CDATA[又一次是出差回来的路上写文章，这期的题目一直没有想好，本打算写一个有关PAC方面的，可就在回来的路上我碰上了一个沈鼓的自控调试技术人员，我们在路上攀谈起来。他向我问起监控组态软件到底是什么，到底里边有什么？当时我也是一愣，很少有人会问起组态软件是什么并且有什么，因为这个圈子里这些问题应该入门知识，但是经过了解才发现很多从事机械自动化或者工厂自动化还真不了解组态软件到底有什么由什么组成，他们往往偏门于PLC、变频、伺服等，最多也就是接触最简单的HMI。

下面我来讲一下监控组态软件，首先声明我不算是这方面的专家，也只是略知一二。监控组态软件主要是以下几方面组成。
1、实时数据库
实时数据库，顾名思义就是一种处理和存储实时数据的数据库，它分为两种构成模式，第一种就是利用开发工具直接开发二进制文件模式，自己开发sql引擎，建立索引以及配置文件等机制，例如IFIX；另外一种就是依托于成熟的关系数据库，把实时数据放在二进制文件中但sql引擎，索引，以及配置文件都利用关系数据库等机制，例如WINCC。
1、内核通讯
说起内核通讯一般谈及组态软件很少涉及，因为它是一种根本看不见摸不着但具有决定组态软件的构架。市面上比较流行就是两种通讯框架，一种是与实时数据库通讯为核心框架，图形界面、脚本、通讯驱动等都是围绕实时数据库来完成相应功能，另一种就是消息通讯为核心框架的，这种框架就是类似SOA构架，首先建立通信数据元素，把所有用于访问的数据格式包含在其中，然后通过消息发布出去，是那个组件接受那个组件完成相应的指令，消息通讯在今天的组态软件行业里也分为内存消息型和端口消息型，内存消息性就是利用MFC的在内存中消息来同志别的组件，其优点就是快速和稳定缺点就是所有组件不能脱离一台机器，这也是国内很多组态软件厂商最初的手法，而端口消息型，就是利用sock的端口进行消息通讯，不管是不是在本机一概采用端口通讯，这样的优点就是把可以把很多组件分布到每台机器上，其中CS和BS构架就用利用这种机制，缺点就是消息元素复杂，指令繁多，需要谨慎考虑其健壮性。
2、图形界面
图形界面其实没有什么好说，就是图形显示，图形绘制、报警、曲线，报表等，但是从市面上来说它们分为基于VC6中MFC开发的和.netfm开发的，从界面来说mfc开发的速度快，稳定性高，但界面简单，画质不是很绚丽，.net开发的界面绚丽，3d动感性强再结合GDI+，那就是界面中利器，而他的确定就是运行速度慢，另外对于安装机器的配置要求较高。
4、脚本
脚本算是组态软件中的灵魂，多数组态软件一看脚本就可以分辨出来高中底端产品，脚本分为编译型和解释性，编译型需要在组态软件没有运行之前，就把语句编译一边，然后嵌套在框架的函数和事件中，例如WINCC的C脚本，另外一种就是解释型，它是在组态软件运行之中被语法解释器边解释边运行，例如IFIX的VBA脚本。对于市面上可以看到脚本分为自定义、VB类、C类和其他类，自定义脚本例如intouch、组态王、力控；VB类例如IFIX的VBA、RSVIEW的VBA、杰控的VBS；C类例如WINCC的ASCIc、九易思的C#；其他有一些组态软件利用开源的脚本引擎例如TCLLUA等。底端脚本多数是采用自定义脚本，它的可扩展性很有限而且依赖于厂商自己的开发能力，中端脚本就是采用c脚本和开源脚本，它的成熟技术应该很广当时不方便普及和掌握，对于一些常用访问技巧，例如访问关系数据库，API以及DLL和控件不是很方便，而高端脚本则首推VBA系列，高效的访问工具、成熟的控件资源以及强大的API调用。
5、通讯驱动
通讯驱动则相应发展比较缓慢，这也是因为它实在是太成熟了，先说说它的框架结构都是采用封装通讯框架和开发数据流方式结合，也就是说开发人员不需要懂得组态软件的框架结构以及如何把数据对应数据库变量，只需要安装给出的框架，把数据流拆包解包和打包放入指定的结构缓冲区内就可以了。再说说驱动，一提到驱动它应该是两部分组成第一部分就是接口另外一部分就是协议，先说第一部分接口对于组态软件的生存平台PC来说，接口其实就是RS232/485/422，USB，TCP/IP（wifi）和板卡这几个种类，而对于另一部分的协议来说，那就太多了我就简单些介绍几种modbusrtu/asci/tcp，profibus，opc，s7等太多了，因为设备厂商的增多就以为协议的增多。
6、接口开发工具
接口开发工具其实就是组件开发工具，它是一种开发工具包，是寄宿在组态软件本身开发工具（vc/VS。net）上的一个框架向导，利用这些框架或者向导可以通过开发工具开发出来基于组态软件的扩展组件，方便组态软件的功能扩展和客户订制，例如关系数据库和实时数据库的导入导出的组件等，另外也可以开发局基于图形界面的图形组件。
7、WEB发布
WEB发布算是一种近年来十分流行的一个组态软件功能，因为SCADA市场和MES市场的扩大，使得厂级化管理越来越流行，也成为组态软件厂商热炒概念中的一部分，因为web的使用，可以让用户利用普通PC的IE浏览器就可以看到组态软件的图形界面和实时数据而让大多数的业主得到认同。web的发布技术基本上是三种方式，第一种activeX方式，一般这种WEB方式多数组态软件是采用vc6开发的，它直接封装一个图形浏览exe在com组件中，当用户ie浏览的时候会提示安装一个插件，然后这个exe就安装在客户pc上，通过IE调用exe，用就可以看到组态界面，这种也就是被称为准WEB方式它的优点就是速度快因为它使用cs模式缺点就是必须开用户指定端口一旦遇到路由器就不能看到，另外一种就是通过java方式，就是把用户组态的工程通过java重新转换一边，这种技术的优点就是无论你使用什么网络设备管理网络只要能开发80端口就可以看到数据，缺点数据刷新较慢但是可以接受的那种另外就是它需要重新编写一边组态软件比较耗时，然后发布出去。最后一种就是.net的webservice技术，毋庸置疑他当然是最强大的，但是你的框架开发工具就必须使用.net。
来源：http://blog.gongkong.com/blog_detail.Asp?Id=449567
]]></description>
			<content:encoded><![CDATA[<p>又一次是出差回来的路上写文章，这期的题目一直没有想好，本打算写一个有关PAC方面的，可就在回来的路上我碰上了一个沈鼓的自控调试技术人员，我们在路上攀谈起来。他向我问起监控组态软件到底是什么，到底里边有什么？当时我也是一愣，很少有人会问起组态软件是什么并且有什么，因为这个圈子里这些问题应该入门知识，但是经过了解才发现很多从事机械自动化或者工厂自动化还真不了解组态软件到底有什么由什么组成，他们往往偏门于PLC、变频、伺服等，最多也就是接触最简单的HMI。</p>
<p><span id="more-40"></span></p>
<p>下面我来讲一下监控组态软件，首先声明我不算是这方面的专家，也只是略知一二。监控组态软件主要是以下几方面组成。<br />
1、实时数据库<br />
实时数据库，顾名思义就是一种处理和存储实时数据的数据库，它分为两种构成模式，第一种就是利用开发工具直接开发二进制文件模式，自己开发sql引擎，建立索引以及配置文件等机制，例如IFIX；另外一种就是依托于成熟的关系数据库，把实时数据放在二进制文件中但sql引擎，索引，以及配置文件都利用关系数据库等机制，例如WINCC。<br />
1、内核通讯<br />
说起内核通讯一般谈及组态软件很少涉及，因为它是一种根本看不见摸不着但具有决定组态软件的构架。市面上比较流行就是两种通讯框架，一种是与实时数据库通讯为核心框架，图形界面、脚本、通讯驱动等都是围绕实时数据库来完成相应功能，另一种就是消息通讯为核心框架的，这种框架就是类似SOA构架，首先建立通信数据元素，把所有用于访问的数据格式包含在其中，然后通过消息发布出去，是那个组件接受那个组件完成相应的指令，消息通讯在今天的组态软件行业里也分为内存消息型和端口消息型，内存消息性就是利用MFC的在内存中消息来同志别的组件，其优点就是快速和稳定缺点就是所有组件不能脱离一台机器，这也是国内很多组态软件厂商最初的手法，而端口消息型，就是利用sock的端口进行消息通讯，不管是不是在本机一概采用端口通讯，这样的优点就是把可以把很多组件分布到每台机器上，其中CS和BS构架就用利用这种机制，缺点就是消息元素复杂，指令繁多，需要谨慎考虑其健壮性。<br />
2、图形界面<br />
图形界面其实没有什么好说，就是图形显示，图形绘制、报警、曲线，报表等，但是从市面上来说它们分为基于VC6中MFC开发的和.netfm开发的，从界面来说mfc开发的速度快，稳定性高，但界面简单，画质不是很绚丽，.net开发的界面绚丽，3d动感性强再结合GDI+，那就是界面中利器，而他的确定就是运行速度慢，另外对于安装机器的配置要求较高。<br />
4、脚本<br />
脚本算是组态软件中的灵魂，多数组态软件一看脚本就可以分辨出来高中底端产品，脚本分为编译型和解释性，编译型需要在组态软件没有运行之前，就把语句编译一边，然后嵌套在框架的函数和事件中，例如WINCC的C脚本，另外一种就是解释型，它是在组态软件运行之中被语法解释器边解释边运行，例如IFIX的VBA脚本。对于市面上可以看到脚本分为自定义、VB类、C类和其他类，自定义脚本例如intouch、组态王、力控；VB类例如IFIX的VBA、RSVIEW的VBA、杰控的VBS；C类例如WINCC的ASCIc、九易思的C#；其他有一些组态软件利用开源的脚本引擎例如TCLLUA等。底端脚本多数是采用自定义脚本，它的可扩展性很有限而且依赖于厂商自己的开发能力，中端脚本就是采用c脚本和开源脚本，它的成熟技术应该很广当时不方便普及和掌握，对于一些常用访问技巧，例如访问关系数据库，API以及DLL和控件不是很方便，而高端脚本则首推VBA系列，高效的访问工具、成熟的控件资源以及强大的API调用。<br />
5、通讯驱动<br />
通讯驱动则相应发展比较缓慢，这也是因为它实在是太成熟了，先说说它的框架结构都是采用封装通讯框架和开发数据流方式结合，也就是说开发人员不需要懂得组态软件的框架结构以及如何把数据对应数据库变量，只需要安装给出的框架，把数据流拆包解包和打包放入指定的结构缓冲区内就可以了。再说说驱动，一提到驱动它应该是两部分组成第一部分就是接口另外一部分就是协议，先说第一部分接口对于组态软件的生存平台PC来说，接口其实就是RS232/485/422，USB，TCP/IP（wifi）和板卡这几个种类，而对于另一部分的协议来说，那就太多了我就简单些介绍几种modbusrtu/asci/tcp，profibus，opc，s7等太多了，因为设备厂商的增多就以为协议的增多。<br />
6、接口开发工具<br />
接口开发工具其实就是组件开发工具，它是一种开发工具包，是寄宿在组态软件本身开发工具（vc/VS。net）上的一个框架向导，利用这些框架或者向导可以通过开发工具开发出来基于组态软件的扩展组件，方便组态软件的功能扩展和客户订制，例如关系数据库和实时数据库的导入导出的组件等，另外也可以开发局基于图形界面的图形组件。<br />
7、WEB发布<br />
WEB发布算是一种近年来十分流行的一个组态软件功能，因为SCADA市场和MES市场的扩大，使得厂级化管理越来越流行，也成为组态软件厂商热炒概念中的一部分，因为web的使用，可以让用户利用普通PC的IE浏览器就可以看到组态软件的图形界面和实时数据而让大多数的业主得到认同。web的发布技术基本上是三种方式，第一种activeX方式，一般这种WEB方式多数组态软件是采用vc6开发的，它直接封装一个图形浏览exe在com组件中，当用户ie浏览的时候会提示安装一个插件，然后这个exe就安装在客户pc上，通过IE调用exe，用就可以看到组态界面，这种也就是被称为准WEB方式它的优点就是速度快因为它使用cs模式缺点就是必须开用户指定端口一旦遇到路由器就不能看到，另外一种就是通过java方式，就是把用户组态的工程通过java重新转换一边，这种技术的优点就是无论你使用什么网络设备管理网络只要能开发80端口就可以看到数据，缺点数据刷新较慢但是可以接受的那种另外就是它需要重新编写一边组态软件比较耗时，然后发布出去。最后一种就是.net的webservice技术，毋庸置疑他当然是最强大的，但是你的框架开发工具就必须使用.net。</p>
<p>来源：<a href="http://blog.gongkong.com/blog_detail.Asp?Id=449567">http://blog.gongkong.com/blog_detail.Asp?Id=449567</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wlbsm.com/2010/05/%e7%99%bd%e8%af%9d%e7%9b%91%e6%8e%a7%e7%bb%84%e6%80%81%e8%bd%af%e4%bb%b6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>初学单片机几个不易掌握的概念</title>
		<link>http://www.wlbsm.com/2010/05/%e5%88%9d%e5%ad%a6%e5%8d%95%e7%89%87%e6%9c%ba%e5%87%a0%e4%b8%aa%e4%b8%8d%e6%98%93%e6%8e%8c%e6%8f%a1%e7%9a%84%e6%a6%82%e5%bf%b5/</link>
		<comments>http://www.wlbsm.com/2010/05/%e5%88%9d%e5%ad%a6%e5%8d%95%e7%89%87%e6%9c%ba%e5%87%a0%e4%b8%aa%e4%b8%8d%e6%98%93%e6%8e%8c%e6%8f%a1%e7%9a%84%e6%a6%82%e5%bf%b5/#comments</comments>
		<pubDate>Wed, 19 May 2010 23:37:28 +0000</pubDate>
		<dc:creator>yq2uan</dc:creator>
				<category><![CDATA[工控相关]]></category>
		<category><![CDATA[工控]]></category>
		<category><![CDATA[自动化]]></category>

		<guid isPermaLink="false">http://www.wlbsm.com/?p=7</guid>
		<description><![CDATA[  由于最近涉及到电动调节阀的维修和控制问题，于是开始学习相关知识。涉及的内容本来只涉及到plc（可编程逻辑控制器），但是由于希望能够比较系统的学习，又由于plc是单片机的一种，因此将其中的一些入门的东西拿来看看，希望能够有助于进一步的学习！

初学单片机几个不易掌握的概念
随着电子技术的迅速发展，计算机已深入地渗透到我们的生活中，许多电子爱好者开始学习单片机知识，但单片机的内容比较抽象，相对电子爱好者已熟悉的模拟电路、数字电路，单片机中有一些新的概念，这些概念非常基本以至于一般作者不屑去谈，教材自然也不会很深入地讲解这些概念，但这些内容又是学习中必须要理解的，下面就结合本人的学习、教学经验，对这些最基本概念作一说明，希望对自学者有所帮助。
一、总线：我们知道，一个电路总是由元器件通过电线连接而成的，在模拟电路中，连线并不成为一个问题，因为各器件间一般是串行关系，各器件之间的连线并不很多，但计算机电路却不一样，它是以微处理器为核心，各器件都要与微处理器相连，各器件之间的工作必须相互协调，所以就需要的连线就很多了，如果仍如同模拟电路一样，在各微处理器和各器件间单独连线，则线的数量将多得惊人，所以在微处理机中引入了总线的概念，各个器件共同享用连线，所有器件的8根数据线全部接到8根公用的线上，即相当于各个器件并联起来，但仅这样还不行，如果有两个器件同时送出数据，一个为0，一个为1，那么，接收方接收到的究竟是什么呢？这种情况是不允许的，所以要通过控制线进行控制，使器件分时工作，任何时候只能有一个器件发送数据（可以有多个器件同时接收）。器件的数据线也就被称为数据总线，器件所有的控制线被称为控制总线。在单片机内部或者外部存储器及其它器件中有存储单元，这些存储单元要被分配地址，才能使用，分配地址当然也是以电信号的形式给出的，由于存储单元比较多，所以，用于地址分配的线也较多，这些线被称为地址总线。
二、数据、地址、指令：之所以将这三者放在一起，是因为这三者的本质都是一样的──数字，或者说都是一串‘0’和‘1’组成的序列。换言之，地址、指令也都是数据。指令：由单片机芯片的设计者规定的一种数字，它与我们常用的指令助记符有着严格的一一对应关系，不可以由单片机的开发者更改。地址：是寻找单片机内部、外部的存储单元、输入输出口的依据，内部单元的地址值已由芯片设计者规定好，不可更改，外部的单元可以由单片机开发者自行决定，但有一些地址单元是一定要有的（详见程序的执行过程）。数据：这是由微处理机处理的对象，在各种不同的应用电路中各不相同，一般而言，被处理的数据可能有这么几种情况：
1·地址（如MOV DPTR，#1000H），即地址1000H送入DPTR。 2·方式字或控制字（如MOV TMOD，#3），3即是控制字。
3·常数（如MOV TH0，#10H）10H即定时常数。
4·实际输出值（如P1口接彩灯，要灯全亮，则执行指令：MOV P1，#0FFH，要灯全暗，则执行指令：MOV P1，#00H）这里0FFH和00H都是实际输出值。又如用于LED的字形码，也是实际输出的值。
理解了地址、指令的本质，就不难理解程序运行过程中为什么会跑飞，会把数据当成指令来执行了。
三、P0口、P2口和P3的第二功能用法 初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解，认为第二功能和原功能之间要有一个切换的过程，或者说要有一条指令，事实上，各端口的第二功能完全是自动的，不需要用指令来转换。如P3.6、P3.7分别是WR、RD信号，当微片理机外接RAM或有外部I/O口时，它们被用作第二功能，不能作为通用I/O口使用，只要一微处理机一执行到MOVX指令，就会有相应的信号从P3.6或P3.7送出，不需要事先用指令说明。事实上‘不能作为通用I/O口使用’也并不是‘不能’而是（使用者）‘不会’将其作为通用I/O口使用。你完全可以在指令中按排一条SETB P3.7的指令，并且当单片机执行到这条指令时，也会使P3.7变为高电平，但使用者不会这么去做，因为这通常这会导致系统的崩溃（即死机）。
四、程序的执行过程 单片机在通电复位后8051内的程序计数器（PC）中的值为‘0000’，所以程序总是从‘0000’单元开始执行，也就是说：在系统的ROM中一定要存在‘0000’这个单元，并且在‘0000’单元中存放的一定是一条指令。
五、堆栈 堆栈是一个区域，是用来存放数据的，这个区域本身没有任何特殊之处，就是内部RAM的一部份，特殊的是它存放和取用数据的方式，即所谓的‘先进后出，后进先出’，并且堆栈有特殊的数据传输指令，即‘PUSH’和‘POP’，有一个特殊的专为其服务的单元，即堆栈指针SP，每当执一次PUSH指令时，SP就（在原来值的基础上）自动加1，每当执行一次POP指令，SP就（在原来值的基础上）自动减1。由于SP中的值可以用指令加以改变，所以只要在程序开始阶段更改了SP的值，就可以把堆栈设置在规定的内存单元中，如在程序开始时，用一条MOV SP，#5FH指令，就时把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么一条设置堆栈指针的指令，因为开机时，SP的初始值为07H，这样就使堆栈从08H单元开始往后，而08H到1FH这个区域正是8031的第二、三、四工作寄存器区，经常要被使用，这会造成数据的浑乱。不同作者编写程序时，初始化堆栈指令也不完全相同，这是作者的习惯问题。当设置好堆栈区后，并不意味着该区域成为一种专用内存，它还是可以象普通内存区域一样使用，只是一般情况下编程者不会把它当成普通内存用了。
六、单片机的开发过程 这里所说的开发过程并不是一般书中所说的从任务分析开始，我们假设已设计并制作好硬件，下面就是编写软件的工作。在编写软件之前，首先要确定一些常数、地址，事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。如当某器件的连线设计好后，其地址也就被确定了，当器件的功能被确定下来后，其控制字也就被确定了。然后用文本编缉器（如EDIT、CCED等）编写软件，编写好后，用编译器对源程序文件编译，查错，直到没有语法错误，除了极简单的程序外，一般应用仿真机对软件进行调试，直到程序运行正确为止。运行正确后，就可以写片（将程序固化在EPROM中）。在源程序被编译后，生成了扩展名为HEX的目标文件，一般编程器能够识别这种格式的文件，只要将此文件调入即可写片。在此，为使大家对整个过程有个认识，举一例说明：
orG 0000H LJMP START
orG 040H
START：
MOV SP，#5FH ;设堆栈
LOOP：
NOP
LJMP LOOP ；循环
END ；结束
表1 :03000000020040BB
:0700400075815F000200431F
表2 02 00 40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF [...]]]></description>
			<content:encoded><![CDATA[<p>  由于最近涉及到电动调节阀的维修和控制问题，于是开始学习相关知识。涉及的内容本来只涉及到plc（可编程逻辑控制器），但是由于希望能够比较系统的学习，又由于plc是单片机的一种，因此将其中的一些入门的东西拿来看看，希望能够有助于进一步的学习！</p>
<p><span id="more-7"></span></p>
<p>初学单片机几个不易掌握的概念</p>
<p>随着电子技术的迅速发展，计算机已深入地渗透到我们的生活中，许多电子爱好者开始学习单片机知识，但单片机的内容比较抽象，相对电子爱好者已熟悉的模拟电路、数字电路，单片机中有一些新的概念，这些概念非常基本以至于一般作者不屑去谈，教材自然也不会很深入地讲解这些概念，但这些内容又是学习中必须要理解的，下面就结合本人的学习、教学经验，对这些最基本概念作一说明，希望对自学者有所帮助。<br />
一、总线：我们知道，一个电路总是由元器件通过电线连接而成的，在模拟电路中，连线并不成为一个问题，因为各器件间一般是串行关系，各器件之间的连线并不很多，但计算机电路却不一样，它是以微处理器为核心，各器件都要与微处理器相连，各器件之间的工作必须相互协调，所以就需要的连线就很多了，如果仍如同模拟电路一样，在各微处理器和各器件间单独连线，则线的数量将多得惊人，所以在微处理机中引入了总线的概念，各个器件共同享用连线，所有器件的8根数据线全部接到8根公用的线上，即相当于各个器件并联起来，但仅这样还不行，如果有两个器件同时送出数据，一个为0，一个为1，那么，接收方接收到的究竟是什么呢？这种情况是不允许的，所以要通过控制线进行控制，使器件分时工作，任何时候只能有一个器件发送数据（可以有多个器件同时接收）。器件的数据线也就被称为数据总线，器件所有的控制线被称为控制总线。在单片机内部或者外部存储器及其它器件中有存储单元，这些存储单元要被分配地址，才能使用，分配地址当然也是以电信号的形式给出的，由于存储单元比较多，所以，用于地址分配的线也较多，这些线被称为地址总线。<br />
二、数据、地址、指令：之所以将这三者放在一起，是因为这三者的本质都是一样的──数字，或者说都是一串‘0’和‘1’组成的序列。换言之，地址、指令也都是数据。指令：由单片机芯片的设计者规定的一种数字，它与我们常用的指令助记符有着严格的一一对应关系，不可以由单片机的开发者更改。地址：是寻找单片机内部、外部的存储单元、输入输出口的依据，内部单元的地址值已由芯片设计者规定好，不可更改，外部的单元可以由单片机开发者自行决定，但有一些地址单元是一定要有的（详见程序的执行过程）。数据：这是由微处理机处理的对象，在各种不同的应用电路中各不相同，一般而言，被处理的数据可能有这么几种情况：</p>
<p>1·地址（如MOV DPTR，#1000H），即地址1000H送入DPTR。 2·方式字或控制字（如MOV TMOD，#3），3即是控制字。<br />
3·常数（如MOV TH0，#10H）10H即定时常数。<br />
4·实际输出值（如P1口接彩灯，要灯全亮，则执行指令：MOV P1，#0FFH，要灯全暗，则执行指令：MOV P1，#00H）这里0FFH和00H都是实际输出值。又如用于LED的字形码，也是实际输出的值。<br />
理解了地址、指令的本质，就不难理解程序运行过程中为什么会跑飞，会把数据当成指令来执行了。</p>
<p>三、P0口、P2口和P3的第二功能用法 初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解，认为第二功能和原功能之间要有一个切换的过程，或者说要有一条指令，事实上，各端口的第二功能完全是自动的，不需要用指令来转换。如P3.6、P3.7分别是WR、RD信号，当微片理机外接RAM或有外部I/O口时，它们被用作第二功能，不能作为通用I/O口使用，只要一微处理机一执行到MOVX指令，就会有相应的信号从P3.6或P3.7送出，不需要事先用指令说明。事实上‘不能作为通用I/O口使用’也并不是‘不能’而是（使用者）‘不会’将其作为通用I/O口使用。你完全可以在指令中按排一条SETB P3.7的指令，并且当单片机执行到这条指令时，也会使P3.7变为高电平，但使用者不会这么去做，因为这通常这会导致系统的崩溃（即死机）。<br />
四、程序的执行过程 单片机在通电复位后8051内的程序计数器（PC）中的值为‘0000’，所以程序总是从‘0000’单元开始执行，也就是说：在系统的ROM中一定要存在‘0000’这个单元，并且在‘0000’单元中存放的一定是一条指令。<br />
五、堆栈 堆栈是一个区域，是用来存放数据的，这个区域本身没有任何特殊之处，就是内部RAM的一部份，特殊的是它存放和取用数据的方式，即所谓的‘先进后出，后进先出’，并且堆栈有特殊的数据传输指令，即‘PUSH’和‘POP’，有一个特殊的专为其服务的单元，即堆栈指针SP，每当执一次PUSH指令时，SP就（在原来值的基础上）自动加1，每当执行一次POP指令，SP就（在原来值的基础上）自动减1。由于SP中的值可以用指令加以改变，所以只要在程序开始阶段更改了SP的值，就可以把堆栈设置在规定的内存单元中，如在程序开始时，用一条MOV SP，#5FH指令，就时把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么一条设置堆栈指针的指令，因为开机时，SP的初始值为07H，这样就使堆栈从08H单元开始往后，而08H到1FH这个区域正是8031的第二、三、四工作寄存器区，经常要被使用，这会造成数据的浑乱。不同作者编写程序时，初始化堆栈指令也不完全相同，这是作者的习惯问题。当设置好堆栈区后，并不意味着该区域成为一种专用内存，它还是可以象普通内存区域一样使用，只是一般情况下编程者不会把它当成普通内存用了。<br />
六、单片机的开发过程 这里所说的开发过程并不是一般书中所说的从任务分析开始，我们假设已设计并制作好硬件，下面就是编写软件的工作。在编写软件之前，首先要确定一些常数、地址，事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。如当某器件的连线设计好后，其地址也就被确定了，当器件的功能被确定下来后，其控制字也就被确定了。然后用文本编缉器（如EDIT、CCED等）编写软件，编写好后，用编译器对源程序文件编译，查错，直到没有语法错误，除了极简单的程序外，一般应用仿真机对软件进行调试，直到程序运行正确为止。运行正确后，就可以写片（将程序固化在EPROM中）。在源程序被编译后，生成了扩展名为HEX的目标文件，一般编程器能够识别这种格式的文件，只要将此文件调入即可写片。在此，为使大家对整个过程有个认识，举一例说明：<br />
orG 0000H LJMP START<br />
orG 040H<br />
START：<br />
MOV SP，#5FH ;设堆栈<br />
LOOP：<br />
NOP<br />
LJMP LOOP ；循环<br />
END ；结束</p>
<p>表1 :03000000020040BB<br />
:0700400075815F000200431F</p>
<p>表2 02 00 40 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 75 81 5F 00 02 00 43</p>
<p>表3 表1为源程序，表2是汇编后得到的HEX文件，表3是由HEX文件转换成的目标文件，也就是最终写入EPROM的文件，它由编程器转换得到，也可以由HEXBIN一类的程序转换得到。学过手工汇编者应当不难找出表3与表1的一一对应关系，值得注意的是从02 00 40后开始的一长串‘FF’，直到75 81，这是由于伪指令：ORG 040H造成的结果。</p>
<p>七、仿真、仿真机 仿真是单片机开发过程中非常重要的一个环节，除了一些极简单的任务，一般产品开发过程中都要进行仿真，仿真的主要目的是进行软件调试，当然借助仿真机，也能进行一些硬件排错。一块单片机应用电路板包括单片机部份及为达到使用目的而设计的应用电路，仿真就是利用仿真机来代替应用电路板（称目标机）的单片机部份，对应用电路部份进行测试、调试。仿真有CPU仿真和ROM仿真两种，所谓CPU仿真是指用仿真机代替目标机的CPU，由仿真机向目标机的应用电路部份提供各种信号、数据，进行调试的方法。这种仿真可以通过单步运行、连续运行等多种方法来运行程序，并能观察到单片机内部的变化，便于改正程序中的错误。所谓ROM仿真，就是用仿真机代替目标机的ROM，目标机的CPU工作时，从仿真机中读取程序，并执行。这种仿真其实就是将仿真机当成一片EPROM，只是省去了擦片、写片的麻烦，并没有多少调试手段可言。通常这是二种不同类型的仿真机，也就是说，一台仿真机不能既做CPU仿真，又做ROM仿真。可能的情况下，当然以CPU仿真好。</p>
<p>来源：<a href="http://wenku.baidu.com/view/73b9683e0912a216147929d8.html">http://wenku.baidu.com/view/73b9683e0912a216147929d8.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wlbsm.com/2010/05/%e5%88%9d%e5%ad%a6%e5%8d%95%e7%89%87%e6%9c%ba%e5%87%a0%e4%b8%aa%e4%b8%8d%e6%98%93%e6%8e%8c%e6%8f%a1%e7%9a%84%e6%a6%82%e5%bf%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>白话PID控制</title>
		<link>http://www.wlbsm.com/2010/05/hello-world/</link>
		<comments>http://www.wlbsm.com/2010/05/hello-world/#comments</comments>
		<pubDate>Wed, 19 May 2010 22:37:10 +0000</pubDate>
		<dc:creator>yq2uan</dc:creator>
				<category><![CDATA[工控相关]]></category>
		<category><![CDATA[PID]]></category>
		<category><![CDATA[工控]]></category>
		<category><![CDATA[控制]]></category>

		<guid isPermaLink="false">http://wlbsm.com/?p=1</guid>
		<description><![CDATA[控制模型：人以PID控制的方式用水壶往水杯里倒印有刻度的半杯水后停下；
设定值：水杯的半杯刻度；
实际值：水杯的实际水量；
输出值：水壶的倒处数量和水杯舀出水量；
测量传感器：人的眼睛
执行对象：人
正执行：倒水
反执行：舀水

1、P比例控制，就是人看到水杯里水量没有达到水杯的半杯刻度，就按照一定水量从水壶里王水杯里倒水或者水杯的水量多过刻度，就以一定水量从水杯里舀水出来，这个一个动作可能会造成不到半杯或者多了半杯就停下来。
说明：P比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差（Steady-stateerror）。
2、PI积分控制，就是按照一定水量往水杯里倒，如果发现杯里的水量没有刻度就一直倒，后来发现水量超过了半杯，就从杯里往外面舀水，然后反复不够就倒水，多了就舀水，直到水量达到刻度。
说明：在积分I控制中，控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统，如果在进入稳态后存在稳态误差，则称这个控制系统是有稳态误差的或简称有差系统（SystemwithSteady-stateError）。为了消除稳态误差，在控制器中必须引入“积分项”。积分项对误差取决于时间的积分，随着时间的增加，积分项会增大。这样，即便误差很小，积分项也会随着时间的增加而加大，它推动控制器的输出增大使稳态误差进一步减小，直到等于零。因此，比例+积分（PI）控制器，可以使系统在进入稳态后无稳态误差。
3、PID微分控制，就是人的眼睛看着杯里水量和刻度的距离，当差距很大的时候，就用水壶大水量得倒水，当人看到水量快要接近刻度的时候，就减少水壶的得出水量，慢慢的逼近刻度，直到停留在杯中的刻度。如果最后能精确停在刻度的位置，就是无静差控制；如果停在刻度附近，就是有静差控制。
说明：在微分控制D中，控制器的输出与输入误差信号的微分（即误差的变化率）成正比关系。
自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳，其原因是由于存在有较大惯性组件（环节）或有滞后（delay）组件，具有抑制误差的作用，其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”，即在误差接近零时，抑制误差的作用就应该是零。这就是说，在控制器中仅引入“比例P”项往往是不够的，比例项的作用仅是放大误差的幅值，而目前需要增加的是“微分项”，它能预测误差变化的趋势。这样，具有比例+微分的控制器，就能够提前使抑制误差的控制作用等于零，甚至为负值，从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象，比例P+积分I+微分D（PID）控制器能改善系统在调节过程中的动态特性。
来源：http://blog.gongkong.com/blog_detail.Asp?Id=328670
]]></description>
			<content:encoded><![CDATA[<p>控制模型：人以PID控制的方式用水壶往水杯里倒印有刻度的半杯水后停下；<br />
设定值：水杯的半杯刻度；<br />
实际值：水杯的实际水量；<br />
输出值：水壶的倒处数量和水杯舀出水量；<br />
测量传感器：人的眼睛<br />
执行对象：人<br />
正执行：倒水<br />
反执行：舀水</p>
<p><span id="more-1"></span></p>
<p>1、P比例控制，就是人看到水杯里水量没有达到水杯的半杯刻度，就按照一定水量从水壶里王水杯里倒水或者水杯的水量多过刻度，就以一定水量从水杯里舀水出来，这个一个动作可能会造成不到半杯或者多了半杯就停下来。</p>
<p>说明：P比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差（Steady-stateerror）。</p>
<p>2、PI积分控制，就是按照一定水量往水杯里倒，如果发现杯里的水量没有刻度就一直倒，后来发现水量超过了半杯，就从杯里往外面舀水，然后反复不够就倒水，多了就舀水，直到水量达到刻度。</p>
<p>说明：在积分I控制中，控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统，如果在进入稳态后存在稳态误差，则称这个控制系统是有稳态误差的或简称有差系统（SystemwithSteady-stateError）。为了消除稳态误差，在控制器中必须引入“积分项”。积分项对误差取决于时间的积分，随着时间的增加，积分项会增大。这样，即便误差很小，积分项也会随着时间的增加而加大，它推动控制器的输出增大使稳态误差进一步减小，直到等于零。因此，比例+积分（PI）控制器，可以使系统在进入稳态后无稳态误差。</p>
<p>3、PID微分控制，就是人的眼睛看着杯里水量和刻度的距离，当差距很大的时候，就用水壶大水量得倒水，当人看到水量快要接近刻度的时候，就减少水壶的得出水量，慢慢的逼近刻度，直到停留在杯中的刻度。如果最后能精确停在刻度的位置，就是无静差控制；如果停在刻度附近，就是有静差控制。</p>
<p>说明：在微分控制D中，控制器的输出与输入误差信号的微分（即误差的变化率）成正比关系。</p>
<p>自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳，其原因是由于存在有较大惯性组件（环节）或有滞后（delay）组件，具有抑制误差的作用，其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”，即在误差接近零时，抑制误差的作用就应该是零。这就是说，在控制器中仅引入“比例P”项往往是不够的，比例项的作用仅是放大误差的幅值，而目前需要增加的是“微分项”，它能预测误差变化的趋势。这样，具有比例+微分的控制器，就能够提前使抑制误差的控制作用等于零，甚至为负值，从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象，比例P+积分I+微分D（PID）控制器能改善系统在调节过程中的动态特性。</p>
<p>来源：<a href="http://blog.gongkong.com/blog_detail.Asp?Id=328670">http://blog.gongkong.com/blog_detail.Asp?Id=328670</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wlbsm.com/2010/05/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>工控自动化快速成长之路</title>
		<link>http://www.wlbsm.com/2010/05/%e5%b7%a5%e6%8e%a7%e8%87%aa%e5%8a%a8%e5%8c%96%e5%bf%ab%e9%80%9f%e6%88%90%e9%95%bf%e4%b9%8b%e8%b7%af/</link>
		<comments>http://www.wlbsm.com/2010/05/%e5%b7%a5%e6%8e%a7%e8%87%aa%e5%8a%a8%e5%8c%96%e5%bf%ab%e9%80%9f%e6%88%90%e9%95%bf%e4%b9%8b%e8%b7%af/#comments</comments>
		<pubDate>Tue, 18 May 2010 05:17:53 +0000</pubDate>
		<dc:creator>yq2uan</dc:creator>
				<category><![CDATA[工控相关]]></category>
		<category><![CDATA[工控]]></category>
		<category><![CDATA[成长]]></category>

		<guid isPermaLink="false">http://www.wlbsm.com/?p=48</guid>
		<description><![CDATA[在这里我给学生们写一份自控快速成长之路的推荐书。（我讲的是学习方法而不是技术知识，方向以工控应用，以初级工控人员能力为目标，这里不讲述如何成为一个工控资深人士，因为每个资深人士的成功的路都不同但是都是艰辛的！）

一、在学期间把基础课学扎实主要是以下课程：数学（主要是高等数学、线性代数、离散数学而复变函数和积分变换实际应用中较少涉及）、英语（必备，这里我就不阐述它的重要性了大家都知道）物理、数字电子、自控原理（PID控制）、可编程控制器原理（主要是了解PLC结构原理）、C语言、数据结构。
二、在校期间业余学习以下几门技术。（windows网络设置、SQLSERVER开发、VB开发、excel应用、autocad使用）
三、毕业后尽量找一个工控工程公司，不要去生产厂做自控维护。（维护是门门通具不精）
四、当进入自控公司后首先要学的不是编程和设计而是要多学和多动手接触传感器、仪表、阀门还有泵和马达；了解为何在此工艺条件下选用这样的设备；了解这些设备原理如何动作和信号类型（24V/4-20MA/1-5V）。
五、参加西门子PT4的300/400编程和维护培训，或者等同类培训（不要参加网上课程在没有硬件和动手试验下纸上谈兵不得实用）建议为期一周。（课程科目要遵循西门子PT4的课程设置，因为西门子的课程设置非常实用，但是PT4的讲师实战能力。。。，所以大家选择培训不管在哪培训最主要是选择一个有丰富经验能讲得出来的老师）
六、参加国内组态软件的免费培训（可以参加网上课程，纯软件是可以模拟使用，而且这个有没有好的老师，没有什么太大区别）建议为期两天。
七、对于自控设计，这是一个非常严格的经验工作，不是一个新人就能学会的，它需要对当前流行各种自控设备及相关东西的型号和参数十分熟悉，然后才能设计出来一套实用的自控机柜，这个就需要各位学生使用一些不太光明的手段，那就是搜罗公司以前老前辈的设计的图纸，加班加点地看完。看看人家是如何设计的（设备和缆线的型号选择，供电，接地的设计，仪表接口2/3/4线制的设计，网络构架的设计）。这时候你只要能照猫画虎就可以，以后会慢慢明白老前辈费什么要这样设计，当然老前遗留下来的缺点你也是毫无遗漏的继承下来，但是毕竟利大于弊。
经过以上的磨练，可算是具备了工控入门的基础了，但是不要高兴得太早。您这把“青铜剑”还需要1-2年的工程实战才能得以出炉（迈进初级工控之门）！
在讲述工控初级应用之前，首先要阐明泛指的工控到底是做什么，首先工控工程师和仪表工程师还有电气工程师的分别是仪表工程师主要是设计仪表的选型、线缆的布置、桥架的设计等外部设计，而电气工程师，主要是设计强电（35KV-220v）的分配还有供电设备（UPS）的设计，而工控人员只是设计自控柜接线端子以上的内容（CPU、IO、继电器、端子、电源、开关、网络、计算机等），可能在一些小的工程公司，这些事情都是属于工控工程师来做，这没有办法因为公司要生存所以不会让你只是professional。接下来我将介绍一些进入初级工控之门的参考资料。
1、自控系统设计（参看王常力编写的dcs系统设计与应用）
2、西门子硬件设计（参看西门子硬件选型手册）
3、西门子工业网络通讯（参看西门子工业通讯指南）
4、西门子编程软件（参看STEP7编程手册/功能块手册）
5、西门子上位机软件（参看wincc深入浅出）
6、工控常用指南（参看剑思庭博客）
来源：http://blog.gongkong.com/blog_detail.Asp?Id=330074
]]></description>
			<content:encoded><![CDATA[<p>在这里我给学生们写一份自控快速成长之路的推荐书。（我讲的是学习方法而不是技术知识，方向以工控应用，以初级工控人员能力为目标，这里不讲述如何成为一个工控资深人士，因为每个资深人士的成功的路都不同但是都是艰辛的！）</p>
<p><span id="more-48"></span></p>
<p>一、在学期间把基础课学扎实主要是以下课程：数学（主要是高等数学、线性代数、离散数学而复变函数和积分变换实际应用中较少涉及）、英语（必备，这里我就不阐述它的重要性了大家都知道）物理、数字电子、自控原理（PID控制）、可编程控制器原理（主要是了解PLC结构原理）、C语言、数据结构。</p>
<p>二、在校期间业余学习以下几门技术。（windows网络设置、SQLSERVER开发、VB开发、excel应用、autocad使用）</p>
<p>三、毕业后尽量找一个工控工程公司，不要去生产厂做自控维护。（维护是门门通具不精）</p>
<p>四、当进入自控公司后首先要学的不是编程和设计而是要多学和多动手接触传感器、仪表、阀门还有泵和马达；了解为何在此工艺条件下选用这样的设备；了解这些设备原理如何动作和信号类型（24V/4-20MA/1-5V）。</p>
<p>五、参加西门子PT4的300/400编程和维护培训，或者等同类培训（不要参加网上课程在没有硬件和动手试验下纸上谈兵不得实用）建议为期一周。（课程科目要遵循西门子PT4的课程设置，因为西门子的课程设置非常实用，但是PT4的讲师实战能力。。。，所以大家选择培训不管在哪培训最主要是选择一个有丰富经验能讲得出来的老师）</p>
<p>六、参加国内组态软件的免费培训（可以参加网上课程，纯软件是可以模拟使用，而且这个有没有好的老师，没有什么太大区别）建议为期两天。</p>
<p>七、对于自控设计，这是一个非常严格的经验工作，不是一个新人就能学会的，它需要对当前流行各种自控设备及相关东西的型号和参数十分熟悉，然后才能设计出来一套实用的自控机柜，这个就需要各位学生使用一些不太光明的手段，那就是搜罗公司以前老前辈的设计的图纸，加班加点地看完。看看人家是如何设计的（设备和缆线的型号选择，供电，接地的设计，仪表接口2/3/4线制的设计，网络构架的设计）。这时候你只要能照猫画虎就可以，以后会慢慢明白老前辈费什么要这样设计，当然老前遗留下来的缺点你也是毫无遗漏的继承下来，但是毕竟利大于弊。</p>
<p>经过以上的磨练，可算是具备了工控入门的基础了，但是不要高兴得太早。您这把“青铜剑”还需要1-2年的工程实战才能得以出炉（迈进初级工控之门）！</p>
<p>在讲述工控初级应用之前，首先要阐明泛指的工控到底是做什么，首先工控工程师和仪表工程师还有电气工程师的分别是仪表工程师主要是设计仪表的选型、线缆的布置、桥架的设计等外部设计，而电气工程师，主要是设计强电（35KV-220v）的分配还有供电设备（UPS）的设计，而工控人员只是设计自控柜接线端子以上的内容（CPU、IO、继电器、端子、电源、开关、网络、计算机等），可能在一些小的工程公司，这些事情都是属于工控工程师来做，这没有办法因为公司要生存所以不会让你只是professional。接下来我将介绍一些进入初级工控之门的参考资料。</p>
<p>1、自控系统设计（参看王常力编写的dcs系统设计与应用）</p>
<p>2、西门子硬件设计（参看西门子硬件选型手册）</p>
<p>3、西门子工业网络通讯（参看西门子工业通讯指南）</p>
<p>4、西门子编程软件（参看STEP7编程手册/功能块手册）</p>
<p>5、西门子上位机软件（参看wincc深入浅出）</p>
<p>6、工控常用指南（<a href="http://blog.gongkong.com/Index.Asp?Id=7409">参看剑思庭博客</a>）</p>
<p>来源：<a href="http://blog.gongkong.com/blog_detail.Asp?Id=330074">http://blog.gongkong.com/blog_detail.Asp?Id=330074</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wlbsm.com/2010/05/%e5%b7%a5%e6%8e%a7%e8%87%aa%e5%8a%a8%e5%8c%96%e5%bf%ab%e9%80%9f%e6%88%90%e9%95%bf%e4%b9%8b%e8%b7%af/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

