<?xml version="1.0" encoding="gb2312"?><rss version="2.0"><channel><title>laobing221</title><link></link><description></description><language>zh-cn</language><generator>Goodspeed Rss</generator><ttl>10</ttl><pubDate>Fri, 09 Jan 2009 15:51:26 GMT</pubDate><category></category><copyright></copyright><docs></docs><item><title>BCD码　　即BCD代码</title><pubDate>Tue, 16 Dec 2008 19:14:40 GMT</pubDate><link>http://blog.cechina.cn/laobing221/164993/message.aspx</link><description>&lt;h1&gt;BCD码&lt;/h1&gt;
&lt;div id="lemmaContent"&gt;
&lt;div class="bpctrl"&gt;&lt;/div&gt;　　即BCD代码。Binary-Coded Decimal&amp;#8206;，简称&lt;a href="http://baike.baidu.com/view/179451.htm" target=_blank&gt;&lt;font color="#3366cc"&gt;BCD&lt;/font&gt;&lt;/a&gt;，称BCD码或二-十进制代码，亦称二进码十进数。是一种&lt;a href="http://baike.baidu.com/view/18536.htm" target=_blank&gt;&lt;font color="#3366cc"&gt;二进制&lt;/font&gt;&lt;/a&gt;的数字编码形式，用二进制编码的&lt;a href="http://baike.baidu.com/view/359301.htm" target=_blank&gt;&lt;font color="#3366cc"&gt;十进制&lt;/font&gt;&lt;/a&gt;代码。这种编码形式利用了四个位元来储存一个十进制的数码，使二进制和十进制之间的转换得以快捷的进行。这种编码技巧，最常用于会计系统的设计里，因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法，采用BCD码，既可保存数值的精确度，又可免却使电脑作浮点运算时所耗费的时间。此外，对于其他需要高精确度的计算，BCD编码亦很常用。&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　由于十进制数共有0、1、2、……、9十个数码，因此，至少需要4位二进制码来表示1位十进制数。4位二进制码共有2^4=16种码组，在这16种代码中，可以任选10种来表示10个十进制数码，共有N=16！/（16-10）！约等于2.9乘以10的10次方种方案。常用的BCD代码列于末。&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　&lt;b&gt;常用BCD编码方式&lt;/b&gt;&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　最常用的BCD编码，就是使用"0"至"9"这十个数值的二进码来表示。这种编码方式，在中国大陆称之为“&lt;a href="http://baike.baidu.com/view/1739978.htm" target=_blank&gt;&lt;font color="#3366cc"&gt;8421码&lt;/font&gt;&lt;/a&gt;”。除此以外，对应不同需求，各人亦开发了不同的编码方法，以适应不同的需求。这些编码，大致可以分成有权码和无权码两种：&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　有权BCD码，如：8421(最常用)、2421、5421… &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　无权BCD码，如：余3码、格雷码… &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　以下为三种常见的BCD编码的比较。&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　十进数 8421-BCD码 余3-BCD码 2421-A码 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　(M10) Ｄ Ｃ Ｂ Ａ C3 C2 C1 C0 a3 a2 a1 a0 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　０ ０ ０ ０ ０ ０ ０ １ １ ０ ０ ０ ０ &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　１ ０ ０ ０ １ ０ １ ０ ０ ０ ０ ０ １ &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　２ ０ ０ １ ０ ０ １ ０ １ ０ ０ １ ０ &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　３ ０ ０ １ １ ０ １ １ ０ ０ ０ １ １ &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　４ ０ １ ０ ０ ０ １ １ １ ０ １ ０ ０ &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　５ ０ １ ０ １ １ ０ ０ ０ ０ １ ０ １ &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　６ ０ １ １ ０ １ ０ ０ １ ０ １ １ ０ &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　７ ０ １ １ １ １ ０ １ ０ ０ １ １ １ &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　８ １ ０ ０ ０ １ ０ １ １ １ １ １ ０ &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　９ １ ０ ０ １ １ １ ０ ０ １ １ １ １ &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　&lt;b&gt;常用BCD码&lt;/b&gt;&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　十进制数 8421码 5421码 2421码 余3码 余3循环码&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　0 0000 0000 0000 0011 0010&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　1 0001 0001 0001 0100 0110&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　2 0010 0010 0010 0101 0111&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　3 0011 0011 0011 0110 0101&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　4 0100 0100 0100 0111 0100&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　5 0101 1000 1011 1000 1100&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　6 0110 1001 1100 1001 1101&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　7 0111 1010 1101 1010 1111&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　8 1000 1011 1110 1011 1110&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　9 1001 1100 1111 1100 1010&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　-----------------------&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　特点：&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　8421编码直观，好理解。&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　5421码和2421码中大于5的数字都是高位为1，5以下的高位为0。&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　余3码是8421码加上3，有上溢出和下溢出的空间。&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　格雷码相邻2个数有三位相同，只有一位不同。&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　————————————————————&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　什么是BCD码2006-3-19 13:24:45&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　bcd码也叫8421码就是将十进制的数以8421的形式展开成二进制，大家知道十进制是0～9十个数组成，着十个数每个数都有自己的8421码： &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　0＝0000 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　1＝0001 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　2＝0010 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　3＝0011 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　4＝0100 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　5＝0101 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　6＝0110 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　7＝0111 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　8＝1000 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　9＝1001 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　举个例子： &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　321的8421码就是 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　3 2 1 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　0011 0010 0001&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　原因:0011=8x0+4x0+1x2+1x1=3 0010=8x0+4x0+2x1+1x0=2. 0001=8x0+4x0+2x0+1x1=1&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　具体:&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　bcd码是十位二进制码, 也就是将十进制的数字转化为二进制, 但是和普通的转化有一点不同, 每一个十进制的数字0-9都对应着一个四位的二进制码,对应关系如下: 十进制0 对应 二进制0000 ;十进制1 对应二进制0001 ....... 9 1001 接下来的10就有两个上述的码来表示 10 表示为00010000 也就是BCD码是遇见1001就产生进位,不象普通的二进制码,到1111才产生进位10000&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　举例:&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　某二进制无符号数11101010，转换为三位非压缩BCD数，按百位、十位和个位的顺序表示，应为&amp;lt;U&amp;gt;__C&amp;lt;/U&amp;gt;__。 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　A.00000001 00000011 00000111 B. 00000011 00000001 00000111&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　C.00000010 00000011 00000100 D. 00000011 00000001 00001001&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　解:(1)11101010转换为十进制:234&lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　(2)按百位、十位和个位的顺序表示，应为&amp;lt;U&amp;gt;__C&amp;lt;/U&amp;gt;__。 &lt;br&gt;
&lt;div class="spctrl"&gt;&lt;/div&gt;　　附注：压缩BCD码与非压缩BCD码的区别—— 压缩BCD码的每一位用4位二进制表示，一个字节表示两位十进制数。例如10010110B表示十进制数96D；非压缩BCD码用1个字节表示一位十进制数，高四位总是0000，低4位的0000~1001表示0~9.例如00001000B表示十进制数8. &lt;br&gt;&lt;/div&gt;</description><comments></comments><guid>http://blog.cechina.cn/laobing221/164993/message.aspx</guid><category> 其他技术</category><author></author></item><item><title>电器开关柜二次回路空间布线专家系</title><pubDate>Mon, 01 Dec 2008 20:16:21 GMT</pubDate><link>http://blog.cechina.cn/laobing221/159423/message.aspx</link><description>【摘要】本文介绍了一种用于电器开关柜二次回路三维空间布线的关系型数据库驱动的专家系统。该系统将走线槽的概念扩展，形成柜内的连接网络；采用里德算法作为模式匹配的依据；采用改进的狄克斯特拉算法求取连接网络内的最短路径；最终由OpenGL来完成空间接线的三维显示。&lt;br&gt;　　【关键词】专家系统，三维走线，关系型数据库，最短路径，连接网络，OpenGL&lt;br&gt;　　 1引言&lt;br&gt;　　成套电器开关柜作为高、低压行业的主导产品已经广泛应用于工矿企业的电力系统之中。目前关于它的计算机辅助设计软件大多是在二维下处理元件布置及母排布线情况，工程人员在设计阶段很少顾及到空间二次走线的美观及合理性。实际上，开关柜总是在整体结构设计完成后，才由接线工人根据经验进行连线，由于工人们并不知道接线的具体长度，只有凭感觉宁长勿短地裁线，因而常常造成很多浪费。针对以上问题，本文提出了自动生成三维二次走线的专家系统，它可以在开关柜的设计阶段便形成空间走线图，并且准确计算出每根连线的长度，从而为开关柜的进一步优化设计提供依据。在真正的生产中，可以根据软件求出的接线长度准确裁线，在每根线从头到尾都打上标号，这样就既方便工人接线，提高工作效率，又减少了接线错误。&lt;br&gt;　　 2关系数据库驱动的专家系统在空间二次走线中的应用 
&lt;div class="Rqa612"&gt;来源:输配电设备网&lt;/div&gt;&lt;br&gt;　　2.1专家系统的引入&lt;br&gt;　　成套电器开关柜中的电器元件多种多样，各接线端的形状、位置及接线方式也有很多变化。为了准确反映三维空间中二次接线的起止位置及走线路径，计算机必须具备判断各种元件的不同情况，应付各种可能出现的接线端子的专家经验。进一步地考虑，为了适应以后可能出现的新的情况，计算机还应该可以不断地积累和学习知识。而这种能够根据不断积累、学习的知识推理出一定结论的计算机人工智能系统就是专家系统［1］。专家系统最主要的部分就是知识库，它又由事实库和规则库组成［2］。&lt;br&gt;　　2.2关系型数据库驱动的专家系统&lt;br&gt;　　专家系统的建立涉及到知识库的获取(智能编辑器)、知识库的维护、推理机制、跟踪解释机制的生成、功能共享数据库的建立等一系列过程，通常都是依赖于专门的专家系统开发工具，经过知识工程师长期努力才能完成［3］。为了加快开发周期，利用现有的数据库技术缩减开发步骤，本文提出了一种由关系型数据库驱动的专家系统(RelationalDatabaseDroveExpertSystem简称RDDES)。&lt;br&gt;　　在RDDES中，组成知识库的事实库(自用户获取)和规则库(自领域专家获取)都由关系型数据库进行存贮。事实可以存贮在若干个表格中，表格之间通过数据库索引进行关联；规则库中的每项规则都由“如果”、“则”及“优先级别”三个数据域来表示。之所以称RDDES为数据库驱动，是因为在RDDES规则库的“如果”域中只能存贮在SQL(StructureQueryLanguage)语言的Where子句中合法的字符串。SQL语言作为数据库查询的规范已被所有关系型数据库所采用［4］。在RDDES的推理机制中，事实与规则的模式匹配完全由SQL语言来决定，即系统根据规则库中“如果”域中的字符串生成Select...Where...语句从而查询出事实库中符合条件的记录进行处理，这样就不需要开发专门用于这个专家系统的事实库与规则库的匹配机制了。另外，由于关系型数据库表格间的相关性，在“如果”域中只要求输入主要事实，相关的辅助事实可以通过关联由相关的数据表格中读出。 
&lt;div class="Rqa612"&gt;来源:输配电设备网&lt;/div&gt;&lt;br&gt;　　2.3连接网络概念的引入&lt;br&gt;　　一般情况下，布线问题可以归结为图论中的最短路径问题［5］，因此首先要生成一个以接线所经空间拐点为节点的拓朴网络。但是如果把每个接线端子及空间拐点都作为网络节点，那么这个拓朴网络将极其复杂以至无法求解。在实际生产中，接线工人为了方便走线，会在开关柜内设计出若干走线槽，二次连线都是成捆地从这些走线槽中经过。基于这种经验，将走线槽的概念扩展，可以在开关柜内生成一个连通的连接网络，如图1所示。虽然连接网络是一个空间的概念，但由它产生的拓朴网络是一个节点具有三维坐标的平面图，因此可以采用求网络最短路径的算法获得接线路径。采用了如图所示的连接网络后，只把连接网络中的拐点作为网络节点，这时除了同一元件上不同接线端子之间的连接外，专家系统总是分两步来解决走线问题：1、由专家系统决定如何将连线由两个接线端子走到距离各自最近的网线中；2、当某支连线的首尾两端都在连接网络中时，由专家系统在拓朴网络中生成两个新节点，然后用改进的狄克斯特拉算法求出这两点间最短路径。　　 &lt;br&gt;　　图1开关柜中的元件指示及连接网络&lt;br&gt;　　 &lt;br&gt;　　 2.4空间二次走线专家系统知识库结构&lt;br&gt;　　在空间二次走线专家系统中，专家求解的目的是找出接线起始端到终止端的路径，因此初始时的事实就是已知的这些接线端子的信息，而规则则是电器领域专家针对不同接线端而采用的走线方式。由于接线从起始端子出发到最终到达终止端子的过程中要遵循许多不同的规则，因此系统不可能根据这些初始事实一次性完成走线任务，而只能由初始事实进一步生成新的事实(先从接线端走到一个过渡点)，经过一次次地模式匹配，最终处理完所有事实(包括接线端及过渡点)。规则库的“如果”域中存放了符合SQL语言Where子句语法的字符串，“则”域中给出了相应的处理。系统直接由“如果”域生成Select语句，再由自身的编译机制读取处理信息，然后从功能共享数据库中找到相应函数进行处理。 
&lt;div class="Rqa612"&gt;来源:http://www.tede.cn&lt;/div&gt;&lt;br&gt;　　2.5模式匹配的里德算法(RatePatternMatchingAlgorithm)&lt;br&gt;　　不同于一般专家系统中采用的规则驱动所需事实库的模式匹配，如图2(a)所示，空间二次走线专家系统采用了以事实去驱动规则库搜索的里德匹配算法。它利用了基于规则的专家系统的时间冗余特性，把每个循环中匹配过程的状态都保留下来，仅对事实库中发生的变化重新计算状态的变化，如图2(b)所示，从而大大提高了效率。　　 &lt;br&gt;　　图2事实库与规则库的匹配&lt;br&gt;　　 &lt;br&gt;　　 3三维空间的显示&lt;br&gt;　　本文以三维图形规范OpenGL［6］为基础编制了图形后处理系统用于显示开关柜三维空间走线情况。首先，系统读取面板、元件数据生成面板及元件链表，链表中的每个节点存贮了实体的长、宽、高、X、Y、Z方向的坐标值和旋转角度以及颜色等信息。其次，专家系统求解时，连线在从起始端到终止端的走线过程中，每一步经过的路径都被记录在一个专门的数据表格中，后处理系统根据这个表格生成接线链表。最后，系统调用一系列OpenGL提供的API函数［7］，将面板链表和元件链表中的实体与接线链表中的线段连续显示出来，如图3所示。为了方便用户观察，系统还提供了三维缩放、平移及旋转工具。　　 &lt;br&gt;　　图3开关柜空间二次走线图及接线表 
&lt;div class="Rqa612"&gt;来源:输配电设备网&lt;/div&gt;&lt;br&gt;　　 &lt;br&gt;　　 4小结&lt;br&gt;　　本文讨论了根据开关柜二次接线表自动生成柜内三维空间走线的方法。图1中给出了一个XL-21型动力箱的开关柜实例，当用户输入了接线端子的位置及二次回路接线关系，即初始事实后，由专家系统求解，最终生成三维空间的二次走线图及附有每根接线长度的连线表。图3为三维自动布线的结果。&lt;br&gt;　　由于开关柜内的走线大都是成捆的，当接线完成后很难直接看出每根连线的走向，因此系统提供了加亮被选择接线的功能，即用户在接线表中选定某根接线，三维图形中相应的接线便会以红色显示出来，见图3，这样可以非常方便地检查柜内是否有接线错误。另外，三维图形中以虚线表示的接线是二次线路连接到一次线路中的部分。由于这些部分平常通过的电流较大，接线被烧断的可能性也就较大，因此在实际生产中总是留出一些余度，并不一定象图中所示方向走线。系统在计算每根接线的长度时，一般情况是先根据从接线端子走到连接网络时所经节点的坐标求取接线端子到连接网络的距离，再加上连接网络中经过的所有边的权值得出连线总长的。对于这种直接和一次线路相接的端子，系统会另外再加上一定的冗余长度。&lt;br&gt;　　由于开关柜内所有二次接线的总长能够很快计算出来，设计人员只要调整元件位置(调整接线端子的空间位置)或调整走线槽的位置(改变连接网络走向)，系统会重新走线并计算出线路总长，设计人员根据两次计算结果的比较便可选择出更合理的设计方案。 
&lt;div class="Rqa612"&gt;来源:http://www.tede.cn&lt;/div&gt;&lt;br&gt;　　作者单位:张继强陈德桂(西安交通大学，西安710049)&lt;br&gt;　　 &lt;br&gt;　　参考文献&lt;br&gt;　　 [1]何新贵编著.知识处理与专家系统.国防工业出版社，1990.9&lt;br&gt;　　[2]吴信东编著.专家系统设计.中国科学技术大学出版社，1990.4&lt;br&gt;　　[3]谭东风编译.实用专家系统指南.国防科技大学出版社，1991.5统</description><comments></comments><guid>http://blog.cechina.cn/laobing221/159423/message.aspx</guid><category> 其他技术</category><author></author></item><item><title>PLC几种置位、复位的方法和比较</title><pubDate>Sat, 15 Nov 2008 21:42:16 GMT</pubDate><link>http://blog.cechina.cn/laobing221/153922/message.aspx</link><description>&lt;p&gt;PLC几种置位、复位的方法和比较&lt;/p&gt;
&lt;div&gt;位置位、复位操作方法上，有好几种方法，可以直接采用置位、复位指令，也可以采用数据传送指令、表格填充指令，甚至可以采用移位循环指令。&lt;/div&gt;
&lt;div&gt;这几种方法在具体运用时，也要根据情况而定。下面用一个范例来讲解他们的不同之处。要求对Q0.0～0.7、Q1.0～1.7十六位输出进行置位、复位。&lt;/div&gt;
&lt;div align="center"&gt;&lt;a href="http://www.im100.com/uploads/allimg/080902/2029570.gif" target=_blank&gt;&lt;a href="http://www.im100.com/uploads/allimg/080902/2029570.gif" target=_blank&gt;&lt;img height="207" alt="点击看大图" src="http://www.im100.com/uploads/allimg/080902/2029570.gif" width="400"&gt;&lt;/a&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div align="center"&gt;图 几种置位、复位的方法&lt;/div&gt;
&lt;div&gt;在以上几种方法中，除移位循环指令外，其他指令比较好理解。&lt;/div&gt;
&lt;div&gt;移位循环指令的方法，置位是对16#FFFF十六位常数左循环16位，送入输出字QW0（由Q0.0～0.7、Q1.0～1.7组成），无论16#FFFF如何循环，还是16#FFFF，16位输出。复位采用对QW0一次扫描周期一次执行16位左移位指令，将QW0中的数据全部移出（如果是带符号位的字，连符号位也移出），输出复位。&lt;/div&gt;
&lt;div&gt;在上面的方法中，直接采用置位、复位的方法不仅可以对字节、字、双字中的位进行置位、复位操作，也可以对不成字节、字、双字的位进行操作。而数据传送指令、移位循环指令、填充指令只能对字节、字、双字中的位进行置位、复位操作，其中填充指令还只能对字操作。&lt;/div&gt;
&lt;div&gt;比如单单对Q0.0～0.6七个位输出进行置位、复位，采用数据传送指令、移位循环指令、填充指令是很难实现的，此时只有采用直接置位、复位指令的方法。&lt;/div&gt;</description><comments></comments><guid>http://blog.cechina.cn/laobing221/153922/message.aspx</guid><category> PLC/PAC</category><author></author></item><item><title>关于PLC和变频器规范布线的建议</title><pubDate>Sat, 15 Nov 2008 21:41:25 GMT</pubDate><link>http://blog.cechina.cn/laobing221/153921/message.aspx</link><description>&lt;p&gt;关于PLC和变频器规范布线的建议&lt;/p&gt;
&lt;div&gt;&lt;font size="2"&gt;在控制系统中，使用PLC的模拟量控制多台变频器，由于变频器本身产生强干扰信号的特性和模拟量抗干扰能力不与数字量抗干扰能力强的特性；因此为了最大程度的消除变频器对模拟量的干扰，在布线和接地等方面就需要采取更加严密的措施。&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;一．&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;关于布线&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;1．&amp;nbsp;信号线与动力线必须分开走线&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;使用模拟量信号进行远程控制变频器时，为了减少模拟量受来自变频器和其它设备的干扰，请将控制变频器的信号线与强电回路（主回路及顺控回路）分开走线。距离应在30cm以上。即使在控制柜内，同样要保持这样的接线规范。该信号与变频器之间的控制回路线最长不得超过50m。&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;2．信号线与动力线必须分别放置在不同的金属管道或者金属软管内部&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;由于水系统的两台富士变频器离控制柜较远分别为30m和20m，因此连接PLC和变频器的信号线如果不放置在金属管道内，极易受到变频器和外部设备的干扰；同时由于变频器无内置的电抗器，所以变频器的输入和输出级动力线对外部会产生极强的干扰，因此放置信号线的金属管或金属软管一直要延伸到变频器的控制端子处，以保证信号线与动力线的彻底分开。&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;3．&amp;nbsp;模拟量控制信号线应使用双股绞合屏蔽线，电线规格为0.5～2mm&lt;sup&gt;2&lt;/sup&gt;。在接线时一定&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;要注意，电缆剥线要尽可能的短（5-7mm左右），同时对剥线以后的屏蔽层要用绝缘胶布包起来，以防止屏蔽线与其它设备接触引入干扰。&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;4．&amp;nbsp;为了提高接线的简易性和可靠性，推荐信号线上使用压线棒端子。压接端子选择如下图：&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.im100.com/uploads/allimg/080902/2040410.jpg" target=_blank&gt;&lt;font size="2"&gt;&lt;a href="http://www.im100.com/uploads/allimg/080902/2040410.jpg" target=_blank&gt;&lt;img height="155" alt="点击看大图" src="http://www.im100.com/uploads/allimg/080902/2040410.jpg" width="400"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font size="2"&gt;5:如无使用压线端子，接线时请注意：&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;a href="http://www.im100.com/uploads/allimg/080902/2040411.jpg" target=_blank&gt;&lt;font size="2"&gt;&lt;a href="http://www.im100.com/uploads/allimg/080902/2040411.jpg" target=_blank&gt;&lt;img height="187" alt="点击看大图" src="http://www.im100.com/uploads/allimg/080902/2040411.jpg" width="400"&gt;&lt;/a&gt;&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;
&lt;div&gt;&lt;font size="2"&gt;一．&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;关于接地&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;1．&amp;nbsp;变频器的接地应该与PLC控制回路单独接地，在不能够保证单独接地的情况下，为了减少变频器对控制器的干扰，控制回路接地可以浮空，但变频器一定要保证可靠接地。在控制系统中建议将模拟量信号线的屏蔽线两端都浮空，同时由于在机组上PLC与变频器共用一个大地，因此建议在可能的情况下，将PLC单独接地或者将PLC与机组地绝缘开来。&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;2．&amp;nbsp;变频器的接地&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&amp;#8226;400V级：C种接地（接地电阻10Ω以下）。&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&amp;#8226;接地线切勿与焊机及动力设备共用。&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&amp;#8226;接地线请按照电气设备技术基准所规定的导线线径规格。&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如35KW的变频器接地线线径推荐为22&lt;/span&gt; mm&lt;sup&gt;2&lt;/sup&gt;，87KW的接地线线径推荐为50 mm&lt;sup&gt;2&lt;/sup&gt;。&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&amp;#8226;接地线在可能范围内尽量短。由于变频器产生漏电流，与接地点距离太远则接地端子的电位不安定。&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;&amp;#8226;使用两台以上变频器的场合，请勿将接地线形成回路。如图&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.im100.com/uploads/allimg/080902/2040412.jpg" target=_blank&gt;&lt;font size="2"&gt;&lt;img title="点击在新窗口查看原始图片" alt="" src="http://www.im100.com/uploads/allimg/080902/2040412.jpg"border="0"&gt;&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;&lt;span&gt;
&lt;div&gt;&lt;font size="2"&gt;1．&amp;nbsp;变频器与电机间的接线距离。&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;变频器与电机间的接线距离较长的场合，来自电缆的高次谐波漏电流，会对变频器和周边设备产生不利影响。因此为减少变频器的干扰，需要对变频器的载波频率进行调整，请参考下表：&lt;/font&gt;&lt;/div&gt;
&lt;div align="center"&gt;
&lt;table cellSpacing="0" cellPadding="0" border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="211"&gt;
&lt;div align="center"&gt;&lt;font size="2"&gt;变频器、电机间的接线距离&lt;/font&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width="132"&gt;
&lt;div align="center"&gt;&lt;font size="2"&gt;50m以下&lt;/font&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width="132"&gt;
&lt;div align="center"&gt;&lt;font size="2"&gt;100m以下&lt;/font&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width="93"&gt;
&lt;div align="center"&gt;&lt;font size="2"&gt;100m以上&lt;/font&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="211"&gt;
&lt;div align="center"&gt;&lt;font size="2"&gt;载波频率&lt;/font&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width="132"&gt;
&lt;div align="center"&gt;&lt;font size="2"&gt;15KHz以下&lt;/font&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width="132"&gt;
&lt;div align="center"&gt;&lt;font size="2"&gt;10KHz以下&lt;/font&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width="93"&gt;
&lt;div align="center"&gt;&lt;font size="2"&gt;5KHz以下&lt;/font&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;</description><comments></comments><guid>http://blog.cechina.cn/laobing221/153921/message.aspx</guid><category> PLC/PAC</category><author></author></item><item><title>PLC正确接地的另类思维</title><pubDate>Sat, 15 Nov 2008 21:40:22 GMT</pubDate><link>http://blog.cechina.cn/laobing221/153920/message.aspx</link><description>&lt;p&gt;PLC正确接地的另类思维&lt;/p&gt;
&lt;div align="left"&gt;在PLC调试中，经常会遇到PLC干扰和接地问题。作为一名技术人员，如果具有一套完整PLC接地的思维模式和处理方法，就能在干扰面前，按照自己的思路，不慌不乱、按部就班地分析和处理。&lt;/div&gt;
&lt;div align="left"&gt;目前，探讨PLC接地的文章和方法很多，但大多都是局限于理论和片面的经验。如果我们从排水管道的角度，另类思维一下，完整的PLC接地的思维模式和处理方法就很容易形成。现将我的一些经验简单的介绍给大家，更多具体的探讨详见中国工控网的工控论坛（http://www.chinakong.com/ASP/forum/disp.asp?owner=1&amp;amp;ID=17012）。&lt;/div&gt;
&lt;div align="left"&gt;PLC接地就好比城市里的排水管道，产生的静电干扰就好比是排水管道里的水。管道如何让水尽快地排除需要做到以下几点：&lt;/div&gt;
&lt;div align="left"&gt;1、排水管道的管径要大，排水就不会淤积，就像接地极一样，接地线的线经要尽可能的大。PLC的接地线不能低于2.5mm&lt;sup&gt;2&lt;/sup&gt;&lt;/div&gt;
&lt;div align="left"&gt;2、排水管道网尽可能的减少节点，让水直接排入地下，如果排水管道的节点多，水流自然就慢，好比接地极的静电放电就慢，干扰不能很快消除，因此，所有设备的接地必须直接用一个点接入地，这就是单点接地。如图1和图2所示（虚线为接地线）。&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.im100.com/uploads/allimg/080904/1505130.gif" target=_blank&gt;&lt;img title="点击在新窗口查看原始图片" alt="" src="http://www.im100.com/uploads/allimg/080904/1505130.gif"border="0"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;图1 错误的接地方式&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.im100.com/uploads/allimg/080904/1505131.gif" target=_blank&gt;&lt;img title="点击在新窗口查看原始图片" alt="" src="http://www.im100.com/uploads/allimg/080904/1505131.gif"border="0"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;图2 正确的接地方式&lt;/div&gt;
&lt;div align="left"&gt;3、排水管网内的水是不均匀的，有的地方水多，有的地方水少，入地口最好放在水多的地方。这样，管道里的水就放得快。静电也是如此，接地点尽可能的放在容易产生静电的设备处，比如变频器、可控硅电加热等设备旁。如图2所示。&lt;/div&gt;
&lt;div align="left"&gt;4、排水管道的内壁一定要光滑，光滑了，阻力就小，排水效果就好。接地极也是如此，接地电阻一定要小，电势差就小，放电产生的干扰就小。接地电阻不能小于4欧姆。&lt;/div&gt;
&lt;div align="left"&gt;排水管道中的水尽快排出的道理，做为一般常人是很容易理解的。从排水管道的另向思维中，就很容易形成PLC接地的思维方式，有了正确的思维方式，就能很容易地从容面对PLC干扰了。&lt;/div&gt;</description><comments></comments><guid>http://blog.cechina.cn/laobing221/153920/message.aspx</guid><category> PLC/PAC</category><author></author></item><item><title>PLC常见故障处理</title><pubDate>Sat, 15 Nov 2008 21:39:26 GMT</pubDate><link>http://blog.cechina.cn/laobing221/153919/message.aspx</link><description>&lt;p&gt;PLC常见故障处理&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 维护概述&lt;/strong&gt; &lt;br&gt;&lt;strong&gt;2. 查找故障的设备&lt;/strong&gt; &lt;br&gt;&lt;strong&gt;3. 基本的查找故障顺序&lt;/strong&gt; &lt;br&gt;&lt;strong&gt;4. 一般查找故障步骤&lt;/strong&gt; &lt;br&gt;&lt;strong&gt;5. 组件的更换 &lt;/strong&gt;&lt;br&gt;&lt;strong&gt;6. 增设存储器 &lt;/strong&gt;&lt;br&gt;&lt;br&gt;&lt;strong&gt;维护概述&lt;/strong&gt;&lt;br&gt;&lt;br&gt;一般各型PLC（以下以无锡华光电子工业有限公司生产的SR系列PLC，做为描述样板，其余各型PLC大同小异）均设计成长期不间断的工作制。但是，偶然有的地方也需要对动作进行修改，迅速找到这个场所并修改它们是很重要的。修改发生在PLC以外的 动作需要许多时间。&lt;br&gt;&lt;br&gt;&lt;strong&gt;查找故障的设备&lt;/strong&gt;&lt;br&gt;&lt;br&gt;SR PLC的指示灯及机内设备，有益于对PLC整个控制系统查找故障。编程器是主要的诊断工具，他能方便地插到PLC上面。在编程器上可以观察整个控制系统的状态，当您去查找PLC为核心的控制系统的故障时，作为一个习惯，您应带一个编程器。&lt;br&gt;&lt;br&gt;&lt;strong&gt;基本的查找故障顺序&lt;/strong&gt;&lt;br&gt;&lt;br&gt;提出下列问题，并根据发现的合理动作逐个否定。一步一步地更换SR中的各种模块,直到故障全部排除。所有主要的修正动作能通过更换模块来完成。 除了一把螺丝刀和一个万用电表外，并不需要特殊的工具，不需要示波器，高级精密电压表或特殊的测试程序。 &lt;span class="Zhb233"&gt;字串5&lt;/span&gt; &lt;br&gt;&lt;br&gt;1、PWR（电源）灯亮否？如果不亮，在采用交流电源的框架的电压输入端（98-162VAC或195-252VAC）检查电源电压；对于需要直流电压的框架， 测量+24VDC和0VDC端之间的直流电压，如果不是合适的AC或DC电源，则问题发生在SR PLC之外。如AC或DC电源电压正常，但PWR灯不亮，检查保险丝， 如必要的话，就更换CPU框架。&lt;br&gt;&lt;br&gt;2、PWR（电源）灯亮否？如果亮，检查显示出错的代码，对照出错代码表的代码定义，做相应的修正。&lt;br&gt;&lt;br&gt;3、RUN（运行）灯亮否？如果不亮，检查编程器是不是处于PRG或LOAD位置，或者是不是程序出错。如RUN灯不亮，而编程器并没插上，或者编程器处于RUN方式 且没有显示出错的代码，则需要更换CPU模块。&lt;br&gt;&lt;br&gt;4、BATT（电池）灯亮否？如果亮，则需要更换锂电池。由于BATT灯只是报警信号，即使电池电压过低，程序也可能尚没改变。更换电池以后， 检查程序或让PLC试运行。如果程序已有错，在完成系统编程初始化后，将录在磁带上的程序重新装入PLC。&lt;br&gt;&lt;br&gt;5、在多框架系统中,如果CPU是工作的,可用RUN`继电器来检查其它几个电源的工作。如果RUN继电器未闭合(高阻态),按上面讲的第一步检查AC或DC电源如AC 或DC电源正常而继电器是断开的,则需要更换框架。&lt;br&gt;&lt;font color="#ffffff"&gt;字串9&lt;/font&gt; &lt;br&gt;&lt;strong&gt;一般查找故障步骤&lt;/strong&gt;&lt;br&gt;&lt;br&gt;其他步骤于用户的逻辑知识有关。下面的一些步骤，实际上只是较普通的，对于您遇到的特定的应用问题，尚修改或调整。查找故障的最好工具就是 您的感觉和经验。首先，插上编程器，并将开关打到RUN位置，然后按下列步骤进行。&lt;br&gt;&lt;br&gt;1、如果PLC停止在某些输出被激励的地方，一般是处于中间状态，则查找引起下一步操作发生的信号（输入，定时器，线川，鼓轮控制器等）。 编程器会显示那个信号的ON/OFF状态。&lt;br&gt;&lt;br&gt;2、如果输入信号，将编程器显示的状态与输入模块的LED指示作比较，结果不一致，则更换输入模块。入发现在扩展框架上有多个模块要更换， 那么，在您更换模块之前，应先检查I/O扩展电缆和它的连接情况。&lt;br&gt;&lt;br&gt;3、如果输入状态与输入模块的LED指示指示一致，就要比较一下发光二极管与输入装置（按钮、限位开关等）的状态。入二者不同，测量一下输入 模块，如发现有问题，需要更换I/O装置，现场接线或电源；否则，要更换输入模块。 &lt;br&gt;&lt;br&gt;4、如信号是线川，没有输出或输出与线川的状态不同，就得用编程器检查输出的驱动逻辑，并检查程序清单。检查应按从有到左进行， 找出第一个不接通的触点，如没有通的那个是输入，就按第二和第三步检查该输入点，如是线川，就按第四步和第五步检查。要确认使主控继电器步影响逻辑操作。 &lt;/p&gt;
&lt;div class="Zhb233"&gt;字串5&lt;/div&gt;
&lt;p&gt;&lt;br&gt;&lt;br&gt;5、如果信号是定时器，而且停在小于999.9的非零值上，则要更换CPU模块。&lt;br&gt;&lt;br&gt;6、如果该信号控制一个计数器，首先检查控制复位的逻辑，然后是计数器信号。按上述2到5部进行。 &lt;br&gt;&lt;br&gt;&lt;strong&gt;组件的更换&lt;/strong&gt;&lt;br&gt;&lt;br&gt;下面是更换SR-211PC系统的步骤&lt;br&gt;&lt;br&gt;&lt;strong&gt;一、更换框架&lt;/strong&gt; &lt;br&gt;&lt;br&gt;1、切断AC电源 ；如装有编程器，拔掉编程器 。&lt;br&gt;2、从框架右端的接线端板上，拔下塑料盖板，拆去电源接线。&lt;br&gt;3、拔掉所有的I/O模块。如果原先在安装时有多个工作回路的话，不要搞乱IU/O的接线，并记下每个模块在框架中的位置，以便重新插上时不至于搞错。&lt;br&gt;4、如果CPU框架，拔除CPU组件和填充模块。将它放在安全的地方，以便以后重新安装。 &lt;br&gt;5、卸去底部的二个固定框架的螺丝，松开上部二个螺丝，但不用拆掉。 &lt;br&gt;6、将框架向上推移一下，然后把框架向下拉出来放在旁边。 &lt;br&gt;7、将新的框架 从顶部螺丝上套进去， &lt;br&gt;8、装上底部螺丝，将四个螺丝都拧紧。&lt;br&gt;9、插入I/O模块，注意位置要与拆下时一致。 &lt;br&gt;如果模块插错位置，将会引起控制系统危险的或错误的操作，但不会损坏模块。&lt;br&gt;10、插入卸下的CPU和填充模块。 &lt;br&gt;11、在框架右边的接线端上重新接好电源接线，再盖上电源接线端的塑料盖。 &lt;font color="#ffffff"&gt;字串7&lt;/font&gt; &lt;br&gt;12、检查一下电源接线是否正确，然后再通上电源。仔细地检查整个控制系统的工作，确保所有的I/O模块位置正确，程序没有变化。&lt;br&gt;&lt;br&gt;&lt;strong&gt;二、CPU模块的更换&lt;/strong&gt; &lt;br&gt;&lt;br&gt;1、切断电源，如插有编程器的话，把编程器拔掉。&lt;br&gt;2、向中间挤压CPU模块面板的上下紧固扣，使它们脱出卡口。&lt;br&gt;3、把模快从槽中垂直拔出。 &lt;br&gt;4、如果CPU上装着EPROM存储器，把EPROM拔下，装在新的CPU上。&lt;br&gt;5、首先将印刷线路板对准底部导槽。将新的CPU模块插入底部导槽。 &lt;br&gt;6、轻微的晃动CPU模块，使CPU模块对准顶部导槽。&lt;br&gt;7、把CPU模块插进框架，直到二个弹性锁扣扣进卡口。&lt;br&gt;8、重新插上编程器，并通电。 &lt;br&gt;9、在对系统编程初始化后，把录在磁带上的程序重新装入。检查一下整个系统的操作。 &lt;br&gt;&lt;br&gt;&lt;strong&gt;三、I/O模块的更换&lt;/strong&gt; &lt;br&gt;&lt;br&gt;1、切断框架和I/O系统的电源。 &lt;br&gt;2、卸下I/O模块接线端上塑料盖。拆下有故障模块的现场接线。 &lt;br&gt;3、拆去I/O接线端的现场接线或卸下可拆卸式接线插座，这要视模块的类型而定。给每根线贴上标签或记下安装连线的标记，以便于将来重新连接。&lt;br&gt;4、向中间挤压I/O模块的上下弹性锁扣，使它们脱出卡口。 &lt;br&gt;5、垂直向上拔出I/O模块。 &lt;span class="Zhb233"&gt;字串4&lt;/span&gt; &lt;br&gt;&lt;/p&gt;</description><comments></comments><guid>http://blog.cechina.cn/laobing221/153919/message.aspx</guid><category> PLC/PAC</category><author></author></item><item><title>PLC的编程语言（一）：文本化语言</title><pubDate>Sat, 15 Nov 2008 21:38:23 GMT</pubDate><link>http://blog.cechina.cn/laobing221/153918/message.aspx</link><description>&lt;p&gt;IEC61131-3国际标准的编程语言包括图形化编程语言和文本化编程语言。图形化编程语言包括：梯形图（LD－Ladder Diagram）、功能块图（FBD － Function Block Diagram）、顺序功能图（SFC － Sequential Function Chart）。文本化编程语言包括：指令表(IL-Instruction List)和结构化文本 (ST-Strutured Text)。IEC61131-3的编程语言是IEC工作组对世界范围的PLC厂家的编程语言合理地吸收、借鉴的基础上形成的一套针对工业控制系统的国际编程语言标准，它不但适用于PLC系统，而且还适用于更广泛的工业控制领域；IEC61131-3 的编程工具提供对现场总线系统的支持，并对现场总线装置的软件设计产生了很大影响。 &lt;span class="Pej334"&gt;字串1&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;本专题将分两部分介绍IEC61131-3的编程语言，本文是IEC61131-3编程语言的第一部分，重点介绍IEC61131-3的两种文本化编程语言；第二部分重点介绍IEC61131-3的两种三种图形化编程语言，将在下一篇文章作介绍。 
&lt;p class="Pej334"&gt;字串6&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;一、结构化文本（ST） &lt;font color="#ffffff"&gt;字串5&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;结构化文本（ST）是一种高级的文本语言，可以用来描述功能，功能块和程序的行为，还可以在顺序功能流程图中描述步、动作和转变的行为。 
&lt;div class="Pej334"&gt;字串5&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;结构化文本（ST）语言表面上与PASCAL语言很相似，但它是一个专门为工业控制应用开发的编程语言，具有很强的编程能力用于对变量赋值、回调功能和功能块、创建表达式、编写条件语句和迭代程序等。结构化文本（ST）非常适合应用在有复杂的算术计算的应用中。 
&lt;div class="Pej334"&gt;字串9&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;结构化文本（ST）程序格式自由，可以在关键词与标识符之间任何地方插入制表符、换行字符和注释。对于熟悉计算机高级语言开发的人员来说，结构化（ST）语言更是易学易用。此外，结构化文本（ST）语言还易读易理解，特别是用有实际意义的标识符、批注来注释时，更是这样。 
&lt;div class="Pej334"&gt;字串1&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;1.1 操作符 &lt;span class="Pej334"&gt;字串2&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;结构化文本（ST）定义了一系列操作符用于实现算术和逻辑运算，如逻辑运算符：AND,&amp;amp;,XOR,OR; 算术运算符：&amp;lt;, &amp;gt;, &amp;lt;=, &amp;gt;=, =, &amp;lt;&amp;gt;, +, -, MOD, / 等，此外，还定义了这些操作符的优先级。如下是操作符预算的两个例子： 
&lt;p class="Pej334"&gt;字串7&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Start ：= Oilpress AND Stream AND Pump; &lt;span class="Pej334"&gt;字串8&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;V : = K*(-W*T) &lt;font color="#ffffff"&gt;字串7&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;1.2 赋值语句 
&lt;p class="Pej334"&gt;字串9&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;结构化文本（ST）程序既支持很简单的赋值语句，如 X:=Y, 也支持很复杂的数组或结构赋值，如Profile[3]:=10.3+SQRT((Rate+2.0)), Alarm.TimeOn:=RCT1.CDT。 
&lt;div class="Pej334"&gt;字串1&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;1.3在程序中调用功能块 
&lt;div class="Pej334"&gt;字串1&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;在结构化文本（ST）程序中可以直接调用功能块。功能块在被调用以前，输入参数被分配为缺省值；在调用后，输入参数值保留为最后一次调用的值。功能块调用的格式如下： &lt;span class="Pej334"&gt;字串9&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;FunctionBlockInstance( 
&lt;p class="Pej334"&gt;字串8&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;InputParameter1:=ValueExpression1, &lt;font color="#ffffff"&gt;字串7&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;InputParameter2:=ValueExpression2, …); 
&lt;p class="Pej334"&gt;字串7&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;ValueExpression1……ValueExpressionN是符合功能块数据类型输入变量，InputParameter1……InputParameterN功能块的输入参数。FunctionBlockInstance是要调用的功能块。 &lt;font color="#ffffff"&gt;字串8&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;1.4结构化文本（ST）程序中的条件语句 
&lt;p class="Pej334"&gt;字串2&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;条件语句的功能是，某一条件满足时执行相应的选择语句。结构化文本（ST）有如下的条件语句： &lt;font color="#ffffff"&gt;字串6&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;IF …THEN…ELSE条件语句 &lt;span class="Pej334"&gt;字串2&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;该选择语句依据不同的条件分别执行相应THEN及ELSE语句。该条件语句可以嵌套入另一条件语句中，以实现更复杂的条件语句。条件语句的格式如下： &lt;font color="#ffffff"&gt;字串1&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;IF&lt;boolean expression=""&gt;&lt;/boolean&gt; THEN &lt;font color="#ffffff"&gt;字串5&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;font color="#ffffff"&gt;字串9&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;ELSE 
&lt;div class="Pej334"&gt;字串1&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt; statements2…&amp;gt; &lt;span class="Pej334"&gt;字串7&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;END_IF; 
&lt;div class="Pej334"&gt;字串6&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;“boolean expression”可以是“true”或“false”，根据“true”或“false”的情况，程序执行相应的statements1或statements2语句。 &lt;font color="#ffffff"&gt;字串7&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;CASE 条件语句 &lt;span class="Pej334"&gt;字串4&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;该选择语句的执行方向取决于CASE语句的条件, 并有一返回值。实例见最后的应用举例。该条件语句的格式如下： &lt;font color="#ffffff"&gt;字串6&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;CASE&lt;integer expression=""&gt;&lt;/integer&gt;OF &lt;span class="Pej334"&gt;字串1&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&amp;lt; integer selector value1&amp;gt; : &amp;lt; statements1…&amp;gt; 
&lt;div class="Pej334"&gt;字串9&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt; integer selector value2&amp;gt; : &amp;lt; statements2…&amp;gt; 
&lt;p class="Pej334"&gt;字串3&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;…… 
&lt;p class="Pej334"&gt;字串9&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;ELSE &lt;span class="Pej334"&gt;字串5&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&amp;lt; statements …&amp;gt; &lt;span class="Pej334"&gt;字串1&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;END_CASE; &lt;font color="#ffffff"&gt;字串3&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;“integer expression”可以是一个数值，根据数值的不同执行相应的statements1或statements2等语句。 &lt;font color="#ffffff"&gt;字串5&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;1.5 结构化文本（ST）程序中的迭代语句 &lt;font color="#ffffff"&gt;字串8&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;迭代语句适用于需要一条或多条语句重复执行许多次的情况，迭代语句的执行取决于某一变量或条件的状态。应用迭代语句应避免迭代死循环的情况。 &lt;span class="Pej334"&gt;字串8&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;FOR…DO &lt;span class="Pej334"&gt;字串8&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;该迭代格式语句允许程序依据某一整型变量迭代。该迭代格式语句格式如下： &lt;font color="#ffffff"&gt;字串2&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;FOR &lt;initialize variable="" iteraion=""&gt;&lt;/initialize&gt;&lt;font color="#ffffff"&gt;字串4&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;TO &lt;final expression="" value=""&gt;&lt;/final&gt;&lt;font color="#ffffff"&gt;字串8&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;BY &lt;increment expression=""&gt;&lt;/increment&gt;DO &lt;font color="#ffffff"&gt;字串3&lt;/font&gt; &lt;/p&gt;
&lt;p&gt; 
&lt;div class="Pej334"&gt;字串4&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;END_FOR 
&lt;p class="Pej334"&gt;字串2&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;“initialize iteraion variable”是迭代开始的计数值，“final value expression” 迭代结束的计数值。迭代从“initialize iteraion variable”开始，每迭代一次，计数值增加“increment expression”，计数值增加到“final value expression”，迭代结束。 &lt;font color="#ffffff"&gt;字串8&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;结构化文本（ST）程序中还有其它的迭代语句，如WHILE … DO，REPEAT … UNTIL等，迭代原理与FOR…DO 格式基本相同。此外，结构化文本（ST）的迭代语句中还有EXIT，RETURN两种格式，分别用于程序的返回和退出。 
&lt;p class="Pej334"&gt;字串7&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;1.6 编程举例：用结构化文本（ST）程序编功能块 &lt;font color="#ffffff"&gt;字串2&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;本程序是一用结构化文本（ST）程序编功能块的例子。该实例描述的是如何用功能块控制箱体中的流体，箱体可以通过阀门被注满和倒空，如图所示，箱体的重量由一个称重单元监视。功能块通过比较两个输入值FullWeight和EmptyWeight以确定箱体是满的还是空的。 &lt;font color="#ffffff"&gt;字串7&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;font color="#ffffff"&gt;字串2&lt;/font&gt; &lt;/p&gt;
&lt;center&gt;&lt;a href="http://www.im100.com/uploads/allimg/080904/1513040.gif" target=_blank&gt;&lt;a href="http://www.im100.com/uploads/allimg/080904/1513040.gif" target=_blank&gt;&lt;img height="127" alt="点击看大图" src="http://www.im100.com/uploads/allimg/080904/1513040.gif" width="400"&gt;&lt;/a&gt;&lt;/a&gt;&lt;br&gt;图一 水箱控制及功能块示意图&lt;br&gt;&amp;nbsp;&lt;/center&gt;
&lt;p&gt;该功能块提供了一个“Command”输入，该输入有四种状态，1.给箱体加水；2. 保持不变；3.起动“Stirrer”；4. 清空箱体。实现该功能块算法的结构化文本（ST）程序如下： &lt;span class="Pej334"&gt;字串2&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;（*箱体状态*） &lt;font color="#ffffff"&gt;字串6&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;TYPE_T_STATE: (FULL,NOT_FULL,EMPTIED);END_TYPE; &lt;span class="Pej334"&gt;字串8&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;（*阀门状态*） &lt;font color="#ffffff"&gt;字串7&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;TYPE_T_VALVE: (OPEN,SHUT);END_TYPE; &lt;font color="#ffffff"&gt;字串5&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;FUNCTION_BLOCK TankControl 
&lt;p class="Pej334"&gt;字串6&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;VAR_IN (**) &lt;span class="Pej334"&gt;字串5&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;Command:SINT; &lt;font color="#ffffff"&gt;字串6&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;Weight :REAL; 
&lt;p class="Pej334"&gt;字串8&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;FullWeight,EmptyWeight : REAL; &lt;span class="Pej334"&gt;字串2&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;END_VAR 
&lt;div class="Pej334"&gt;字串9&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;VAR_OUT (**) 
&lt;div class="Pej334"&gt;字串7&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;FillValve :T_VALVE:=SHUT; 
&lt;p class="Pej334"&gt;字串9&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;EmptyValve :T_VALVE:=SHUT; 
&lt;div class="Pej334"&gt;字串6&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;StirSpeed ：REAL:=0.0; &lt;span class="Pej334"&gt;字串7&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;END_VAR &lt;font color="#ffffff"&gt;字串6&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;VAR &lt;font color="#ffffff"&gt;字串7&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;State :=T_STATE :=EMPTYIED; 
&lt;p class="Pej334"&gt;字串2&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;END_VAR &lt;/p&gt;
&lt;p&gt;二、指令表（IL-Instruction List） &lt;/p&gt;
&lt;p&gt;IEC61131-3的指令表（IL-Instruction List）语言是一种低级语言，与汇编语言很相似，是在借鉴、吸收世界范围的PLC厂商的指令表语言的基础上形成的一种标准语言，可以用来描述功能，功能块和程序的行为，还可以在顺序功能流程图中描动作和转变的行为。 &lt;span class="Bpt678"&gt;字串9&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;指令表语言能用于调用，如有条件和无条件地调用功能块和功能，还能执行赋值以及在区段内执行有条件或无条件的转移。指令表语言不但简单易学，而且非常容易实现，可不通过编译和连编就可以下载到PLC。IEC61131-3的其它语言如功能块图、结构化文本等都可以转换为指令表语言。 &lt;font color="#ffffff"&gt;字串8&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;2.1指令表语言结构 &lt;span class="Bpt678"&gt;字串9&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;指令表语言是由一系列指令组成的语言。每条指令在新一行开始，指令由操作符和紧随其后的操作数组成，操作数是指在IEC61131-3的“公共元素”中定义的变量和常量。有些操作符可带若干个操作数，这时各个操作数用逗号隔开。指令前可加标号，后面跟冒号，在操作数之后可加注释。 &lt;font color="#ffffff"&gt;字串4&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;IL是所谓面向累加器（Accu）的语言，即每条指令使用或改变当前Accu内容。IEC61131-3将这一Accu标记为“结果”。通常，指令总是以操作数LD(“装入Accu命令”)开始。指令表程序如下所示： 
&lt;div class="Bpt678"&gt;字串8&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;2.2 指令表操作符 &lt;span class="Bpt678"&gt;字串1&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;IEC 61131-3指令表包括四类操作符：一般操作符、比较操作符、跳转操作符和调用操作符。 &lt;font color="#ffffff"&gt;字串8&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;2.2.1一般操作符符 &lt;span class="Bpt678"&gt;字串2&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;指令表一般操作符是指在程序中经常会用到的操作符. 
&lt;div class="Bpt678"&gt;字串3&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;l 装入指令：LD N等。 
&lt;div class="Bpt678"&gt;字串3&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;l 逻辑指令：AND N( (与指令)、OR N( (或指令)、XOR N（ (异或指令)等。 &lt;span class="Bpt678"&gt;字串3&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;l 算术指令：ADD (（加指令）、SUB(（减指令）、MUL ( （乘指令）,DIV(（除指令）、MOD ( （取模指令）等。 &lt;font color="#ffffff"&gt;字串6&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;2.2.2 比较指令：GT ( （大于）、GE ( （大于等于）、EQ( （等于）、 NE( （不等于）、 LE( （小于等于）、 LT( （小于）等。 
&lt;p class="Bpt678"&gt;字串7&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;2.2.3 跳转及调用操作符 
&lt;p class="Bpt678"&gt;字串7&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;JMP C,N (跳转操作符)、 CALL C,N （调用操作符）等。 
&lt;p class="Bpt678"&gt;字串9&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;2.3 在指令表中调用功能及功能块 
&lt;p class="Bpt678"&gt;字串5&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;在IEC61131-3指令表的程序中，可以直接调用功能块和功能。指令表的功能块调用有 &lt;span class="Bpt678"&gt;字串2&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;种格式，功能调用有两种格式。详细的调用可见IEC 61131-3标准。 
&lt;div class="Bpt678"&gt;字串4&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;2.4 用指令表定义功能及功能块 &lt;font color="#ffffff"&gt;字串2&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;指令表可用于定义功能块和功能。当用指令表定义功能时，功能的返回值是结果寄存 
&lt;p class="Bpt678"&gt;字串1&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;内的最新值；当用指令表定义功能块时，指令表引用功能块的输入参数（VAR_INPUT），并且把值写到输出参数(VAR_OUPUT)。 &lt;font color="#ffffff"&gt;字串8&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;2.5指令表与其它语言的移植性 
&lt;div class="Bpt678"&gt;字串2&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;指令表语言转换为其它语言是非常困难的，除非指令表操作符的使用范围及书写格式受到严格的限制，才有可能实现转换。IEC61131-3的其它语言较容易转换为指令表。 
&lt;div class="Bpt678"&gt;字串9&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;2.6IL的编程实例 &lt;font color="#ffffff"&gt;字串7&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;本例是一个用指令表程序定义功能的实例，功能描述的计算平面上两点的移动距离。两点X,Y的坐标如下图所示。 
&lt;p class="Bpt678"&gt;字串2&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;font color="#ffffff"&gt;字串1&lt;/font&gt; &lt;/p&gt;
&lt;p&gt; 
&lt;div class="Bpt678"&gt;字串1&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;center&gt;&lt;a href="http://www.im100.com/uploads/allimg/080904/1513041.gif" target=_blank&gt;&lt;a href="http://www.im100.com/uploads/allimg/080904/1513041.gif" target=_blank&gt;&lt;img height="144" alt="点击看大图" src="http://www.im100.com/uploads/allimg/080904/1513041.gif" width="400"&gt;&lt;/a&gt;&lt;/a&gt;&lt;br&gt;图二 用指令表编功能实例&lt;br&gt;&amp;nbsp;&lt;/center&gt;
&lt;p&gt;用结构化文本描述的两点间距离的计算公式为：Travel_distance：=SQRT((X1-X2)*(X1-X2)+(Y1-Y2)*(YI-Y2)))。TMax是X,Y两点见的最大距离，当计算值小于TMax时，说明计算正确；当计算值大于TMax时，说明X,Y两点间的距离超出了最大距离，在这种情况下，功能是没有输出的。 &lt;font color="#ffffff"&gt;字串3&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;用指令表编写的该功能的函数TRAVEL()如下： 
&lt;div class="Bpt678"&gt;字串9&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;FUNCTION TRAVEL : REAL 
&lt;div class="Bpt678"&gt;字串3&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;VAR_INPUT &lt;span class="Bpt678"&gt;字串8&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;X1,X2,Y1,Y2 : REAL (*点X,Y坐标*) 
&lt;div class="Bpt678"&gt;字串1&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;TMax : REAL (*最大移动距离*) 
&lt;div class="Bpt678"&gt;字串5&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;END_VAR &lt;font color="#ffffff"&gt;字串5&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;VAR 
&lt;div class="Bpt678"&gt;字串7&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Temp : REAL; (*中间值*) 
&lt;p class="Bpt678"&gt;字串4&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;END_VAR 
&lt;p class="Bpt678"&gt;字串1&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;LD Y1 &lt;span class="Bpt678"&gt;字串4&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;SUB Y2 (*计算Y2-Y1*) &lt;font color="#ffffff"&gt;字串1&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;ST Temp (*将Y2-Y1值存入Temp *) 
&lt;p class="Bpt678"&gt;字串4&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;MUL Temp (*计算（Y2-Y1）的平方*) 
&lt;div class="Bpt678"&gt;字串2&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;ADD( X1 &lt;font color="#ffffff"&gt;字串7&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;SUB X2 (*计算(X1-X2)*) 
&lt;p class="Bpt678"&gt;字串3&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;ST Temp (*将(X1-X2)值存入Temp *) 
&lt;p class="Bpt678"&gt;字串5&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;MUL Temp (*计算(X1-X2)的平方*) &lt;span class="Bpt678"&gt;字串9&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;) (*将两平方值相加*) &lt;span class="Bpt678"&gt;字串9&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;CAL SQRT (*调平方根函数*) 
&lt;div class="Bpt678"&gt;字串5&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;ST TRAVEL (*设定计算结果*) 
&lt;p class="Bpt678"&gt;字串4&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;GT TMax (*比TMax 大吗？*) 
&lt;p class="Bpt678"&gt;字串1&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;JMPC ERR (*是，转到ERR 执行*) 
&lt;p class="Bpt678"&gt;字串8&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;S ENO (*设定ENO *) &lt;font color="#ffffff"&gt;字串3&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;ERR: &lt;span class="Bpt678"&gt;字串3&lt;/span&gt; &lt;/p&gt;
&lt;div&gt;RET (*错误返回，ENO 不输出*)&lt;/div&gt;</description><comments></comments><guid>http://blog.cechina.cn/laobing221/153918/message.aspx</guid><category> PLC/PAC</category><author></author></item><item><title>IEC 61131标准数据类型</title><pubDate>Sat, 15 Nov 2008 21:35:33 GMT</pubDate><link>http://blog.cechina.cn/laobing221/153917/message.aspx</link><description>&lt;p&gt;IEC 61131标准数据类型&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IEC&amp;nbsp;61131字符串数据类型&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;用户自定义的字符串数据类型是具有可变数目的字符的字符串。声明一个用户自定义的字符串时，其长度被放在该数据类型后面的括号内。 &lt;font color="#ffffff"&gt;字串7&lt;/font&gt; &lt;/p&gt;
&lt;p&gt; 
&lt;p class="Muz166"&gt;字串3&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;用户定义字符串数据类型声明的例子。 &lt;span class="Muz166"&gt;字串3&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;TYPE&lt;br&gt;STRING10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:STRING(10)&lt;br&gt;END_TYPE 
&lt;div class="Muz166"&gt;字串7&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;在这个例子中，字符串的长度是10个字符。&lt;br&gt;限制：最短的合理字符串长度为1，最长的合理字符串长度为32766。 &lt;span class="Muz166"&gt;字串6&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IEC&amp;nbsp;61131结构数据类型&lt;/strong&gt; 
&lt;div class="Muz166"&gt;字串9&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;声明结构 &lt;font color="#ffffff"&gt;字串5&lt;/font&gt; &lt;/p&gt;
&lt;p&gt; 
&lt;div class="Muz166"&gt;字串1&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;结构数据类型包括了同一数据类型或不同数据类型的多个元素。 &lt;span class="Muz166"&gt;字串7&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;TYPE&lt;br&gt;machine:&lt;br&gt;STRUCT&lt;br&gt;x_pos&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:INT;&lt;br&gt;y-pos&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:INT;&lt;br&gt;depth&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:INT;&lt;br&gt;rpm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:UINT;&lt;br&gt;END_STRUCT;&lt;br&gt;END_TYPE 
&lt;div class="Muz166"&gt;字串5&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;在该例子中，结构数据类型‘machine’由x_pos、y_pos、depth和rpm等组分组成。所有的组分都描述了机器的特性。 
&lt;div class="Muz166"&gt;字串7&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;编程举例 
&lt;div class="Muz166"&gt;字串1&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;在必须要声明描述同一对象的多个数据的情况下，就应该使用结构。例如，一个钻孔机在一个工件上钻多个孔。所有的孔都具有工件上的x和y坐标位置、钻孔深度以及钻孔用的每分钟转数。对各个孔的具体值是不同的，但是所需的变量总是同样的。这种情况下，声明一个由分别用于位置、钻孔深度和每分钟转数的三个组分组成的结构会很有用。对于每个孔，可以给各组分赋不同的值。用于钻孔过程的功能块只需使用作为结构的同一个变量。 
&lt;p class="Muz166"&gt;字串8&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;结构数组 &lt;span class="Muz166"&gt;字串7&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;可以在数组内使用结构，如下面的例子所示： 
&lt;div class="Muz166"&gt;字串5&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;TYPE&lt;br&gt;machine:&lt;br&gt;STRUCT&lt;br&gt;x_pos&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:REAL;&lt;br&gt;y_pos&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:REAL;&lt;br&gt;depth&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:INT;&lt;br&gt;rpm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:INT;&lt;br&gt;END_STRUCT;&lt;br&gt;my&amp;nbsp;array&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:ARRAY[1..10]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OF&amp;nbsp;machine;&lt;br&gt;END_TYPE&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;一个结构数组的应用例子可能是具有多个钻孔机的转移线。通过数组下标，可以访问具体的钻孔机，并且通过各结构组分，可以分配用于钻孔的不同值。 &lt;font color="#ffffff"&gt;字串3&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;带有数组的结构 &lt;span class="Muz166"&gt;字串7&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;可以在结构内使用数组，如下面的例子所示： 
&lt;div class="Muz166"&gt;字串2&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;TYPE&lt;br&gt;graph&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:ARRAY[1..10]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;of&amp;nbsp;INT;&lt;br&gt;drive:&lt;br&gt;STRUCT&lt;br&gt;rpm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:INT;&lt;br&gt;inputs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:IN_BOOL;&lt;br&gt;performance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:graph;&lt;br&gt;END_STRUCT;&lt;br&gt;END_TYPE&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;初始化结构 
&lt;div class="Muz166"&gt;字串7&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;在编辑代码本体声明时，可以通过给各组分赋值的方式，来初始化结构。下图显示了一个例子： &lt;font color="#ffffff"&gt;字串1&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;变量声明：&lt;br&gt;VAR&lt;br&gt;var1&amp;nbsp;&amp;nbsp;&amp;nbsp;:machine;&lt;br&gt;first&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:BOOL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:=TRUE;&lt;br&gt;END_VAR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;使用ST语言的代码本体声明：&lt;br&gt;IF&amp;nbsp;first&amp;nbsp;THEN&lt;br&gt;var1.x-pos&amp;nbsp;:=&amp;nbsp;REAL#1.3E+2&lt;br&gt;var1.rpm&amp;nbsp;:=&amp;nbsp;3000;&lt;br&gt;...&lt;br&gt;first&amp;nbsp;:=&amp;nbsp;FALSE;&lt;br&gt;END_IF&lt;br&gt;...&lt;br&gt;&lt;font color="#ffffff"&gt;字串4&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IEC&amp;nbsp;61131数组编程举例&lt;/strong&gt; &lt;span class="Muz166"&gt;字串4&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;一个数组应该被典型地用于描述同一主题的数据。让我们想象一个每隔3秒钟就改变一个输入值的过程。有必要保存这些输入值中的每一个，以便将其与所设定点相比较。所有的输入值都具有相同的数据类型。这种情况下，声明一个数组很有用，因为在代码本体声明中，可以用一个循环语句(如FOR循环)，容易地比较这两个值。数组的单个组分可以用数组下标来访问。&amp;nbsp; &lt;font color="#ffffff"&gt;字串4&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;font color="#ffffff"&gt;字串7&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;类型声明： 
&lt;p class="Muz166"&gt;字串7&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;TYPE&lt;br&gt;graph&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:ARRAY[1..23]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OF&amp;nbsp;INT;&lt;br&gt;set_point&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:ARRAY[1..23]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OF&amp;nbsp;INT;&lt;br&gt;END_TYPE&lt;br&gt;变量声明： 
&lt;div class="Muz166"&gt;字串3&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;VAR&lt;br&gt;input&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:graph;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(*&amp;nbsp;机器的输入值&amp;nbsp;*)&lt;br&gt;values&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:set_point;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(*&amp;nbsp;相比较的值&amp;nbsp;*)&lt;br&gt;i&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:INT&amp;nbsp;:=1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(*&amp;nbsp;用于数组下标的变量&amp;nbsp;*)&lt;br&gt;run&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:BOOL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:=TRUE;&lt;br&gt;ERROR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:BOOL;&lt;br&gt;timer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:FB_TIMER;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(*&amp;nbsp;声明FB实例&amp;nbsp;*)&lt;br&gt;END_VAR&lt;br&gt;使用ST语言的代码本体声明： &lt;font color="#ffffff"&gt;字串4&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;timer&amp;nbsp;(pt:=t#3s;in:=run);&lt;br&gt;IF&amp;nbsp;timer.Q&amp;nbsp;THEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(*&amp;nbsp;向数组''graph''提供输入值&amp;nbsp;*)&lt;br&gt;input[i]&amp;nbsp;:=&amp;nbsp;%IW0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(*&amp;nbsp;给数组赋输入值&amp;nbsp;*)&lt;br&gt;run&amp;nbsp;:=&amp;nbsp;0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(*&amp;nbsp;边沿检测，以便再次启动定时器&amp;nbsp;*)&lt;br&gt;i&amp;nbsp;:=&amp;nbsp;i+1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(*&amp;nbsp;更高的数组下标&amp;nbsp;*)&lt;br&gt;ELSE&amp;nbsp;&lt;br&gt;run&amp;nbsp;:=1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(*&amp;nbsp;递增记数&amp;nbsp;*)&lt;br&gt;END_IF;&lt;br&gt;IF&amp;nbsp;i&amp;nbsp;=&amp;nbsp;23&lt;br&gt;FOR&amp;nbsp;i:=1&amp;nbsp;TO&amp;nbsp;23&amp;nbsp;BY&amp;nbsp;1&amp;nbsp;DO&amp;nbsp;&lt;br&gt;IF&amp;nbsp;input[i]&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;values[i]&amp;nbsp;THEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(*&amp;nbsp;比较数组&lt;br&gt;''graph''和''set&amp;nbsp;point''&amp;nbsp;*)&lt;br&gt;ERROR&amp;nbsp;:=&amp;nbsp;TRUE;&lt;br&gt;END_IF;&lt;br&gt;END_FOR;&lt;br&gt;i&amp;nbsp;:=&amp;nbsp;1;&lt;br&gt;END_IF;&lt;br&gt;
&lt;div class="Muz166"&gt;字串5&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IEC&amp;nbsp;61131数组数据类型&lt;/strong&gt; 
&lt;p class="Ysv729"&gt;字串5&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;声明数组 
&lt;p class="Ysv729"&gt;字串2&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt; 
&lt;div class="Ysv729"&gt;字串6&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;数组数据类型包括同一个数据类型的几个元素。一个数组中的特定元素是通过一个数组下标来定义和访问的。一个数组可用于仅仅在类型声明的一行之内，声明同一类型的几个元素。 &lt;font color="#ffffff"&gt;字串4&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;数组数据类型声明的例子： 
&lt;div class="Ysv729"&gt;字串7&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;TYPE&lt;br&gt;graph&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:ARRAY[1..23]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OF&amp;nbsp;INT;&lt;br&gt;END_TYPE &lt;span class="Ysv729"&gt;字串6&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;在本例子中，数据类型‘图形’包括了23个‘INT’数据类型的元素。数组的所有元素都被一个接一个地连续存储在PLC存储器里。 &lt;font color="#ffffff"&gt;字串9&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;要想声明一个数组，您首先要在数据类型工作单的类型声明中声明该数组。然后，您就可以在POU的变量工作单中声明变量了(请参考下面的编程示例)。 
&lt;div class="Ysv729"&gt;字串6&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;多维数组 &lt;font color="#ffffff"&gt;字串9&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;如果需要多维数组，则可以使用数组的数组。下图展示了一个数组的数组： 
&lt;p class="Ysv729"&gt;字串9&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;TYPE&lt;br&gt;graph&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:ARRAY[1..10]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OF&amp;nbsp;INT;&lt;br&gt;my&amp;nbsp;array&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:ARRAY&amp;nbsp;[1..3]&amp;nbsp;OF&amp;nbsp;graph;&lt;br&gt;END_TYPE&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;在一个数组的数组中，单个元素是用两个下标来访问的，如下图所示： 
&lt;div class="Ysv729"&gt;字串2&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;变量声明： 
&lt;div class="Ysv729"&gt;字串1&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;VAR&lt;br&gt;var1&amp;nbsp;&amp;nbsp;&amp;nbsp;:my_array;&lt;br&gt;var2&amp;nbsp;&amp;nbsp;&amp;nbsp;:INT;&lt;br&gt;END_VAR&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;使用ST语言的代码本体声明： 
&lt;p class="Ysv729"&gt;字串6&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;var2&amp;nbsp;:=&amp;nbsp;var1[1]&amp;nbsp;[3];&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;初始化数组 &lt;font color="#ffffff"&gt;字串2&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;数组可以被初始化，即：可以对数组中的每个元素赋一个初值。正如上面所描述的那样，每一个元素都是通过其下标来访问的。一个数组的初始化可以在编辑代码本体声明时进行。 
&lt;p class="Ysv729"&gt;字串2&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;变量声明： &lt;span class="Ysv729"&gt;字串6&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;VAR&lt;br&gt;graph&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:ARRAY[1..10]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OF&amp;nbsp;INT;&lt;br&gt;END_VAR&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;使用ST语言的代码本体声明： &lt;font color="#ffffff"&gt;字串2&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;graph[1]:=7;&amp;nbsp;&lt;br&gt;graph[2]:=1092;&amp;nbsp;&lt;br&gt;.&lt;br&gt;.&lt;br&gt;.&lt;br&gt;graph[10]:=13;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;不必初始化一个数组的所有元素。如果未使用任何初始值，则数组元素是在启动程序的执行时用默认初值来初始化的。 
&lt;p class="Ysv729"&gt;字串5&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt; 
&lt;p class="Ysv729"&gt;字串8&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IEC&amp;nbsp;61131用户自定义数据类型&lt;/strong&gt; &lt;font color="#ffffff"&gt;字串1&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;用户自定义数据类型，是由应用程序员，利用文本编辑器，通过使用一个TYPE...END_TYPE声明来编辑的。导出数据类型可以是枚举数据类型、结构或数组。 
&lt;p class="Ysv729"&gt;字串7&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;font color="#ffffff"&gt;字串5&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;数组数据类型包括了一个数据类型的几个元素。一个数组可用于仅仅在类型声明的一行之内，声明同一类型的几个元素。 
&lt;p class="Ysv729"&gt;字串7&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;结构数据类型包括了不同的数据类型的几个元素。&amp;nbsp; &lt;span class="Ysv729"&gt;字串1&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;用户定义字符串，是具有可变数目的字符的STRING数据类型。声明一个用户自定义的字符串时，其长度在数据类型后面的括号内。 &lt;span class="Ysv729"&gt;字串1&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;枚举数据类型将可能值限制在所枚举的元素范围内。使用了该数据类型的变量，只能具有所枚举的值。&amp;nbsp;&lt;br&gt;
&lt;p class="Ysv729"&gt;字串7&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IEC&amp;nbsp;61131-3中的类属数据类型&lt;/strong&gt; 
&lt;p class="Ysv729"&gt;字串7&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;类属数据类型&lt;br&gt;类属数据类型是包括了基本数据类型的分级组的数据类型。ANY_INT包括DINT、INT、SINT、UDINT、UINT和USINT等基本数据类型。如果一个函数可以与ANY_INT相连，则意味着可以处理DINT、INT、SINT、UDINT、UINT和USINT等数据类型的变量。&amp;nbsp; &lt;span class="Ysv729"&gt;字串6&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;font color="#ffffff"&gt;字串3&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;在下表中显示了类属数据类型： 
&lt;p class="Ysv729"&gt;字串9&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;ANY&lt;br&gt;ANY_NUM&lt;br&gt;ANY_REAL&lt;br&gt;REAL&lt;br&gt;ANY_INT&lt;br&gt;DINT,&amp;nbsp;INT,&amp;nbsp;SINT&lt;br&gt;UDINT,&amp;nbsp;UINT,&amp;nbsp;USINT&lt;br&gt;ANY_BIT&lt;br&gt;DWORD,&amp;nbsp;WORD,&amp;nbsp;BYTE,&amp;nbsp;BOOL&lt;br&gt;STRING&lt;br&gt;TIME &lt;font color="#ffffff"&gt;字串7&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description><comments></comments><guid>http://blog.cechina.cn/laobing221/153917/message.aspx</guid><category> PLC/PAC</category><author></author></item><item><title>9个经典练习助你成为PLC高手</title><pubDate>Sat, 15 Nov 2008 21:33:55 GMT</pubDate><link>http://blog.cechina.cn/laobing221/153916/message.aspx</link><description>&lt;p&gt;9个经典练习助你成为PLC高手 &lt;/p&gt;
&lt;div&gt;菜鸟变高手，并不是难于上青天的事情。只是没有好的训练方式。下面的几个小程序可以帮助你在最短的时间内成为高手中的高手。但是无论使用什么PLC，一定要使用FBD语言编写。在你按顺序完成下面的练习后，你已经成为了真正的PLC高手。不过这些练习都是基于S7系列PLC制作的，不过不妨碍各位朋友的使用。&lt;/div&gt;
&lt;div&gt;希望大家，尤其是菜鸟多多练习，一定要按照练习的步骤，循序渐进，很快，你就会让众人对你刮目相看！&lt;/div&gt;
&lt;div&gt;感谢intercon-asia的大力支持！&lt;/div&gt;
&lt;div&gt;I/O地址设置：&lt;/div&gt;
&lt;div&gt;启动按钮&lt;span&gt;&amp;nbsp;&amp;nbsp; I0.0 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;复位按钮&lt;span&gt;&amp;nbsp;&amp;nbsp; I0.1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;停止按钮&lt;span&gt;&amp;nbsp;&amp;nbsp; I0.2&amp;nbsp;(NC)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;选择开关&lt;span&gt;&amp;nbsp;&amp;nbsp; I0.3 &lt;/span&gt;（保持型按钮） &lt;/div&gt;
&lt;div&gt;启动指示灯 Q0.0 &lt;/div&gt;
&lt;div&gt;停止指示灯 Q0.1 &lt;/div&gt;
&lt;div&gt;执行器&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Q0.2&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;练习1. &lt;/div&gt;
&lt;div&gt;按下启动按钮后，执行器启动，当按下复位或停止按钮后，执行器立刻停止。该程序只有在选择开关按下后才能够执行，即当选择开关关闭后，程序必须马上停止。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;练习2.&lt;/div&gt;
&lt;div&gt;按下启动按钮后，执行器启动，当按下复位或停止按钮后，执行器立刻停止。该程序只有在选择开关按下后才能够执行，选择开关关闭后，程序必须马上停止且执行器无论处于何种状态，也必须停止。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;练习3.&lt;/div&gt;
&lt;div&gt;按下启动按钮后，启动指示灯在5秒钟后点亮，直到启动按钮松开。定时器只在启动按钮按住的时候有效。如果在5秒钟内松开启动按钮，计时器则复位。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;在命令菜单中按下F1键可以打开各命令的帮助文件，选择一个能够满足上述要求的计时器。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;练习4.&lt;/div&gt;
&lt;div&gt;如果按下启动按钮，启动指示灯马上点亮。松开启动按钮后，指示灯在3秒后自动熄灭。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;在命令菜单中按下F1键可以打开各命令的帮助文件，选择一个能够满足上述要求的计时器。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;练习5.&lt;/div&gt;
&lt;div&gt;按下复位按钮后，激活计数器，启动指示灯熄灭。按下启动按钮5次后，启动指示灯点亮。再次按下复位按钮后，计数器重新被复位且启动指示灯熄灭。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;在命令菜单中按下F1键可以打开各命令的帮助文件，选择一个能够满足上述要求的计数器。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;练习6.&lt;/div&gt;
&lt;div&gt;如果执行器处于停止状态，停止指示灯以200ms的频率闪烁，启动指示灯熄灭。按下启动按钮后，执行器启动，停止指示灯熄灭。3秒后，执行器自动停止。计时器运行时，启动指示灯以500ms频率闪烁。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;将MB100设置为系统默认的频率计时器。系统默认的时间如下：&lt;/div&gt;
&lt;div&gt;M100.0=0.1秒&lt;/div&gt;
&lt;div&gt;M100.1=0.2秒&lt;/div&gt;
&lt;div&gt;M100.2=0.4秒&lt;/div&gt;
&lt;div&gt;M100.3=0.5秒&lt;/div&gt;
&lt;div&gt;M100.4=0.8秒&lt;/div&gt;
&lt;div&gt;M100.5=1.0秒&lt;/div&gt;
&lt;div&gt;M100.6=1.6秒&lt;/div&gt;
&lt;div&gt;M100.7=2.0秒&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;练习7.&lt;/div&gt;
&lt;div&gt;按下启动按钮后，启动指示灯亮3秒，然后熄灭且停止指示灯亮7秒，再熄灭后，启动指示灯亮3秒，依此循环。当按下复位按钮后，无论两灯处于什么状态，全部熄灭。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;练习8.&lt;/div&gt;
&lt;div&gt;按下启动按钮后或复位按钮的任意一个后，5秒之内必须按下另一按钮。如果5秒内启动按钮和复位按钮都按下并保持住，执行器启动。如果5秒内没有按下两个按钮，执行器无法启动。超过5秒一样不启动。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;该练习为经典的双手启动回路程序。&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;练习9.&lt;/div&gt;
&lt;p&gt;按下启动按钮后，启动指示灯亮。再按下启动按钮，启动指示灯灭。依此循环。&lt;br&gt;&lt;/p&gt;</description><comments></comments><guid>http://blog.cechina.cn/laobing221/153916/message.aspx</guid><category> PLC/PAC</category><author></author></item><item><title>AB PLC 基础知识</title><pubDate>Sat, 15 Nov 2008 21:26:45 GMT</pubDate><link>http://blog.cechina.cn/laobing221/153915/message.aspx</link><description>&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AB PLC 基础知识&lt;/p&gt;
&lt;p&gt;罗克韦尔自动化除了提供自动化基础硬件外，还提供大量的软件工具，并在其产品中包含了最新的Microsoft的32位&lt;font color="#0000ff"&gt;Windows&lt;/font&gt; NT及ActiveXTM技术。这些软件为用户采用开放式的工业标准提供方便。另外借助DDE、ActiveX和ODBC兼容技术等，使现场数据能容易地同其他应用软件实现集成。这样对每一个应用软件无需多次重新建立标签数据库，从而极大地提高了软件可重复使用性。&lt;br&gt;　　　　Rockwell Software提供了一个从车间到顶层的解决方案。首先可以利用RSWireTM开发控制电气原理图，并在RSLogixTM PLC编程软件中利用RSWire中输入的标签。借助RSView32，并再次利用这些标签，建立一个MMI系统对自动化设备和过程进行监控。再加入RSToolsTM和RSLadderTMActiveX控制，开发自己的应用软件，并和现场设备实现完美连接。现在，可以利用RSLinx与数据服务器共享现场数据了...如果将数据登录到企业数据库系统内，可以利用RSSqlTM。一旦将数据收集起来，可以利用RSMailmanTM为公司内的某些部门提供实时数据，以实现报警通知，或实现库存管理。&lt;br&gt;　　　　Rockwell Software的软件一般可分为7类：(1)通信软件;(2)组件软件;(3)设计软件;(4)诊断软件;(5)人机界面软件;(6)编程软件;(7)RS和A-B文档 &lt;/p&gt;
&lt;p class="Sja122"&gt;字串7&lt;/p&gt;
&lt;p&gt;&lt;br&gt;　　&lt;br&gt;　　1　通信软件&lt;br&gt;　　　　(1)InterchangeTM系列软件是一个应用程序界面（API），它简化了各种主计算机操作系统与A-B处理器间的通信。&lt;br&gt;　　　　(2)RSLinxTM系列软件是用于A-B可编程控制器的服务器软件，为A-B的PLC处理器与RA以及其他公司的（如微软）的许多软件产品提供了通信联结。它充分利用了&lt;font color="#0000ff"&gt;Windows&lt;/font&gt; NT操作系统所具有的多线程，多任务，多处理器等性能，通过各种通信接口，可以与许多应用软件组合运行。而且界面直观易学。其主要特点有：&lt;br&gt;　　　　①由于所有32位A-B驱动程序都被封装在一个软件包内，使升级到新的处理器和新的&lt;font color="#0000ff"&gt;网络&lt;/font&gt;更为容易。&lt;br&gt;　　　　②与RS，A-B及第三方软件产品或由用户利用RSLinx的开放CAPI或AdvanceDDETM开发的软件产品兼容。&lt;br&gt;　　　　③利用DDE接口对PLC-5和SLC500处理器数据进行同步读写访问。&lt;br&gt;　　　　④利用CAPI对PLC-5，PLC-2，PLC-3和SLC500处理器数据进行同步和异步读、写访问。&lt;br&gt;　　　　⑤支持多个通信设备的并行运行。&lt;br&gt;　　　　⑥利用复制/粘贴功能易于建立DDE热连接。&lt;br&gt;　　　　⑦利用&lt;font color="#0000ff"&gt;网络&lt;/font&gt;DDE与其它计算机实现数据共享。 &lt;/p&gt;
&lt;p class="Sja122"&gt;字串7&lt;/p&gt;
&lt;p&gt;&lt;br&gt;　　　　⑧优化DDE读操作实现对系统资源的有效利用，减少&lt;font color="#0000ff"&gt;网络&lt;/font&gt;阻塞。&lt;br&gt;　　　　⑨块读写获取了最快通信速度，减少了&lt;font color="#0000ff"&gt;网络&lt;/font&gt;的负荷。&lt;br&gt;　　　　⑩通过RSWho功能以及易于理解的诊断功能使系统观察更直观。&lt;br&gt;　　　　(3)RSNetworkTM系列软件主要用于控制网和设备网的组态。&lt;br&gt;　　　　(4)RSServerTM系列软件是工业DDE服务器系列软件，可使用它作为一个DDE接口软件去访问GE Fanuc Series90（SNP），GE Fanuc Series90 TCP/IP，Reliance Automax DCS可编程控制器，Allen-Bradley Bulletin 1400 PowerMonitor模块或GE Fanuc Genius I/O系统。&lt;br&gt;　　　　(5)RSSQL系列软件将强大的处理引擎和直观的用户界面结合起来，把企业信息系统与现场连接起来，同时能在关系数据库系统（RDBMS）和过程控制系统之间建立处理联系。使用直观的点击式界面去组态处理以将处理器数据点与数据库表中的列连结起来。&lt;br&gt;　　　　(6)WINtelligent TMLinx系列软件允许Microsoft &lt;font color="#0000ff"&gt;Windows&lt;/font&gt; DDE兼容软件与A-B处理器和控制器交换数据，可将现场数据读入应用软件进行显示、登录以及趋势图操作。亦可从监控计算机设置某单独参数或下载配方到所支持的设备中。 &lt;span class="Sja122"&gt;字串8&lt;/span&gt; &lt;br&gt;　　&lt;br&gt;　　2　组件软件&lt;br&gt;　　　　(1)RSToolsTM是用于工业过程的ActiveX控制的软件。利用该控制在ActiveX包容器，如Microsoft Visual Basic, Internet Explore以及RS的RSView32,采集和显示现场数据。这些控制可应用在不连续生产场合，过程控制和SCADA环境。对于分布式应用，RSTools 可作为RS的RSPortalTM产品的客户软件，可从Internet 或Intranet上从远程节点上获取数据。&lt;br&gt;　　　　(2)RSPortalTM是Internet数据传输软件。它提供了TCP/IP&lt;font color="#0000ff"&gt;网络&lt;/font&gt;上数据有效，快速安全地传输。它被设计成适应各种&lt;font color="#0000ff"&gt;网络&lt;/font&gt;解决方案，可用在“企业范围”内的Intranet或“全球范围”内Internet上传输数据。&lt;br&gt;　　　　(3)RSSnapshotTM是接DDE数据的Internet图象软件。它使装有任意硬件平台，操作系统或Web浏览器的客户计算机都能立即看到DDE服务器数据。&lt;br&gt;　　　　(4)RSWorkbenchTM用于Visual Basic的开发环境。它作为VB开发环境的附加选件，使用户可以访问那些可重新使用的代码、图象及模板，并且是一个扩展的基于对象的绘图软件包。整个软件由几个模块组成，每个模块都有助于减少开发工业应用软件的时间。&lt;br&gt;　　　　(5)RSWorkshopTM是一种综合开发工具包，用于VB的开发环境。它包括RSToolbox ActiveX控制和RSWorkbench VB编辑器附加项软件。用一个可重复使用的组件库和开发工具增强了Microsoft VB环境。 &lt;/p&gt;
&lt;p class="Sja122"&gt;字串3&lt;/p&gt;
&lt;p&gt;&lt;br&gt;　　　　(6)RSMailmanTM包括三个OLE自动化服务器，以增强基于MAPI的邮件系统功能。通过它，OLE自动化客户软件就可利用其中的高级信息接受管理，预定义消息编辑和进度安排等功能。&lt;br&gt;　　　　此外，组件软件还包括RSAlarmTM, RSAnimatorTM, RSButtonTM, RSCompareTM, RSGaugeTM和RSLadderTM等。&lt;br&gt;　　&lt;br&gt;　　3　设计软件&lt;br&gt;　　　　RSWireTM系列软件提供了从绘图板或机械设计进步到易于理解的软件解决方案，以进行准确无误的原理图设计，并同时产生支持文档。它使控制系统设计自动化，并能生成一个智能原理图。利用已有设计中的符号和宏库快速生成原理图。智能布线合理的连接符号，并在符号放置的连接点再的自动断开，保证正确表达设计内容。&lt;br&gt;　　&lt;br&gt;　　4　诊断软件&lt;br&gt;　　　　SMART DiagnosticsTM系列软件是系统监视和诊断工具，周期性检查系统运行以及&lt;font color="#0000ff"&gt;网络&lt;/font&gt;通信、控制器和过程变量的状态。&lt;br&gt;　　&lt;br&gt;　　5　人机界面软件&lt;br&gt;　　　　(1)RSBatchTM系列软件用于批生产过程管理。无论是进行简单的单元级的运行还是执行高度复杂的具有&lt;font color="#0000ff"&gt;网络&lt;/font&gt;结构的多种产品的任务，都可使用它。&lt;br&gt;　　　　(2)RSPowerTM用于电力设备组态及监视。利用它可最大限度地发挥A-B Bullentin 1400 Powermonitor和Bullentin 1403 PowermonitorⅡ电力监视设备的特点。通过它可以在桌面上对电力设备组态而无需面板操作，并且在安装完软件的几分钟内生成自定义的画面开始监视电力设备。RSPower直观的组态过程，完善的图形工具条以及易浏览性使之成为一个生成代表电力系统运行状态的数据监视系统的有用工具。 &lt;/p&gt;
&lt;div class="Sja122"&gt;字串2&lt;/div&gt;
&lt;p&gt;&lt;br&gt;　　　　(3)RSTrendTM是数据采集及历史趋势软件。它提供完全的32位数据采集引擎和灵活的趋势显示，可有效地登录并监视PLC数据。通过简单的几个步骤来组态新项目，定义登录标签并开始登录。为快速选择工艺数据并显示趋势，这些程序功能被集中在一起，却彼此独立地发生作用。它还满足各种的数据采集需要：自动采集数据、数据转换，趋势图和登录报表只是其中一部分。&lt;br&gt;　　　　(4)RSView32TM系列软件是一种易用的、可集成的、基于组件的MMI系统，具有用户所需的全部特征和功能，能有效地监视并控制机器和过程。它基于Microsoftware &lt;font color="#0000ff"&gt;windows&lt;/font&gt; NT 和&lt;font color="#0000ff"&gt;Windows&lt;/font&gt; 95平台设计，并且是第一个把ActiveX控制嵌入画面的MMI软件包。其主要特点有：&lt;br&gt;　　　　①图形与动画　软件本身提供绘图工具可生成简单或复杂的图形对象与文本，还包含常用图形对象的库，可以将这些通信图形对象拖放到画面种，也可以使用其它绘图软件包如AutoCADTM和CorelDRAW生成的对象。动画控制可以激活图形对象以使它们反映出过程变化。&lt;br&gt;　　　　②报警监视　可对开关量或模拟量标签组态报警，并使用警告摘要窗口显示报警信息。&lt;br&gt;　　　　③登录　在运行时记录系统信息。包括动作登录、报警登录和数据登录。所有登录信息保存为dBase IVTM(.DBF)格式，且能在第三方软件如Microsoft Excel,Crystal ReportTM和Foxpro中使用。 &lt;/p&gt;
&lt;div class="Sja122"&gt;字串6&lt;/div&gt;
&lt;p&gt;&lt;br&gt;　　　　④趋势　可在一个趋势中绘制16条标签曲线，并且当标签穿越参考值时使用阴影来突出显示。组态趋势可在运行时动态调整坐标轴以控制数据的显示。&lt;br&gt;　　　　⑤事件检测　事件是可触发动作的RSView32表达式。利用事件检测使应用软件能对系统和过程中的事件进行自动响应。&lt;br&gt;　　　　⑥安全系统　项目级安全系统允许限制用户或用户组访问特定的画面或改变某些标签值。&lt;br&gt;　　　　系统级安全系统允许将用户锁定在RSView32应用软件中，即不能退出到&lt;font color="#0000ff"&gt;Windows&lt;/font&gt;操作系统。&lt;br&gt;　　　　⑦重复使用标签数据库　只要打开标签浏览器，可以导入逻辑编程软件中使用的全部数据库，或者选择梯形逻辑所用的标签，而不需导入整个数据库。&lt;br&gt;　　　　⑧重复利用画面　RSView32支持许多标准图形文件格式，可使用现存的图形而不必重画。&lt;br&gt;　　　　⑨扩展和升级项目与系统　当项目扩展时，可以容易地将RSView32升级到更多标签数据库限制版本，最多可扩展到32,000点，而对项目无需任何改变。&lt;br&gt;　　　　⑩互操作性　RS的产品可以集成工作，因而可建立自定义应用程序。&lt;br&gt;　　　　与Microsoft产品共享信息　利用RSView32的开放式设计可容易地与Microsoft产品共享&lt;br&gt;&lt;/p&gt;</description><comments></comments><guid>http://blog.cechina.cn/laobing221/153915/message.aspx</guid><category> PLC/PAC</category><author></author></item></channel></rss>