第一篇:PLC编程入门 个人总结 转载
新手学习PLC编程的入门建议
小小
本篇只供参考,借鉴。
鄙人原化工专业毕业的,后因工作需要,加之个人兴趣,才转行搞仪表、机械。十年前,我刚开始使用PLC时,也是一头雾水。仗着自己对硬件、工程知识的熟悉,和对组态软件的粗浅了解,硬着头皮接下了任务。当时已经来不及接受培训,相关资料极其缺乏,仅有的参考资料是一本英文的S7-200手册,以及西门子网站上找到的一些全西文的示例,总算在三个月内完成了系统的构建、软件的编写工作。期间走弯路、出故障是家常便饭,经常搞得我茶饭不思,而且还由于操作不慎烧毁过一台PLC。所以我非常理解那些刚入门的网友两手抓瞎的感觉。
在此,我想粗略的总结一下自己的学习之路,供网友们参考。
1、编程需要坚强的毅力和足够的耐心
人各有所长。有些人把编程看作一项冗长而枯燥的工作;有些人把编程看作一项趣味的智力游戏。如果你是前者,强烈建议你远离这份工作。毕竟编程工作是对人的毅力和耐心的挑战。我所在实验室中,很多学生看到我编程序就会惊讶于我面对这一堆堆符号所表现出的专注。其实,这是兴趣使然。兴趣使我具备了足够的毅力和耐心。经过无数次失败后,当看到一个个符号按我的思路整齐的排列,PLC按我的要求有条不紊的运行时,兴趣得到了极大的满足,如同打通了一个游戏的关口。所以,我告诉这些学生:你们看到的是一堆枯燥怪异的符号,我看到的却是一群热情奔放的舞者,而我则是她们的导演。
2、编程需要敢于实践的信心
我曾经教过一个学生学AutoCAD,我对她的唯一要求就是实践。我告诉她:你随便怎么操作,大不了一张图重画;最坏的结果是系统崩溃,没关系,系统重做,再来;只要电脑没被砸了,怎么都行。两年后,我再看到她做的CAD图纸,也自叹不如。
同样道理,只有不断地在PLC上运行这些指令,观察运行的结果,才能弄清PLC指令的作用。很多初学者对PLC一脸的迷茫,往往是出于一种畏惧,担心损坏设备。而这些畏惧是没有任何道理的。仔细的阅读手册是非常重要的,但是仅靠读书是成不了一个工程师的。更何况手
册上的内容并非面面俱到。我在接触到那些不熟悉的指令时,喜欢单独编一个小程序,让PLC运行。然后逐个修改条件,观察运行的结果(MicroWin为用户提供了非常好的监控手段),反过来再重新理解手册的描述,这样就可以非常直观的理解这些指令的作用和使用方法。不必担心自己写的程序会有什么问题,会影响PLC的正常工作。程序有没有问题,只有让PLC运行了才能发现。而发现问题并解决问题就是对自己能力的提高。撇开硬件操作不谈,单就软件来说,我还真没有遇到过由于软件问题而损坏PLC的事。在这里不必担心继电器电路接错线可能造成的后果。所以,大胆的实践是PLC编程的必由之路。
当然,大胆实践并不是野蛮操作,而是必须遵循必要的规范。还有一个要注意的,在程序未经可靠性证实之前,千万不要挂接负载,以免造成不必要的损失。数字量的输出有LED显示;而模拟量处理可以采用一些硬件或软件模拟手段来解决。
3、编程需要有缜密的逻辑思维
编程本身就是一种逻辑思维过程。在高级语言中,使用最多的是if then else、select这些条件判别语句,这就是逻辑中的因果关系。PLC程序就是由这些因果关系组成的:判别条件是否成立,进而决定执行相应的指令。最初的PLC是用来替代继电器逻辑电路的,所以继承了继电器电路以触点作为触发条件的描述方式。在PLC中,以虚拟触点代替了继电器的金属触点,而继电器电路所表达的逻辑关系还是被完整的保留下来。即使引入了继电器电路难以胜任的数值处理过程,PLC从根本上还是在执行一个个因果关系。所以,理顺对象的各个事件之间的逻辑关系,是编程之前必须精心做好的准备工作。我在接到一项任务后,第一件事就是整理出一份逻辑关系图,与用户反复商讨,取得用户的认可,然后才真正进入程序的编写过程。
4、不可或缺的相关知识
PLC的程序是直接作用于对象的具体工艺过程,那么对对象具体工艺过程的理解是非常重要的的。我在与用户的交流过程中,会用我所掌握的Unit Operation的知识分析用户的工艺过程,协助用户整理过程控制中的各个逻辑关系,甚至包括各种仪表、硬件的配置。这得益于我原本所学的专业。当然,不能要求所有搞PLC程序的工程师都有我这样的经历。但是有两门知识却是不可或缺的:一是过程仪表的硬件知识,包括传感器、变送器(二次仪表)和PLC本身,这是构建控制系统的基础;二是过程控制理论,包括各种控制模型的原理和应用,其中
最重要的是二位调节和PID调节模型。PID调节是目前用得最广泛的过程控制手段,且变化多端。学习PID最好的方法就是读书。几乎所有讲解过程控制的书籍都有关于PID的内容,多读基本相关的书籍对理解PID是很有益处的。我发现不少网友在进入PLC领域时,缺乏这些相关知识。这并不可怕;可怕的是当事者不能静下心来弥补知识的缺陷。我们不要怪罪学校没有教授这些内容,而是要注重自己如何去学习这些知识。工作中遇到的许多问题是学校里没讲过的,这不能成为我们拒绝工作的理由,而应该以积极的态度去应对这些问题。我的体会是,为了解决工作中的问题而学习的知识,比课堂上学的东西更容易记住。
5、养成良好的编程习惯
每个人编程都会有不同的习惯和特点,不能强求一致。但是一些好的习惯还是应该为大多数人所遵循。一是理顺逻辑关系、时序关系,编制程序框图;二是合理分配主程序、子程序和中断程序;三是合理分配寄存器,编制寄存器符号表。
PLC编程更接近于单片机,或者说PLC就是模块化的单片机。因此PLC的很多操作都是直接针对寄存器的,如果在程序中出现不合理的寄存器地址重叠,一定会出现不可预想的后果。编制寄存器符号表不仅可以避免上述问题(MicroWin会有问题提示),而且可以使程序具备更好的可读性。这和VB中定义变量有异曲同工之处。
VB编程中关注的是事件,不强调主程序和子程序的观念,因为VB主程序的工作是由PC的操作系统完成的。PLC则不然。PLC程序是以主程序为主干的,CPU不断的循环执行主程序,只有触发条件成立时才会调用子程序或中断程序。即子程序和中断程序所执行的任务不是全时需要的。如果把这些任务都放在主程序中会无端增加主程序的工作量,降低程序的效率。这点和单片机的编程思路是一致的。子程序的使用可以使整个程序的逻辑更清晰。而且子程序可以分开编写、调试,最后“安装”到主程序上。这样你可以一个一个解决问题。
PLC编程,无论是LAD,抑或STL,都不如VB那么直观、有趣,更不如CAD那么形象。但比单片机的汇编语言的可视性强多了。对于初学者,LAD(梯形图)的编程相对直观,更容易上手。
最后,PLC提供了丰富的指令、模块,比单片机方便了很多。但是初学者编程时应尽量先使用简单的指令达到目的。尽管看上去有点土,却不失为一个入门的好途径,且对你理解那些较为复杂的指令会有帮助。具备了一定经验后,应该考虑掌握复杂指令的应用,以及程序的优化。
学习PLC密决
----
1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来 再参考别人的提示,你就知道自己和别人思路的差异。
2.别小家子气,买本书几十块都舍不得,你还学个P。为了省钱看电子书,浪费的时间绝对 超过书的价值。当然如果查资料,只能看PDF。
3.学习新的开发软件时,一定要看帮助手册。买的书不够全面。刚接触一个软件,什么都不 懂,就盲目的问东问西,让人看起来很幼稚。
4.不要蜻蜓点水,得过且过,细微之处往往体现实力。
5.把时髦的技术挂在嘴边,还不如把过时的技术记在心里。
6.看得懂的书,请仔细看;看不懂的书,请硬着头皮看。
.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍。
7.多实践,调试,去写去调,只用软件模拟,是永远成不了高手的。
8.保存好你做过的所有的源程序、原理图等----那是你最好的积累之一。
9.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先你要学会 自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就 能找到很多相 关资料,别老是等待别人给你希望,看的出你平时一定也很懒!到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就 有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己的帖子没人回 的。
11,论坛论坛,就是大家讨论的地方,总期望有高手总无偿指点你,除非他是你亲戚!讨论者,起码是水平相当的才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你讨论呢。什么样的人是浮躁的人
如何学习PLC
----
弄通有关PLC程序设计理论是重要的。没有这方面的理论准备或指导,仅靠在实践中摸索,简单的问题还好办。复杂的就不好办了。不仅无从下手,而且花了很多时间与精力,也难编出效率较高、质量也较高的程序,常常是事倍功半。
但是,编程的具体实践,以及在这个实践中得来的知识或技能,即经验,也是重要的。没有经验,仅有理论,既无法深刻理解理论,又无法灵活应用理论。这正如学数学,如仅了解一些定理或记住一些公式,没有作相应的练习,肯定是学不好的。更不用说,任何理论也都只是经验的总结,归根到底也都有是来自实践。
1、经验积累
经验有别人的,也有自己的,都很重要。前者要靠细心学习,后者要靠用心积累,都要在一定的时间与必要的精力。
别人的经验有上了书的或登载在杂志上的。有的是细心学习别人的,但多数是我自己的经验。所有的例子都经我测试过,都经实践证明是可行的。我想,别的书本或杂志上介绍的也会是这样的。所以学习这样杨功的经验是必要的。
还有就是你同事的经验,也是值得学习。这种经验离你很“近”,很易借鉴。
自己的经验则是最重要的。要在自己的实践中,积累自己的经验。同时,最好在学别人的经验时,也能亲自作些测试,能使自己也有类似的经历,进而把这些经验变成自己的。这也是自己经验的重要积累。
还有一些失败的经验,这往往是不会公开的,但这些经验也要学习,也要积累。
经验的积累要用自己的脑记,更要用电脑记。最好作些分类,建立一个自用的程序库,以便于随时引用。
2、经验升华
经验还有待升华。升华有三个层次:
最低的层次就是建立一个典型的程序库,供今后再用。若程序复杂,还可建一些功能块,或子程序,以便以后引用。
其次,要总结出有效算法。如单按钮起停程序库等。
最高层次的升华是把经验上升到理论的高度,为丰富PLC程序设计理论作贡献。我想,随着PLC使用的普及与提高,是会有越来越多从经验中升华出来的,而又能用以指导实践的PLC编程理论的。
3、经验应用
经验积累、经验升华都是为了应用。经验应用有三方面:
1)用作工程设计模板。设计新系统时,选用一个或几个与现设计工程类似的,已取得成功的工程,作样板进行设计。这既可减轻设计的工作量,又增加设计的成功率。这也是信息可重
用的一大好处。
2)用作程序设计参考。在无成功的工程可作样板时,在新设计的逻辑中,仍有相当一部分控制逻辑,可采用或借用已有典型逻辑,这也可减少设计的工作量,增加设计的成功率。3)用作算法设计参考。在既无样板可参照,又无典型可采用时,还可运用过去的一些成功的算法。
经验是宝贵的,但是经验特别是个人经验,总是有限的。所以,经验的应用也还要与编程理论相结合。
如何学习别人的PLC程序
----收集资料。在收集资料时不仅要收集程序还要收集程序所附带的工艺流程及I/O分配表。2 程序分类。在收集到前人的程序后,首先加以分类。以不同品牌的程序分类——再以不同功能细分。选择程序加以理解。分类完成后就是慢慢的“消化”程序了。首先选择自己熟悉的PLC程序或是自己将要用到的程序样例下手,这样理解起来比较容易。4 对于有工艺流程及I/O分配表的程序进行理解。1)了解程序的工艺流程。
2)I/O分配。把I/O分配表中的说明加在程序的注释中。
3)理解中间位。在程序设计时肯定会用到诸多的中间位做转接,然后搞清楚每一步或每一网络所对应的中间位的功能,在程序中加以注释。
4)理解定时器。程序中定时器的功能要清楚,特别是有时间日期控制的,定时器的功能是比较重要的。其意义也要记录下来。5)理解计数器。
6)理解陌生指令。在“消化”别人程序的过程中,不勉会看到一些自己没用过或不熟悉的指令,这也是自己要重点理解的对象,要准备一份电子指令手册随时查找,并在程序中记录。这才是自己要学习与进步的地方。
5、对于没有任何说明的程序进行理解。
1)指令应用。对此类程序主要是注意程序中的指令应用。把指令截取下来,以指令名称为为文件名另存在文件夹中。
2)分系统另存。对于能理解并能整理成系统程序加以另存,比如说程序中的时间系统、PID系统等等的程序。
3)所有的PLC指令都是大同小异的,当以后工作中能应用到的部分可以就地取材,举一反三。更重要的是要了解设备的工艺,只有熟悉了产品和掌握了程序的基本编写方法,才能得心应手!
PLC基础学习方法论谈
----
学习PLC入门方法其实主要是两点,1.选择一个PLC,2边学边练
一、问题提出。
可编程控制器技术最主要是应用于自动化控制工程中,如何综合地运用前面学过知识点,根据实际工程要求合理组合成控制系统,在此介绍组成可编程控制器控制系统的一般方法。
二、可编程控制器控制系统设计的基本步骤 1 .系统设计的主要内容
(1)拟定控制系统设计的技术条件。技术条件一般以设计任务书的形式来确定,它是整个设计的依据;
(2)选择电气传动形式和电动机、电磁阀等执行机构;(3)选定 PLC 的型号;
(4)编制 PLC 的输入 / 输出分配表或绘制输入 / 输出端子接线图;
(5)根据系统设计的要求编写软件规格说明书,然后再用相应的编程语言(常用梯形图)进行程序设计;
(6)了解并遵循用户认知心理学,重视人机界面的设计,增强人与机器之间的友善关系;(7)设计操作台、电气柜及非标准电器元部件;(8)编写设计说明书和使用说明书; 根据具体任务,上述内容可适当调整。2 . 系统设计的基本步骤
可编程控制器应用系统设计与调试的主要步骤,如图 1 所示。
图 1 可编程控制器应用系统设计与调试的主要步骤(1)深入了解和分析被控对象的工艺条件和控制要求 a .被控对象就是受控的机械、电气设备、生产线或生产过程。b .控制要求主要指控制的基本方式、应完成的动作、自动工作循环的组成、必要的保护和联锁等。对较复杂的控制系统,还可将控制任务分成几个独立部分,这种可化繁为简,有利于编程和调试。
(2)确定 I/O 设备 根据被控对象对 PLC
控制系统的功能要求,确定系统所需的用户输入、输出设备。常用的输入设备有按钮、选择
开关、行程开关、传感器等,常用的输出设备有继电器、接触器、指示灯、电磁阀等。
(3)选择合适的 PLC 类型
根据已确定的用户 I/O 设备,统计所需的输入信号和输出信号的点数,选择合适的 PLC 类型,包括机型的选择、容量的选择、I/O 模块的选择、电源模块的选择等。(4)分配 I/O 点
分配 PLC 的输入输出点,编制出输入 / 输出分配表或者画出输入 / 输出端子的接线图。接着九可以进行 PLC
程序设计,同时可进行控制柜或操作台的设计和现场施工。(5)设计应用系统梯形图程序
根据工作功能图表或状态流程图等设计出梯形图即编程。这一步是整个应用系统设计的最核心工作,也是比较困难的一步,要设计好梯形图,首先要十分熟悉控制要求,同时还要有一定的电气设计的实践经验。
(6)将程序输入 PLC
当使用简易编程器将程序输入 PLC
时,需要先将梯形图转换成指令助记符,以便输入。当使用可编程序控制器的辅助编程软件在计算机上编程时,可通过上下位机的连接电缆将程序下载到 PLC中去。
(7)进行软件测试
程序输入 PLC 后,应先进行测试工作。因为在程序设计过程中,难免会有疏漏的地方。因此在将 PLC
连接到现场设备上去之前,必需进行软件测试,以排除程序中的错误,同时也为整体调试打好基础,缩短整体调试的周期。(8)应用系统整体调试 在 PLC
软硬件设计和控制柜及现场施工完成后,就可以进行整个系统的联机调试,如果控制系统是由几个部分组成,则应先作局部调试,然后再进行整体调试;如果控制程序的步序较多,则可先进行分段调试,然后再连接起来总调。调试中发现的问题,要逐一排除,直至调试成功。
(9)编制技术文件
系统技术文件包括说明书、电气原理图、电器布置图、电气元件明细表、PLC 梯形图。
三、PLC 硬件系统设计 1 . PLC 型号的选择
在作出系统控制方案的决策之前,要详细了解被控对象的控制要求,从而决定是否选用 PLC 进行控制。
在控制系统逻辑关系较复杂(需要大量中间继电器、时间继电器、计数器等)、工艺流程和产品改型较频繁、需要进行数据处理和信息管理(有数据运算、模拟量的控制、PID 调节等)、系统要求有较高的可靠性和稳定性、准备实现工厂自动化联网等情况下,使用 PLC 控制是很必要的。
目前,国内外众多的生产厂家提供了多种系列功能各异的 PLC
产品,使用户眼花缭乱、无所适从。所以全面权衡利弊、合理地选择机型才能达到经济实用的目的。一般选择机型要以满足系统功能需要为宗旨,不要盲目贪大求全,以免造成投资和设备资源的浪费。机型的选择可从以下几个方面来考虑。
(1)对输入 / 输出点的选择
盲目选择点数多的机型会造成一定浪费。
要先弄清除控制系统的 I/O 总点数,再按实际所需总点数的 15 ~ 20 %留出备用量(为系统的改造等留有余地)后确定所需 PLC 的点数。
另外要注意,一些高密度输入点的模块对同时接通的输入点数有限制,一般同时接通的输入点不得超过总输入点的 60 %; PLC
每个输出点的驱动能力(A/ 点)也是有限的,有的 PLC 其每点输出电流的大小还随所加负载电压的不同而异;一般 PLC 的允许输出电流随环境温度的升高而有所降低等。在选型时要考虑这些问题。
PLC的输出点可分为共点式、分组式和隔离式几种接法。隔离式的各组输出点之间可以采用不同的电压种类和电压等级,但这种 PLC
平均每点的价格较高。如果输出信号之间不需要隔离,则应选择前两种输出方式的 PLC。(2)对存储容量的选择
对用户存储容量只能作粗略的估算。在仅对开关量进行控制的系统中,可以用输入总点数乘 字 / 点+输出总点数乘 5 字 / 点来估算;计数器 / 定时器按(3 ~ 5)字 / 个估算;有运算处理时按(5 ~ 10)字 / 量估算;在有模拟量输入 / 输出的系统中,可以按每输入 /(或输出)一路模拟量约需(80 ~ 100)字左右的存储容量来估算;有通信处理时按每个接口 200 字以上的数量粗略估算。最后,一般按估算容量的 50 ~ 100 %留有裕量。对缺乏经验的设计者,选择容量时留有裕量要大些。(3)对 I/O 响应时间的选择
PLC的 I/O 响应时间包括输入电路延迟、输出电路延迟和扫描工作方式引起的时间延迟(一般在 2 ~ 3 个扫描周期)等。对开关量控制的系统,PLC 和 I/O 响应时间一般都能满足实际工程的要求,可不必考虑 I/O 响应问题。但对模拟量控制的系统、特别是闭环系统就要考虑这个问题。(4)根据输出负载的特点选型 不同的负载对 PLC 的输出方式有相应的要求。例如,频繁通断的感性负载,应选择晶体管或晶闸管输出型的,而不应选用继电器输出型的。但继电器输出型的 PLC
有许多优点,如导通压降小,有隔离作用,价格相对较便宜,承受瞬时过电压和过电流的能力较强,其负载电压灵活(可交流、可直流)且电压等级范围大等。所以动作不频繁的交、直流负载可以选择继电器输出型的 PLC。
(5)对在线和离线编程的选择
离线编程示指主机和编程器共用一个 CPU,通过编程器的方式选择开关来选择 PLC 的编程、监控和运行工作状态。编程状态时,CPU 只为编程器服务,而不对现场进行控制。专用编程器编程属于这种情况。在线编程是指主机和编程器各有一个 CPU,主机的 CPU 完成对现场的控制,在每一个扫描周期末尾与编程器通信,编程器把修改的程序发给主机,在下一个扫描周期主机将按新的程序对现场进行控制。计算机辅助编程既能实现离线编程,也能实现在线编程。在线编程需购置计算机,并配置编程软件。采用哪种编程方法应根据需要决定。
(6)据是否联网通信选型
若 PLC 控制的系统需要联入工厂自动化网络,则 PLC 需要有通信联网功能,即要求 PLC
应具有连接其他 PLC、上位计算机及
CRT 等的接口。大、中型机都有通信功能,目前大部分小型机也具有通信功能。(7)对 PLC 结构形式的选择 在相同功能和相同 I/O 点数据的情况下,整体式比模块式价格低。但模块式具有功能扩展灵活,维修方便(换模块),容易判断故障等优点,要按实际需要选择 PLC 的结构形式。.分配输入 / 输出点
一般输入点和输入信号、输出点和输出控制是一一对应的。
分配好后,按系统配置的通道与接点号,分配给每一个输入信号和输出信号,即进行编号。在个别情况下,也有两个信号用一个输入点的,那样就应在接入输入点前,按逻辑关系接好线(如两个触点先串联或并联),然后再接到输入点。(1)确定 I/O 通道范围
不同型号的 PLC,其输入 / 输出通道的范围是不一样的,应根据所选 PLC 型号,查阅相应的编程手册,决不可“张冠李戴”。必须参阅有关操作手册。(2)部辅助继电器
内部辅助继电器不对外输出,不能直接连接外部器件,而是在控制其他继电器、定时器 / 计数器时作数据存储或数据处理用。
从功能上讲,内部辅助继电器相当于传统电控柜中的中间继电器。未分配模块的输入 / 输出继电器区以及未使用 1 : 1 链接时的链接继电器区等均可作为内部辅助继电器使用。根据程序设计的需要,应合理安排 PLC 的内部辅助继电器
PLC基础知识简介
----
目前,世界上有200多厂家生产300多品种PLC产品,应用在汽车(23%)、粮食加工(16.4%)、化学/制药(14.6%)、金属/矿山(11.5%)、纸浆/造纸(11.3%)等行业。为了使各位初学者更方便地了解PLC,本文对PLC的发展、基本结构、配置、应用等基本知识作一简介,以期对各位网友有所帮助。
一、PLC的发展历程 在工业生产过程中,大量的开关量顺序控制,它按照逻辑条件进行顺序
动作,并按照逻辑关系进行连锁保护动作的控制,及大量离散量的数据采集。传统上,这些功能是通过气动或电气控制系统来实现的。1968年美国GM(通用汽车)公司提出取代继电气控制装置的要求,第二年,美国数字公司研制出了基于集成电路和电子技术的控制装置,首次采用程序化的手段应用于电气控制,这就是第一代可编程序控制器,称Programmable Controller(PC)。个人计算机(简称PC)发展起来后,为了方便,也为了反映可编程控制器的功能特点,可编程序控制器定名为Programmable Logic Controller(PLC),现在,仍常常将PLC简称PC。PLC的定义有许多种。国际电工委员会(IEC)对PLC的定义是:可编程控制器是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用可编程序的存贮器,用来在其内部存贮执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并通过数字的、模拟的输入和输出,控制各种类型的机械或生产过程。可编程序控制器及其有关设备,都应按易于与工业控制系统形成一个整体,易于扩充其功能的原则设计。上世纪80年代至90年代中期,是PLC发展最快的时期,年增长率一直保持为30~40%。在这时期,PLC在处理模拟量能力、数字运算能力、人机接口能力和网络能力得到大幅度提高,PLC逐渐进入过程控制领域,在某些应用上取代了在过程控制领域处于统治地位的DCS系统。PLC具有通用性强、使用方便、适应面广、可靠性高、抗干扰能力强、编程简单等特点。PLC在工业自动化控制特别是顺序控制中的地位,在可预见的将来,是无法取代的。
二、PLC的构成从结构上分,PLC分为固定式和组合式(模块式)两种。固定式PLC包括CPU板、I/O板、显示面板、内存块、电源等,这些元素组合成一个不可拆卸的整体。模块式PLC包括CPU模块、I/O模块、内存、电源模块、底板或机架,这些模块可以按照一定规则组合配置。
三、CPU的构成CPU是PLC的核心,起神经中枢的作用,每套PLC至少有一个CPU,它按PLC的系统程序赋予的功能接收并存贮用户程序和数据,用扫描的方式采集由现场输入装置送来的状态或数据,并存入规定的寄存器中,同时,诊断电源和PLC内部电路的工作状态和编程过程中的语法错误等。进入运行后,从用户程序存贮器中逐条读取指令,经分析后再按指令规定的任务产生相应的控制信号,去指挥有关的控制电路。
CPU主要由运算器、控制器、寄存器及实现它们之间联系的数据、控制及状态总线构成,CPU单元还包括外围芯片、总线接口及有关电路。内存主要用于存储程序及数据,是PLC不可缺少的组成单元。
在使用者看来,不必要详细分析CPU的内部电路,但对各部分的工作机制还是应有足够的理解。
CPU的控制器控制CPU工作,由它读取指令、解释指令及执行指令。但工作节奏由震荡信号控制。运算器用于进行数字或逻辑运算,在控制器指挥下工作。寄存器参与运算,并存储运算的中间结果,它也是在控制器指挥下工作。CPU速度和内存容量是PLC的重要参数,它们决定着PLC的工作速度,IO数量及软件容量等,因此限制着控制规模。
四、I/O模块
PLC与电气回路的接口,是通过输入输出部分(I/O)完成的。I/O模块集成了PLC的I/O电路,其输入暂存器反映输入信号状态,输出点反映输出锁存器状态。输入模块将电信号变换成数字信号进入PLC系统,输出模块相反。I/O分为开关量输入(DI),开关量输出(DO),模拟量输入(AI),模拟量输出(AO)等模块。
开关量是指只有开和关(或1和0)两种状态的信号,模拟量是指连续变化的量。常用的I/O分类如下:
开关量:按电压水平分,有220VAC、110VAC、24VDC,按隔离方式分,有继电器隔离和晶体管隔离。
模拟量:按信号类型分,有电流型(4-20mA,0-20mA)、电压型(0-10V,0-5V,-10-10V)等,按精度分,有12bit,14bit,16bit等。
除了上述通用IO外,还有特殊IO模块,如热电阻、热电偶、脉冲等模块。
按I/O点数确定模块规格及数量,I/O模块可多可少,但其最大数受CPU所能管理的基本配置的能力,即受最大的底板或机架槽数限制。
五、电源模块
PLC电源用于为PLC各模块的集成电路提供工作电源。同时,有的还为输入电路提供24V的工作电源。电源输入类型有:交流电源(220VAC或110VAC),直流电源(常用的为24VAC)。
六、底板或机架
大多数模块式PLC使用底板或机架,其作用是:电气上,实现各模块间的联系,使CPU能访问底板上的所有模块,机械上,实现各模块间的连接,使各模块构成一个整体。
七、PLC系统的其它设备
1、编程设备:编程器是PLC开发应用、监测运行、检查维护不可缺少的器件,用于编程、对系统作一些设定、监控PLC及PLC所控制的系统的工作状况,但它不直接参与现场控制运行。小编程器PLC一般有手持型编程器,目前一般由计算机(运行编程软件)充当编程器。
2、人机界面:最简单的人机界面是指示灯和按钮,目前液晶屏(或触摸屏)式的一体式操作员终端应用越来越广泛,由计算机(运行组态软件)充当人机界面非常普及。
3、输入输出设备:用于永久性地存储用户数据,如EPROM、EEPROM写入器、条码阅读器,输入模拟量的电位器,打印机等。
八、PLC的通信联网
依靠先进的工业网络技术可以迅速有效地收集、传送生产和管理数据。因此,网络在自动化系统集成工程中的重要性越来越显著,甚至有人提出“网络就是控制器”的观点说法。
PLC具有通信联网的功能,它使PLC与PLC 之间、PLC与上位计算机以及其他智能设备之间能够交换信息,形成一个统一的整体,实现分散集中控制。多数PLC具有RS-232接口,还有一些内置有支持各自通信协议的接口。
PLC的通信,还未实现互操作性,IEC规定了多种现场总线标准,PLC各厂家均有采用。
对于一个自动化工程(特别是中大规模控制系统)来讲,选择网络非常重要的。首先,网络必须是开放的,以方便不同设备的集成及未来系统规模的扩展;其次,针对不同网络层次的传输性能要求,选择网络的形式,这必须在较深入地了解该网络标准的协议、机制的前提下进行;再次,综合考虑系统成本、设备兼容性、现场环境适用性等具体问题,确定不同层次所使用的网络标准。
西门子 S7-300 PLC 从入门到精通的100个经典问题
----新手必读
1:使用CPU 315F和ET 200S时应如何避免出现“通讯故障”消息?
使用CPU S7 315F,ET 200S以及故障安全DI/DO模块,那么您将调用OB35 的故障安全程序。而且,您已经接受所有监控时间的默认设置值,并且愿意接收“通讯故障”消息。OB 35 默认设置为100毫秒。您已经将F I/O模块的F监控时间设定为100毫秒,因此至少每100毫秒要寻址一次I/O模块。但是由于每100毫秒才调用一次OB 35,因此会发生通讯故障。要确保OB35的扫描间隔和F监控时间有所差别,请确保F监控时间大于OB35的扫描间隔时间。S7分布式安全系统,一直到V5.2 SP1 和 6ES7138-4FA00-0AB0,6 ES7138-4FB00-0AB0,6ES7138-4CF00-0AB0 都会出现这个问题。在新的模块中,F 监控时间设定为150毫秒.2:当DP从站不可用时,PROFIBUS上S7-300 CPU的监控时间是多少?
使用CPU的PROFIBUS接口上的DP从站操作PROFIBUS网络时,希望在启动期间检查期望的组态与实际的组态是否匹配。在 CPU属性对话框中的Startup选项卡上给出了两个不同的时间。
3:如何判断电源或缓冲区出错,如:电池故障?
如果电源(仅S7-400)或缓冲区中的一个错误触发一个事件,则CPU操作系统访问OB81。错误纠正后,重新访问OB81。电池故障情况下,如果电池检测中的BATT.INDIC开关是激活的,则 S7-400仅访问OB81。如果没有组态OB81,则CPU不会进入操作状态STOP。如果OB81不可用,则当电源出错时,CPU仍保持运行。
4:为S7CPU上的I/O模块(集中式或者分布式的)分配地址时应当注意哪些问题?
请注意,创建的数据区域(如一个双字)不能组态在过程映象的边界上,因为在该数据块中,只有边界下面的区域能够被读入过程映像,因此不可能从过程映像访问数据。因此,这些组态规则不支持这种情况:例如,在一个 256 字节输入的过程映像的 254 号地址上组态一个输入双字。如果一定需要如此选址,则必须相应地调整过程映像的大小(在CPU的Properties中)。
5:在S7 CPU中如何进行全局数据的基本通讯?在通讯时需要注意什么? 全局数据通讯用于交换小容量数据,全局数据(GD)可以是: 输入和输出 标记
数据块中的数据 定时器和计数器功能
数据交换是指在连入单向或双向GD环的CPU之间以数据包的形式交换数据。GD环由GD环编号来标识。
单向连接:某一CPU可以向多个CPU发送GD数据包。
双向连接:两个CPU之间的连接:每个CPU都可以发送和接收一个GD数据包。
必须确保接收端CPU未确认全局数据的接收。如果想要通过相应通讯块(SFB、FB或FC)来交换数据,则必须进行通讯块之间的连接。通过定义一个连接,可以极大简化通讯块的设计。该定义对所有调用的通讯块都有效且不需要每次都重新定义。
6:可以将S7-400存储卡用于CPU 318-2DP吗?
在通常的操作中,只能使用订货号为6ES7951-1K...(Flash EPROM)和6ES7951-1A...(RAM)的“短”> 存储卡。
7:尽管LED灯亮,为什么CPU 31xC不能从缺省地址124和125读取完整输入?
对于下列型号的CPU,请检查 24V 电压是否接入引脚 1。LED由输入电流控制。引脚 1 上的 24V 电压需要做进一步处理。313C(6ES7
8:配置CPU 31x-2 PN/DP的PN接口时,当PROFINET接口偶尔发生通信错误时,该如何处理?
请确定以太网(PROFINET)中的所有组件(转换)都支持 100 Mbit/s全双工基本操作。避 免中心分配器割裂网络,因为这些设备只能工作于半双工模式。
9:在硬件配置编辑器中,“时钟”修正因子有什么含义呢?
313-5BE0.-0AB0),313C-2DP(6ES7 313-6CE0.-0AB0),313C-2PTP(6ES7 313-6BE0.-0AB0), 314C-2DP(6ES7 314-6CF0.-0AB0),314C-2PTP(6ES7 314-6BF0.-0AB0)
在硬件配置中,通过CPU > Properties > Diagnostics/Clock,你可以进入“时钟”> 域内指定一个修正因子。这个修正因子只影响CPU的硬件时钟。时间中断源自于系统时钟,并且和硬件时钟的设定毫无关系。
10:如何通过PROFIBUS DP用功能块实现在主、从站之间实现双向数据传送?
在主站plc可以通过调用SFC14 “DPRD_DAT“和SFC15 “DPWR_DAT“来完成和从站的数据交换,而对于从站来说可以调用FC1 “DP_SEND“ 和FC2 ”DP_RECV“完成数据的交换。
11:可以从S7 CPU中读出哪些标识数据? 通过SFC 51“RDSYSST”可读出下列标识数据:
可以读出订货号和CPU版本号。为此,使用SFC 51和SSL ID 0111并使用下列索引: 1 = 模块标识 6 = 基本硬件标识 7 = 基本固件标识
12:在含有CPU 317-2PN/DP的S7-300上,如何编程可加载通讯功能块FB14(“GET”)和FB15(“PUT”)用于数据交换?
为了通过一个S7连接在使用CPU 317-2PN/DP的两个S7-300工作站之间进行数据交换,其中该S7连接是使用NetPro组态的,在S7通信中,必须调用通讯功能块。模块FB14(“GET”)用于从远程CPU取出数据,模块FB15(“PUT”)用于将数据写入远程CPU。功能块包含在STEP 7 V5.3的标准库中。< CPU 317-2PN/DP的通讯模块FB14(“GET”)和FB15(“PUT”)的属性 :
FB14和FB15是异步通讯功能。这些模块的运行可能跨越多个OB1循环。通过输入参数REQ激活FB14或FB15。DONE、NDR或ERROR表明作业结束。PUT和GET可以同时通过连接进行通信。
注意:不能将库SIMATIC_NET_CP中的通讯块用于CPU317-2PN/DP。
13:对于紧凑CPU 313C-2 PtP和CPU 314-2 PtP作业同步处理需要注意什么? 在用户程序中,不可以同时编程SEND作业和FETCH作业。
即: 只要SEND作业(SFB 63)没有完全终止(DONE或ERROR),就不能调用FETCH作业(SFB 64)(甚至在REQ=0的时候)。只要FETCH作业(SFB 64)没有完全终止(DONE或ERROR),就不能调用SEND作业(SFB 63)(甚至在REQ=0的时候)。在处理一个主动作业(SEND作业、SFB 63或FETCH作业、SFB 64)时,同时可以处理一个被动作业(SERVE作业、SFB 65)。
14:可以将MICR.master420到440作为组态轴(位置外部检测)和CPU 317T一起运行吗?
可以,但在动力和精度方面,对组态轴的要求差别非常大。在高要求情况下,伺服驱动SIMODRIVE 611U、MASTERDRIVES MC或SINAMICS S必须和CPU 317T一起运行。在低要求情况下,MICROMASTER系列也能满足动力和精度要求。
15:如何在已配置为DP从站的两个CPU模块间组态直接数据交换(节点间通信)?
两个CPU站配置为DP从站,而且由同一个DP主站操作,它们之间的通信通过配置交换模式为DX可以完成直接数据交换。
16:如何使用SFC65,SFC66,SFC67 和 SFC68 进行通信?
对于单向基本通信,使用系统功能 SFC67(X_GET)从一个被动站读取数据,使用系统功能SFC68(X_PUT)将数据写入一个被动站(服务器)。这些块只有在主动站中才调用。对于一个双向基本通信,调用站中的系统功能SFC65(X_SEND),在该站中想将数据发送到另一个主动站。在同样为主动的主动接收站中,数据将通过系统功能SFC66(X_RCV)记录。
两种类型的基本通信中,每次块调用可以处理最多 76 字节的用户数据。对于S7-300 CPU,数据传送的数据一致性是 8 个字节,对于S7-400 CPU则是全长。如果连接到S7-200,必须考虑到S7-200只能用作一个被动站。
17:什么是自由分配 I/O 地址?
地址的自由分配意味着您可对每种模块(SM/FM/CP)自由的分配一个地址。地址分配在 STEP 7 里进行。先定义起始地址,该模块的其它地址以它为基准。
自由分配地址的优点:因为模块之间没有地址间隙,就可以优化地使用可用地址空间。在创建标准软件时,分配地址过程中可以不考虑所涉及的 S7-300 的组态。
18:诊断缓冲器能够干什么?
更快地识别故障源,因而提高系统的可用性。评估STOP之前的最后事件,并寻找引起STOP的原因。
诊断缓冲器是一个带有单个诊断条目的循环缓冲器,这些诊断条目显示在事件发生序列中;第一个条目显示的是最近发生的事件。如果缓冲器已满,最早发生的事件就会被新的条目所覆盖。根据不同的CPU,诊断缓冲器的大小或者固定,或者可以通过HW Config中通过参数进行设置。
19:诊断缓冲器中的条目包括哪些? 1)故障事件
2)操作模式转变以及其它对用户重要的操作事件 3)用户定义的诊断事件(用SFC52 WR_USMSG)在操作模式STOP下,在诊断缓冲器中尽量少的存储事件,以便用户能够很容易在缓冲器中找到引起STOP的原因。因此,只有当事件要求用户产生一个响应(如计划系统内存复位,电池需要充电)或必须注册重要信息(如固件更新,站故障)时,才将条目存储在诊断缓冲器中。
20:如何确定MMC的大小以便完整地存储STEP 7项目?
为了给项目选择合适的MMC,需要了解整个项目的大小以及要加载块的大小。可以按照如下所述的方法来确定项目的大小:
1)首先归档STEP 7项目。然后在Windows资源浏览器中打开已归档项目,并确定其大小(选
中该项目并右击)。这会告诉您归档文件的大小。
2)将块加载入CPU。现在仍然需要选择“PLC > Module Information > Memory”。在此,在“ Load memory RAM + EPROM”中,可以看到分配的加载内存的大小。
3)必须将该值和已经确定的归档项目的大小相加。这样就可以得出在一个MMC上保存整个项目所需的总内存的大小。
21:CPU全面复位后哪些设置会保留下来?
复位CPU时,内存没有被完全删除。整个主内存被完全删除了,但加载内存中数据,以及保存在Flash-EPROM存储卡(MC)或微存储卡(MMC)上的数据,则会全部保留下来。除了加载内存以外,计时器(CPU 312 IFM除外)和诊断缓冲也被保留。具有MPI接口或一个组合MPI/DP接口的CPU只在全部复位之前保留接口所采用的当前地址和波特率。另一方面,另一个PROFIBUS地址也被完全删除,不能再访问。
重要事项:重新设置PG/PC之后,与CPU之间的通讯只能通过MPI或MPI/DP接口来建立。
22:为什么不能通过MPI在线访问CPU?
如果在CPU上已经更改了MPI参数,请检查硬件配置。可以将这些值与在“Set PG/PC interface”下的参数进行比较,看是否有不一致。
或者可以这样做:打开一个新的项目,创建一个新的硬件组态。在CPU的MPI接口的属性中为地址和传送速度设置各自的值。将“空”项目写入存储卡中。把该存储卡插入到CPU 然后重新打开CPU的电压,将位于存储卡上的设置传送到CPU。现在已经传送了MPI接口的当前设置,并且像这样的话,只要接口没有故障就可以建立连接。这个方法适用于所有具有存储卡接口的S7-CPU。
23:错误OB的用途是什么?
如果发生一个所描述的错误(见文件1),则将调用并处理相应OB。如果没有加载该OB,则CPU进入STOP(例外:OB70、72、7 3和81)S7-CPU可以识别两类错误:
1)同步错误: 这些错误在处理特定操作的过程中被触发,并且可以归因于用户程序的特定部分。
2)异步错误: 这些错误不能直接归因于运行中的程序。这些错误包括优先级类的错误,自动化系统中的错误(故障模块)或者冗余的错误。
24:在DP从站或CPU315-2DP型主站里应该编程哪些“故障 OBs”?
在组态一个作为从站的CPU315-2DP站时,必须在STEP7程序中编程下列OB以便评估分布式I/O类型的错误信息:
OB 82 诊断中断 OB、OB 86 子机架故障 OB、OB 122 I/O 访问出错
1)诊断OB82:如果一个支持诊断,并且已经对其释放了诊断中断的模块识别出一个错误,它既对进入事件也对外出的事件向 CPU 发出一个诊断中断的请求。操作系统然后调用
OB82。在 OB82 自己的局部变量里包含有有缺陷模块的逻辑基地址和 4 个字节的诊断数据。如果你还没有编程 OB82, 则 CPU 进入“停止”模式。你可以阻断或延迟诊断中断 OB,并通过 SFC 3942 重新释放它。
3)I/O 访问出错OB122:当访问一个模块的数据时出错,该CPU的操作系统就调用OB 122。比方说,CPU在存取一个单个模块的数据时识别出一个读错误,那么操作系统就调用OB 122。该OB 122以与中断块有相同的优先级类别运行。如果没有编程OB 122,那么CPU由“运行”模式改为“停止”模式。
25:为什么在某些情况下,保留区会被重写? 在STEP 7的硬件组态中,可以把几个操作数区定义为“保留区”。这样可以在掉电以后,即使没有备份电池的话,仍能保持这些区域中的内容。如果定义一个块为 “保留块”,而它在 CPU 中不存在或只是临时安装过,那么这些区域的部分内容会被重写。在电源接通/断开之后,其他内容会在相关区里找到。
26:为何不能把闪存卡的内容加载入S7 300 CPU?
你的项目在闪存卡上。现在要用它加载 S7 300。但加载结束后发现 CPU 的 RAM 中仍是空的。出现此问题的原因是你的程序里有无法处理的,“错误的”组织块(比如说,OB86 没有 DP 接口)。在重新设置和重新启动 CPU 后, RAM 仍是空的。诊断缓冲区对这个“无法加载”的块会提示一些信息。
27:当把 CPU315-2DP 作为从站,把 CPU315-2DP 作为主站时的诊断地址
在组态一个 CPU315-2DP 站时,你使用 S7 工具 “H/W CONFIG” 来分配诊断地址。如果发生一个故障,这些诊断地址被加入诊断 OB 的变量 “OB82_MDL_ADDR” 里。你可在 OB82 里分析此变量,确定有故障的站并作出相应的反应。下面是如何分配诊断地址的例子:
第 1 步: 通过 CPU315-2DP 组态从站并赋予一个诊断地址,比如 422。第 2 步: 通过 CPU315-2DP 组态主站
第 3 步: 把组态好的从站链接到主站并赋予一个诊断地址,比如 1022。
28:需要为S7-300 CPU的DP从站接口作何种设置,才可以使用它来进行路由选择? 如果使用CPU作为I-Slave,并且该CPU也起S7 路由器的作用,那么请注意如下事项: 用于路由选择的从站的DP接口必须设置为活动状态。这可以在HW Config中完成:在DP接口的属性对话框中,选项“ Commissioning/Test operation”或“Programming, status/modify...”必须激活。关于这些设置的注意事项可以在下表中获得。
对于S7 路由连接,有 4 种可用的连接资源-与其它任何连接资源无关。没有使用PG/OP的连接资源或S7基本通信。
如果必须通过DP接口来建立一个与位于其机架上的通信伙伴连接时(如在 CP 343-1 中),也要使用一个路由连接。而对于通过MPI接口与一个位于其机架上的通信伙伴的连接,则不使用路由连接资源,因为在这种情况下,能够直接到达伙伴。注意事项:这不适用于CPU 318。
29:为什么当使用S7-300 CPU的内部运行时间表时,没有任何返回值?
当对CPU 312IFM到316-2DP参数化系统功能块 SFC2, SFC3 和 SFC4 时,为一个运行时间表规定了一个大于 “B#16#0”的标识符,那么将出错并且所需的功能也无法用。此种情况下,将在块的“ RETVAL”输出处输出标识符 “8080h”。
说明:对于这些 CPU,只有一个计时器可用。因此你应该只用标识符 “B#16#0”。在一个周期块(OB1, OB35)里一定不能调用系统功能 SFC2 “SET_RTM”,而是应该在重启动OB(OB100)调用它。你也可以通过外部触发器来启动该块。不然的话,该块将老是复位运行计时表,永远完成不了计数。
30:变量是如何储存在临时局部数据中的?
L 堆栈永远以地址“0”开始。在 L 堆栈中,会为每个数据块保留相同个数的字节,作为存放每个块所拥有的静态或局部数据。
当某个块终止时,那么它的空间随之也被重新释放出来。指针总是指向当前打开块的第一个字节。
31:在CPU经过完全复位后是否运行时间计数器也被复位?
使用S7-300时,带硬件时钟(内置的 “实时时钟”)和带软件时钟的 CPU 之间有区别。对于那些无后备电池的软件时钟的 CPU,运行时间计数器在 CPU 被完全复位后其最后值被删除。而对于那些有后备电池的硬件时钟的 CPU,运行时间计数器的最后值在 CPU 被完全复位后被保留下来。同样,CPU 318 和所有的 S7-400 CPU 的运行时间计数器在 CPU 被完全复位后其最后值被保留。
32:如何把不在同一个项目里的一个S7 CPU组态为我的S7 DP主站模块的DP从站? 缺省情况下, 在STEP 7里只可以把一个S7 CPU组态为从站,如果说该站是在同一个项目中的话。该站然后在“PROFIBUS-DP > 已经组态的站”下的硬件目录里作为“CPU 31x-2 DP”出现。用这种途径,可以设置起 DP 主站与 DP 从站间的链接。
还存在一个选项,可把一个与主站不在同一个项目里的S7 CPU组态为从站。进行如下: 按常规组态DP从站。
从网上下载要用作从站的S7-300 CPU的GSD文件。该文件位于客户支持网址的“PROFIBUS GSD 文件 / SIMATIC”下。
打开SIMATIC Manager 和硬件配置。
打开“选项;安装新的 GSD...”,把刚下载的 GSD 文件插入硬件目录。(注意:此过程中在 HW Config 中无须打开任何窗口)通过“选项;更新目录”来更新硬件目录。< 现在可以组态你的 DP 主站。将可以在 “PROFIBUS-DP > 更多现场设备 > SPS” 下发现作为从站的该 S7-300 CPU。
注意:如果是手动来结合该 DP 从站, 要确保总线参数,该 DP 从站的 PROFIBUS 地址 和它的 I/O 组态在两个项目里必须相同。
33:无备用电池情况下断电的影响与完全复位一样吗?
不一样。在CPU被完全复位的情况下,其硬件配置信息被删除(MPI地址除外),程序被删除,剩磁存储器也被清零。
在无备用电池和存储卡的情况下关电,硬件配置信息(除了MPI地址)和程序被删除。然而,剩磁存储器不受影响。如果在此情况下重新加载程序,则其工作时采用剩磁存储器的旧值。比方说,这些值通常来自前 8 个计数器。如果不把这一点考虑在内,会导致危险的系统状态。建议:无备用电池和存储卡的情况下断电后,总是要做一下完全复位。
34:以将 2 线制传感器连接到紧凑型CPU的模拟输入端吗?
可以将 2 线制和 4 线制的传感器连接到CPU 300C的模拟输入端。使用一个 2 线制传感器时,在硬件组态中将“I = 电流”设置为测量类型,与 4 线制传感器的设置一样。
注意事项:请注意紧凑型CPU仅支持有源传感器(4 线制传感器)。如果使用无源传感器(2 制传感器),必须使用外部电源。
警告:请注意所允许的最大输入电流。2 线制传感器在出现短路时可能会超出最大允许电流。技术数据中规定的最大允许电流是50mA(破坏极限)。对于这种情况(例如,对 2 线制传感器加电流限制或与传感器串联一个PTC热敏电阻),确保提供足够保护。
35:SM322-1HH01也能在负载电压为交流 24 V的情况下工作吗? 是的,您也可以在负载电压为交流 24 V的情况下使用SM322-1HH01。
36:要确保SM322-1HF01 接通最小需要多大的负载电压和电流?
SM322-1HF01 继电器模块需要 17 V和 8 mA才能确保开闭正常。对于触点的寿命来说,这样的值比手册上提供的这个模块的值(10 V和 5 mA)更好。手册的规定值应该认为是最低要求值。
37:需要为哪些24V数字量输入模块(6ES7 321-xBxxx-...)连接电源? 24V数字量输入模块的电源插针连接(L+ / M)。
38:在 ET200M 里是否也能使用 SM321 模块(DI16 x 24V)?
模块 SM321(MLFB 6ES7 321-7BH00-0AB0)也可在 ET200M 里使用。其中 CPU 31x-2DP 作为 DP 主站或者是通讯处理器 CP CP342-5 作为 DP 主站。同样该模块可以通过 ET200M 和 S7-400 通讯处理器 CP443-5 连接到一个S7-400 CPU。
39:SM323数字卡所占用的地址是多少? SM323模块有 16 位类型(6ES7 323-1BL00-0AA0)和 8 位类型(6ES7 323-1BH00-0AA0)两种。对于 16 位类型的模块,输入和输出占用“X”和“X+1” 两个地址。如果 SM323 的基地址为 4(即 X=4; 插槽为 5),那么输入就被赋址在地址 4 和 5 下面, 输出的地址同样也被赋址在地
址 4 和 5 下面。在模块的接线视图中,输入字节“X”位于左边的顶部,输出字节“X”在右边的顶部。
对于 8 位类型的模块,输入和输出各占用一个字节,它们有相同的字节地址。若用固定的插槽赋址,SM323 被插入槽 4, 那么输入地址为I 4.0 至 I 4.7,输出地址为 Q 4.0 至 Q 4.7。
40:在不改变硬件配置的情况下,能用SM321-1CH20 代替SM321-1CH80 吗?
SM321-1CH20 和SM321-1CH80 模块的技术参数是相同的。区别仅在SM321-1CH80 可以应用于更广泛的环境条件。因此您无需更改硬件配置。
41:进行I/O的直接访问时,必须注意什么?
需要注意在一个S7-300组态中,如果进行跨越模块的I/O直接读访问(用该命令一次读取几个字节),那么就会读到不正确的值。可以通过hardware中查看具体的地址。
42:SM321模块是否需要连接到 DC 24V 上?
不需要,如果是 MLFB 为 6ES7 321-1BH02-0AA0 的 SM 321 模块,就不再需要连接 DC 24V 了。
43:在 STEP 7 硬件组态中如何规划模拟模块 SM374?在硬件目录中如何找到此模块?
模拟模块SM374可用于三种模式中:作为 16 通道数字输入模块,作为 16 通道数字输出模块,作为带 8 个输入和 8 个输出的混合数字输入/输出模块。
现在把SM374按照您需要模拟的模块来组态,就是说;
如果把 SM 374 用作为一个 16 通道输入模块,则组态一个 16 通道输入模块推荐使用: SM 322: 6ES7322-1BH01-0AA0,如果把 SM 374 用作为一个混合输入/输出模块,则组态一个混合输入/输出模块(8 个输入,8 个输出)20/ +-20mA.,短接未使用的COMP+/COMP-.IC+ / IC-可以保持悬空。
如果模块不带有 MANA : 把所有未使用的通道M-连接到使用通道的M-.等在输入端UCM > 2.5V 时,连接所有未使用的 M-到cpu的接地或系统的接地.把模块的测量模式设置为: 01)
创建具有不同数据类型的结构时,必须注意,在特定的环境下可能会自动插入填充字节。
保存ARRAY数据类型
示例:ARRAY 【1..2,1..3】 OF 整数 将生成下列域:
多维域是按照顺序保存的。在本例中整数 【1,1】后面是整数 【1,2】,整数 【1,3】后面是整数 【2,1】。
77:STEP 7 以哪种格式存储POINTER参数类型?
STEP 7以 6 个字节保存POINTER参数。显示了用于保存POINTER参数类型的内存区域以及每个字节中保存的数据。POINTER参数类型保存了下列信息: DB号(如果DB中没有保存任何数据时为0)。CPU中的内存区域(表格中列出了不同内存区域的十六进制代码)。
数据的地址(按照Byte.Bit格式)。
如果将形式参数声明为POINTER参数类型,则只需要指定内存区域和地址。STEP 7自动将输入项目的格式转换为指针格式。
78:因为总是要首次调用Alarm8P(SFB35)块,怎样避免OB 1初始化过程花费太长时间?
激活(首次调用)报警块Alarm(SFB33)、A larm_8(SFB34)和Alarm_8P(SFB35)比简单地执行作业检查需要多花费 2 到 3 倍的运行时间。当传送告警时,块的运行时间也会同样长。然而警报通常不会成群发生,当编程时,需要注意警报块的首次调用,因为此处用到的所有块需要很长的运行时间,因此被调用OB的运行时间在某些情况下将显著增加。将警报块的首次调用移动到OB 100/101/102,可以将较长的运行时间转换到启动过程。此处处理时间也会较长,但是由于与模块的参数设置同时进行,启动时间不会太长。
79:当不能卸载STEP 7时,该怎么办?
设法通过控制面板卸载STEP 7。如果安装文件已损坏,卸载程序常会出错,并伴随出错信息。另外STEP 7 CD包含文件Simatic STEP7.msi。可以通过这个文件卸载STEP 7。
80:加密的300PLC MMC处理方法?
如果您忘记了您在S7-300CPU Protection属性中所设定的密码,那么您只能够采用siemens的编程器PG(6ES7798-0BA00-0XA0)上的读卡槽或采用带USB接口的读卡器(USB
delete?S7 Memory Card?prommer 6ES7792-0AA00-0XA0),选择SIMATIC Manager界面下的菜单 File 选项删除MMC卡上原有的内容,这样MMC就可以作为一个未加密的空卡使用了,但无法对MMC卡进行jie密,读取MMC卡中的程序或数据。
81: 以314C为例计数时如何清计数器值?
有两种方法:
1:在参数设置中“Gate function”选“Cancel count”软件门为0,在为1时,值将清零,2:利用写“Job”的方式,写计数值的任务号为1。
82:CP342-5能否用于PROFIBUS FMS协议通讯?
CP342-5支持PROFIBUS DP协议,不能用于PROFIBUS FMS协议通讯,同样CP343-5只支持PROFIBUS FMS协议,不能用于PROFIBUS DP协议通讯,而CP342-5和CP343-5都支持PROFIBUS FDL的链接方式;
83:为什么CP342-5 FO无法建立通讯?如何配置?
CP342-5 FO不支持3MB,6MB的通讯速率,如果您购买的是5.1版本的CP342-5,而STEP7中没有V5.1版的CP342-5时,则可以插入一个V5.0版的CP342-5模块,功能不受影响。CP342-5在S7-300系统中的安装位置与普通的S7-300 I/O模块一样,可以插在4至11这8个槽位中的任何一个。
84:CP342-5的3中工作方式有什么区别?
No DP方式下:可以用CP342-5通讯口进行S7编程或进行PROFIBUS的FDL连接,连接人机界面;
DP Master方式下:CP342-5除了作为网络中的PROFIBUS主站之外,也可用于S7编程、FDL连接和连接人机界面。DP delay time参数一般不需设定,除非您采用FDL连接时,要与DP的I、O点刷新时间相一致,才根据PROFIBUS网络性能进行调整;
DP Slave方式下:CP342-5除了作为网络中的从站之外,如果选择了The module is an active node on the PROFIBUS subnet选择框,那么CP 342-5也可用于S7编程、FDL连接和连接人机界面,否则CP342-5只能作为从站使用;
85:CP342-5 最多能完成多少数据交换?
一套S7-300系统中最多可以同时使用4块CP342-5模块,每块CP342-5能够支持16个S7 Connection,16个S5-Compatible Connection。当CP342-5处在No DP模式下工作时,最多同时支持32个通讯链接,而处在DP Slave或DP Master模式下时,最多同时支持28个通讯链接。CP342-5 作为PROFIBUS DP主站时,最多链接 124个从站,和每个从站最多可以交换244个输入字节(Input)和244个输出字节(Output),与所有从站总共最多交换2160个输入字节和2160个输出字节。CP342-5 作为从站时,与主站最多能够交换240个输入字节和240个输出字节。CP342-5 可以最多连接16个操作面板(OP)以及最多创建16个S7 Connnection。
86:如何实现在从站断电、通讯失败或从站通讯口损坏等现象出现时,主站能够不停机?
需要在您的STEP7项目中插入相应组织块。插入这些组织块时,不需要编程内容,当从站断电、通讯失败等现象出现时,主站只报总线故障,但不停机。这样,无论从站先上电,还是主站先上电,系统都能正常运行:
在S7-300中加入OB82、OB86、OB122; 在S7-400中加入OB82~OB87、OB122;
87:CP342-5连接上位机软件或操作面板时应该选择什么工作模式?
如果您只是用CP342-5连接上位机软件或操作面板(OP),这时通讯采用的是S7协议,那么建议您选择No DP模式,并且不需要调用FC1(DP_SEND)和FC2(DP_RECV)功能块,它们只是在PROFIBUS DP通讯时才使用;
88:为什么系统上电后,即使CP342-5开关已经拨至Run,但始终处于STOP状态?
应当检查STEP7程序和组态是否正确(删除程序,只下载硬件组态)、检查CP342-5连接的24V电源线是否正常、M端是否与CPU的M端短接、通讯电缆连接是否正确(确认通讯电缆未内部短路),CP的firmware是否正确。如果您确认可以排除以上原因,那么可能您的CP342-5已经损坏,请更换;
89:如何用CP342-5组态PROFIBUS从站?
1.在STEP7中生成一个新的项目,并插入一个S7-300站。
2.在硬件组态窗口中选择一个S7300的导轨以及相应的CPU。
3.硬件组态窗口中,在路径 “SIMATIC 300 > CP 300 > PROFIBUS > CP342-5” 选中于您订货号和版本号对应的CP342-5,插入到S7300站对应的槽位中,注意如果您购买的是Version5.1,而组态中只能够找到Version5.0,您可以选用Version5.1替代Version5.0.。
4.在插入CP342-5的过程中,会弹出一个PROFIBUS属性窗口,请点击”New…”按钮,创建一个PROFIBUS网络PROFIBUS(1),并设定CP342-5作为从站的站地址为3。
5.双击CP342-5,打开CP342-5的属性窗口,在“Operating Mode” 标签页下选择“DP Slave” 选项,此时会弹出一个警示窗口,告知您如果要用CP342-5实现CPU和 PROFIBUS从站的通讯,必须调用FC1(DP_SEND)和FC2(DP_RECV)功能块,实现CPU与CP342-5之间的数据交换,而CP342-5与PROFIBUS的数据交换是自动完成的,不用编程。FC3和FC4用于诊断和通讯功能的控制,一般不用调用。
6.点击OK,存盘编译。.90:如何用CP342-5组态PROFIBUS主站?
1.在STEP7的SIMATIC Manager窗口中在插入一个S7300站;
2.重复以上组态从站步骤的2-4步,注意插入CP342-5时,不能点击”new…”按钮,而直接用鼠标选中以上创建的PROFIBUS(1)网络,点击OK;
在“Operating Mode”标签页中选择“DP Master”选项;
91:采用CP342-5的DP通讯口与采用CPU集成的DP通讯口进行通讯有什么不同,这两种通讯口功能有什么不同?
可以通过CPU集成的DP通讯口或CP443-5模板的DP通讯口,调用Load/Transfer指令
(语句表编程,如图2)、Mov指令(梯形图编程)或系统功能块SFC14/15访问从站上的I/O数据;
如果您使用342-5模块的DP通讯口进行通讯,那么您就不能使用Load/Transfer指令(语句表编程)、Mov指令(梯形图编程)直接访问PROFIBUS从站的I/O数据。采用CP342进行PROFIBUS通讯包括两个步骤:
1.CPU将数据传输到CP通讯卡的数据寄存器当中;
2.数据从CP342-5的数据寄存器当中写到PROFIBUS从站的Output数据区(反过来就是CPU读取从站Input数据的过程);CP342-5与从站的Input/Output数据区的通讯过程是自动进行的,但是您还必须自己手动的调用功能块FC1(”SEND”)和FC2(”RECV”),完成CP342-5与CPU之间的数据交换。
92:功能块DP_SEND、DP_RECV“的返回值代表什么意思,如何理解?
”DP_SEND“功能块包括有”DONE“,”ERROR“ 和 ”STATUS“三个参数,用来指示数据传输的状态和成功与否。”DP_RECV“功能块包括有”NDR“, ”ERROR“, ”STATUS“ 和 ”DPSTATUS“四个参数,用来指示数据传输的状态和成功与否。您可以定义相应的数据地址区,存放这些返回值,分析返回的值的意思,当Error=False,STATUS=0,DONE=True,NDR=True时,说明CPU与CP342-5之间的数据交换成功进行。
93: DP从站,CP模板以及CPU之间的数据通讯过程是如何进行的?
使用CP342-5模块,无论调用”DP_SEND“ 功能块还是”DP_RECV“ 功能块,您都不能直接读写某个PROFIBUS从站的I/O数据。CP342-5模块有一个内部的Input和Output存储区,用来存放所有PROFIBUS从站的的I/O数据,较新版本的CP342-5模板内部存储器的Input和Output区分别为2160个字节,Output区的数据循环写到从站的输出通道上,循环读出从站输入通道的数值存放在Input区,整个过程是CP342-5与PROFIBUS从站之间自动协调完成的,您不需编写程序。您可以在PLC的用户程序中调用”DP_SEND“和”DP_RECV“功能块,读写CP342-5这个内部的存储器。
94:通过CP342-5,如何实现对PROFIBUS网络和站点的诊断功能?
用功能块”DP_DIAG“(FC 3)可以在程序中对cp模块进行诊断和分析,可以通过job类型如DP 诊断列表,诊断单个dp状态,读取dp从站数据,读取cp或cpu的操作模式,读取从站状态等等。
95:为什么当CP342-5模块作为PROFIBUS DP主站,而ET200(如IM151-1或IM153-2)作为从站时,CP342-5上的SF等不停闪烁?
当S7-300系统中的CP342-5作为DP主站,下挂IM153-2 模块时,IM153-2只能作为DP主站,而不是S7从站运行。可以采取通过GSD文件将ET200从站组态进你的系统。随后IM153模块可作为 DP 标准从站运行。为此,您必须将GSD文件安装到硬件目录中(通过菜单序列Tools > ”Install new GSD file“)。在更新了硬件目录后您会在”PROFIBUS-DP > Additional Field Devices“.中发现DP从站。
96:在STEP7中打开一些对象时出错是什么原因?
有的时候您在打开某些项目中的对象时,STEP7会弹出报错窗口,错误信息为 ’*.dll’文件无法被装载,代码是257:5,错误信息是一个或多个对象不能被显示,出现这种错误的原因是您没有安装与要打开对象相关的软件包。
97:如果想通过上位或触摸屏对PLC中S5TIME类型的参数进行设定,有什么方法?
1、从上位机写整型数INT或实数REAL到PLC,首先该数值需包含以毫秒为单位的时间值,在写入PLC的数据存储区后,利用ITD(Integer to Double Integer)或RND(Real to Double Integer with Rounding Off)将该值转换为双整形,然后将该值写到类型为TIME的变量里,在程序中调用FC40,将TIME转换成S5TIME即可。
2、从上位机写WORD到PLC,首先该数值需包含以某时基为单位的时间值,在写入PLC的数据存储区后,用Word Logic下的WOR_W指令将该值与其时基相或,再利用MOVE指令将得到的数值写入S5TIME类型的变量中。
3、如果使用WinCC作为上位软件,或上位软件支持32位带符号浮点数,可以从上位写32位带符号浮点数到PLC中定义为TIME的变量,然后在程序中调用FC40,将TIME转换成S5TIME即可。
98:STEP 7中相关时间处理和转换的功能块有哪些?
SFC 0 ”SET_CLK“ 设置CPU时钟
SFC 1 ”READ_CLK“ 读出CPU时钟
FC 3 ”D_TOD_DT“ 从DATE_AND_TIME 中取出DATE。
FC 6 ”DT_DATE“ 从DATE_AND_TIME 中取出the day of the week,即星期几
FC 7 ”DT_DAY“ 从DATE_AND_TIME 中取出时间
FC 8 ”DT_TOD“
FC33用于S5TIME到TIME的转换
FC40用于TIME到S5TIME的转换
99:如何实现带电拔出或插入模板,即热插拔功能?
硬件要求:
使用普通的S7-300导轨和U型总线连接器是不能实现热插拔功能的,您必须购买有源总线底板,才能实现该功能。另外,您在配置时,必须使用MLFB 6ES7 153-1AA02-0XB0版本以上的接口模块,因为它支持DP协议的DPV1版本,而MLFB IM153-1AA00-0XB0模块是不支持该功能的。目前您能够购买到的IM153接口模块都支持热插拔,只有2-3年以前的IM153接口模块不支持热插拔。
软件要求:您必须在STEP7 5.1版本以上进行配置;
如果您采用S7-400 CPU或S7-400 CP作为DP主站,那么您可以直接在IM153的属性窗口的”Operating Parameters“标签页里配置热插拔功能。
1:在STEP7的硬件组态窗口的PROFIBUS DP目录中选择相应IM153模块,可以看出该模块支持“module exchange in opration”(热插拔);
2:将IM153模块拖到PROFIBUS总线上;
3:选择I/O模块,插入到ET200M站的各个槽位中;
4:双击ET200M站,打开属性窗口,选中“Replace modules during operation“(热插拔)选项;
5:属性窗口中提供了ET200M站热插拔功能所需的有源总线导轨的订货号;
6:属性窗口中提供了该型号IM153,插入的I/O模块对应使用的有源总线底板的订货号;
除了以上的硬件组态之外,还要向S7-400中下载OB82、OB83、OB84、OB85、OB86、OB87、OB121、OB122等组织块。当ET200M从站上进行模块的热插拔时,中断组织块OB83,OB85,OB122被调用。
如果您采用S7-300 CPU 或 CP 342-5作为DP主站,那么您只能够通过安装GSD文件的方式将IM153模块组态成DP从站,并双击IM153,打开它的属性窗口,进行设置。否则您在STEP7的硬件组态窗口中直接将PROFIBUS DP目录ET200M文件夹下IM153模块挂在PROFIBUS总线上。
100:我如何做到对自己的程序块进行加密保护?
您能够通过STEP7软件的KNOW_HOW_PROTECT功能实现对您程序代码的加密保护。如果您双击鼠标打开经过加密的程序块时,您只能看到该程序块的接口数据(即IN, OUT 和 IN/OUT 等类型的参数)和注释信息,而程序块中的代码及代码的注释,临时/静态变量是不能被看到的。同时您也无法对加密保护的程序块做出任何改动。如何实现程序块保护:
1. 打开程序编辑窗口LAD/FBD/STL;
2. 将要进行加密保护的程序块生成转换为源代码文件(通过选择菜单 File—;Generate source 生成);
3. 在LAD/FBD/STL 窗口中关闭您的程序块,并在SIMATIC Manager项目管理窗口的source文件夹中打开上一步所生成的source文件;
4. 在程序块的声明部分,TITLE行下面的一行中输入”KNOW_HOW_PROTECT”; 5. 存盘并编译该source文件(选择菜单FileàSave,FileàCompile); 6. 现在就完成了您程序块的加密保护;
101:我如何做到对自己的程序块进行<此处内容被屏蔽>? 取消对程序块的加密保护 1.打开程序块的Source源文件;
2.删除文件中的KNOW_HOW_PROTECT; 3.存盘并编译该source文件; 现在程序块的加密保护已经取消。
注意: 如果没有 STL source 源文件,您是无法对已经加密的程序块进行编辑的.西门子SIMATIC S7-300/400 问答集锦
----
1.怎么使用 MPI/DP-RS232
问:我要将 CPU314 与电脑连接通信应该怎么办?是否用 MPI/DP-RS232 连接器,要怎么用啊?
答:第一步,将适配器(PC Adapter)与 RS232 电缆相连。适配器的 MPI/DP 口插入 CPU的编程口,RS232 电缆与 PC 的串口连。
第二步,进入”开始“->”设置“->”控制面板“->”SET PG/PC Interface“。点选“ Access Point of the Application ” =S7ONLINE(STEP7),“ Interface Parameter Assignment”=PC Adapter(MPI)。
第三步,点“Properties”进入属性设置,MPI 设置内容:选中“PG/PC is the only master on the bus”,其余内容沿用默认值,或根据 CPU 的状态变更。
Local Connection 设置:COM Port=”硬件连接的串口“,Transmission Rate=”C" Adapter 的 拨码位置。确认后退出设置,如果上下位机参数一致的话,此时连机就会成功。
2.IW 和 PIW 有什么区别
问:STEP7 在实际应用中 IW 和 PIW 有什么区别?
答:我个人理解:对于没有相应的映像缓冲区的输入地址,一定采用 PIW 指令,而一般外 设输入地址,都是没有映像缓冲区的。对于有映像缓冲区的输入地址,一般使用 IW,表示 取映像缓冲区内数据,但也可用 PIW,表示直接取地址内的数据而非映像缓冲区的数据,相当于立即读取。对于输出亦是如此。
3.模拟信号接地问题
问:我用的 SM331 8*12bit 模块信号有时正常有时不正常,后来我把 COMP-跟信号的 M-接起来就好了,但我同时发现他们之间接电容也可以,是怎么回事??模块的 COMP-端、各信号的 M-端和模块 24 伏供电的 M 端之间电气上有什么关系??
答:对隔离输入模板,.摸板参考地 Mana 与 CPU 的电源地 M 没有电连接。因此 Mana 与
M 有电位差时,必须采用隔离输入模板。但是,如果电位差超过 Eiso,则必须建立 Mana与 M 之间的连接。对 SIEMENS 的模板,Eiso=75VDC 或 60VAC。
对非隔离输入模板,则必须建立 Mana 与 M 之间的连接。为抑止信号地 M-与 Mana 之间 的共模干扰,不同传感器的接地方式不同,限于篇幅以及图解困难,难以细说。一般原则是,建立信号地与模板的地、模板地与(CPU)系统地的连接。如果有干扰环流,则将取消模 板地与系统地的连接,让模拟地悬浮。另外,屏蔽推荐双端接地,如果有干扰环流,则
改为 单端。
4.cp342-5 的放置位置有要求吗?放在轨道的什么地方最合适
问:cp342-5 的放置位置有要求吗?放在轨道的什么地方最合适?
答:CP342-5 工作原理是,首先通过硬件配置将各 DP 子站的分布 I/O 映射到 CP342-5 的内 存,然后再通过 FC1(DP_SEND)、FC2(DP_RECV)实现 CPU 与 CP342-5 的数据交换。数据 传递的过程如下:
FC1
CPU 内存————->CP342-5 ——————->DP 子站的输出
FC2
CPU 内存<————-CP342-5 <——————-DP 子站的输入
程序中我们控制的只是 CPU 与 CP342-5 之间的通讯,而子站与 CP342-5 的数据交换是由
CP342-5 根据硬件配置自动完成的。
关于 cp341 与 MM440 通讯
问:我用 s7-300(cp341)与 MM440 的 com 口(29 30)通讯控制变频器2 个 PZD,4 个 PKW 具体参数设置如下:
P003=3700=51000=52011=12012=22013=4;其他参数采用工厂设置。
仿照 USS-S7 中的例程进行编程;但是只能向变频器发送 PZD 参数(控制字 1 和主设定值),但不能返回任何参数。CP341 的指示灯只显示不断发送,接受灯不亮。在数据块 dbnd(DB100)中的 DBW6(通讯状态字)的值为 0200;DBW8(通讯故障字)的值为 0080;不知是什么意思?
答:CP341(RS422/485)采用(RS485)ASCII 码协议。CP341 如果采用手册中的接线 方式(11+,4-)则 cp341 的接收发送灯同时亮,但是不能进行数据传输;如果接线为(9+,2-)则出现前述情况,即只能向变频器发送 PZD 参数(控制字 1 和主设定值),但不能返回 任何参数。如果你只接了 9、2 的话,现象则说明你的参数设置没有问题。在 4 线方式下,9、2 是发送 端。
11、4 是接受端,没有接线自然没有数据返回。
对 MM440 应该用 2 线方式,接线是
11(CP341)————-29(mm440)
4(CP341)————-30(mm440)
且 2 与 4、9 与 11 要短接,你接了吗?
此外,在 PKW 中你的任务识别标记 ID 和参数号填对了吗?
5.315-2DP 与 ET200M
问:通过 DP 相连,CPU 地址为 2,ET200M 地址为 5,硬件上地址设置正确。在项目管理器 里把软硬件组态好了以后,把 SIMATIC300 STATION 传给 PLC,显示 SF 错误,ONLINE 情况下,OB1 不运行。
如果把 HARDWARE 再传一遍,则 SF 错误无,OB1 可运行,现在再把 SIMATIC300
STATION传给 PLC,则重新有 SF 错误。我原来以后,把 SIMATIC300 STATION 传给 PLC 一次,相当于软硬件组态都传一次,请 问各位高手,这样正常吗?
答:我想楼上的各位可能没有看清楚 royal 的问题:他通过 HARDWARE 下载+OB 下载,没有问题,这样可以排除是组态和程序的问题。他只有在用 STATION 下载时才出现故障,SF 灯亮。所以原因不是很明确。我个人认为是不是 royal 并没有将 HARDWARE 进行“编译保存”,因此他的程序块内没有“SYSTEM BLOCKS”,所以才出现他所说的现象。请 royal 在试一试!
6.S7-300PID 的 FB41CONT_C 功能及参数设定
问:请教各位高手,本人现用到西门子 S7-300(CPU315)做整流系统的 PID 控制,具体 是由 AI 模块输入 4-20MA 信号(既 A 柜/B 柜饱和电抗器控制电流信号反馈和机组 A 柜/B 柜直流电流信号反馈),通过 CPU 调用 PID 功能块,实现自动闭环控制,最后由 AO 模块 输出一个 4-20MA 的信号给稳流系统(既 A 柜/B 柜电流给定反馈)。
现请教:
1、具体应调用 S7 的 PID 中的哪些功能块。我是直接在 OB1 里边调用 FB41,不 知可否。
2、PID 标准块 FB41 的输入输出参数如何整定,PV_PER、SP_INT、PV_IN 有何区别。
3、GAIN、TI、TD 如何整定。
4、MAN_ON、PVPER_ON 怎么用,是直接在 FB41 的输入端写吗?
答:原理上,PID 的调节节奏应该与其采样周期一致,这是数学模型应与物理过程一致的要 求。这也就是 FB41 要在 OB35 中周期调用且 OB35 的周期要与 FB41 采样周期一致的原因。
当然,在 OB1 或其他 FC、FB 中调用 FB41 也是可以的,此时最好将 OB1 参数区中扫描周 期作为 FB41 的采样周期。
本人在管道恒流恒压的 PID 过程控制中,也曾在 FC 中无条件连续调用 FB41,PID 效果也 还令人满意。我个人认为,精度要求不高的应用中,简单调用也是可以的。
FB41 参数的设置很灵活,可根据自己的习惯或应用的方便选择。下面是一种方式。
MAN_ON :激活 PID 手动调节给定值 MAN 的使能位,可用 PID 手自动转换位来触发。PVPER_ON :是 PID 输入输出参数“PERIPHERAL 化”的使能位,即将参数看成 0~27648 之间的整数。换个说法,就是 PID 的反馈值直接取自相应 AIW 通道,而 PID 输出则直接给 出到 AQW 通道。参数整定由 FB41 完成。可用调节装置的启动标志来触发本位。
MAN :PID 手动调节给定值,当“MAN_ON=1”时有效。
CYCLE :采样周期。根据物理量变化快慢定,一般要求与 FB41 执行的周期一致。
SP_INT:PID 的设定值。注意设定值与反馈值的单位一致。为了避免错误,建议将 SP_INT
转换为-100.0~100.0%之间无量纲的百分数,输入到 FB41 时,注意只取百分号之前的数即可。
PV_PER:PID 过程的反馈值,直接取自反馈量的 AIW 通道的 A/D 码。仅在“PVPER_ON=1”时有效。GAIN:比例系数。TI:积分时间。TD:微分时间。
LMN_PER:PID 的调节输出,直接对应调节输出 AQW 通道。
设置了上述参数,基本的 PID 调节就可以实现了。根据需要再完善其他参数的设置,比如 死区的设定等。
利用 STEP7 中的 PID 赋值工具可形象快捷地完成参数设置,结果直接存入相应背景数据块,FB41 调用时无须再赋值。
7.除 300 中的密码
问:我在使用 CPU313C-2PTP 时,往 PLC 里下了一个程序,开始还好使,可下载了几次之后,竟然要求密码!本人申明,程序没加密,而且本人还不知如何加密!请问大虾,如何清空PLC 的程序而不需要密码?
答:你需要对 MMC 卡进行格式化操作。格式化过程如下:
1.将开关置为“MRES ”位置,并保持,直至 LED 停止闪亮(即直至大约 9 秒钟后永亮 着)。
2.在随后的 3 秒内,释放开关,并再次切换为“MRES ”位置。STOP LED 现在闪亮,指示正在进行格式化。
一定要使用规定的操作顺序。否则,MMC 就不能进行格式化,而是返回存储器复位状态。我建议你在 http://www.xiexiebang.com/download/manual/as.asp 上下载 S7-300C 的所有资料仔 细读一读 才进行以 上操作,在《 S7-300 可编程控制器 CPU 312C 至314C-2DP/PtP CPU 技术参数》一书上有此操作的详细说明,并有注意事项!请注意。
8.00 的 L 指令
问:L 指令装一个立即数(常数)到 ACCU1L 1
如何表达我这个装入的数是 Byte? Word? DWord? S7300 还未入门,请高手指教!
答:在装入的时候,如果被装入的数太短,达不到 4BYTE(大多情况这样),则在装入的 时候,会自动填 0而在取出的时候,如果目标是 4BYTE,则全盘复制,如果短了,就只复制需要的长度,另外的就被抛弃了,其实被抛弃的部分一般是 0 的,编程时候需要知道的。比如 L L#16#01020304,这是一个 32 位的 DWORD然后 T MW0,长出的部分被丢掉,最终 MW0 的内容为 16#0304 除非有意这样做,否则做之前是要保证数据没有溢出的。否则计算就乱套了。反过来,L 16#FFFE(INT-2)T MD0则 MD0 的值为 L#16#0000FFFE(DINT 65534)数据虽然没有溢出,但数据格式不能继承了。这种时候,分别需要 DTI 和 ITD 命令进行转换。
至于 200 里面的 MOVB,MOVW,MOVD 等的命令,我想,在 300 里面它是自动的,根据目 标数的尺寸,自动实现不同的 MOVE 功能,与 200 对应。
9.SB 接口和 S7-200 及 S7-300 连接的体会
我最近换了一个新笔记本,没有串口,最后发现它不能和 S7-200 及 S7-300 连接,急得我只冒汗(差一点儿吐血了),不过最终都搞好了,现把我的体会说一下,以供大家参考。
S7-200 连接过程:
1:安装 200 软件,连接,不行。
2:在本网站上下载延时补丁程序,安装后连接,不行。
3http://www.xiexiebang.comfort版本显示中文时会在字符的位置出现内容空白的方框。如果出现这种情况,可以按如下方法解决。
通过更新LOGO!Soft Comfort的运行环境——JRE(Java Runtime Environment),可以做到在软件内部支持中文功能块名、注释,以及中文项目文件名。
12:LOGO!的时钟如何设置?
有操作面板的LOGO!可以通过面板设置实时时钟。无面板的只有通过编程软件和电缆与LOGO!模块通讯,使用软件的菜单命令设置。
在LOGO!Soft Comfort软件菜单Tools > Transfer > Set Clock...命令设置实时时钟。
LOGO!的时钟数据下电后是靠超级电容保持的,即在LOGO!上电24小时后,下电后时钟数据可以保持80小时。
13:LOGO!扩展模块上的LED灯亮红灯是什么故障?
扩展模块上的LED灯为红色,说明与其左侧的模块通讯不正常。
如果是在产品经过运输后出现这个问题,很可能是剧烈震动造成接触松动。只需按顺序拆装一遍就可以解决。装配时要注意把灰色的模块连接滑块移动到位。
检查扩展模块的供电。
扩展模块必须在LOGO!本体上电之前、或者同时上电。
14:LOGO上有电池吗?程序能存住吗?
LOGO!没有电池卡来延长数据的保持时间。在LOGO!上编程,或者使用LOGO!Soft Comfort(轻松编程软件)下载程序到LOGO!中,永远不会丢失。内含程序的存储卡,其内容永远不会丢失。内含程序,并且设置了“程序保护”功能的存储卡,当卡插在LOGO!上的时候,LOGO!可以正常运行;当卡从LOGO!上移走,LOGO!中就没有程序,不能正常运行。
15:logo上有保持寄存器吗?
在LOGO!上编程,或者使用LOGO!Soft Comfort(轻松编程软件)编程下载程序到LOGO!中,其特殊功能块的开关状态和计数器值可以设定为具有保持功能,即在掉电后当前的数据可以保持,并在电源恢复后从断点处继续运行。
为了实现此功能,必须在相关的特殊功能块中设置为保存(Retentive)。如RS触发器,则在LOGO!停止运行或下电后,它的状态会一直保存,再次运行或上电时其输出状态会与停止或断电前的状态相同。
16:LOGO!存储卡是干什么的?
普通存储功能:内部存有LOGO!程序的存储卡插到LOGO!上,上电后程序被复制到LOGO!内部;存储卡拔走后,程序依旧保存在LOGO!内
程序保护功能:将程序复制到存储卡中后,在LOGO!菜单中设置存储卡的“拷贝保护”功能为“Yes”,则只有在存储卡插在LOGO!上时,LOGO!才能执行程序;存储卡拔走后,程序消失,存储卡的“拷贝保护”功能与LOGO!程序的密码保护功能配合,可以做到完全的知识产权保护。
17:LOGO!也能设定密码吗?
1)直接在LOGO!上操作,进入Password功能项进行设置。
2)用LOGO!Soft-Comfort软件编程时,进入命令菜单File(文件)> Properties(属性)> Password(密码)设置密码,然后将程序通过LOGO!编程电缆下载到LOGO!中,密码也一并下载到LOGO!中了。
这两种方法设置的密码功能效果一样。
18:LOGO!能实现长达好几天的定时吗?
可以用周定时器,周定时器用来实现最大循环周期为一周的定时任务,也可以用来实现按天循环的定时任务。
只有具内部实时时钟的LOGO!模块(型号后面带有C的模块)支持这个特殊功能块。每个周定时器实际上是由三个独立的星期-日定时器复合而成。每个星期-日定时器可以设
置一个“开/关”时间段,独立对一星期内的某天(可以分别设定)起作用。因此一周内的每天可以设置三个开/关时间段,或者说,每一时刻的输出状态可以受到最多三个时间段设定条件的约束。
19:LOGO!有启动脉冲位吗?
M8在用户程序启动的第一个循环周期会被置位为“1”;在完成第一个循环周期后,会自动复位为“0”。
因此M8可作为用户程序的启动标志。
M8在所有其余的循环周期内可用作中间点,其用法和其它的标志位用法相同。
20:LOGO!有联网通讯能力吗? LOGO!可以连接到两种通讯网络: 1)EIB(Instabus EIB):
LOGO!附加CM EIB/KNX模块可以连接到EIB网络上。EIB是欧洲安装标准,一种多用于建筑设施的通讯
2)AS-Interface:
LOGO!附加CM AS-I模块可以连接到AS-Interface网络上,只能作为AS-Interface从站。每个LOGO!可以在网络上有4输入/4输出(共8个)开关量点。常见的主站如S7-200系列中的CP243-2模块,S7-300中的CP343-2模块等
西门子PLC停机软件原因综述
----
使cpu进入stop的情况很多,比如地址调用错误,没有下载需要DB块,编程错误等等,如果你想避免错误时不使CPU进入停止状态,你可以在程序中加入特殊的OB块,则出现相应问题,调用相应的OB块,虽然里面没程序,PLC将对错误错误不作任何处理,继续运行。否则PLC将进入停机状态可,比如:
OB73通讯冗余出错OB当容错S7连接中发生首次冗余丢失时,H CPU的操作系统将调用OB73(只有在S7通讯中才会有容错S7连接。更多信息,请参见“S7-400 H可编程控制器,容错系统。”)。如果其它容错S7连接发生了冗余丢失,则不会再有OB73启动。直到为具有容错功能的所有S7连接恢复冗余后,才会出现另一个OB73启动。如果发生了启动事件且OB73没有编程,CPU不会转为STOP模式。
OB80时间出错组织块无论何时执行OB时出错,S7-300 CPU的操作系统将调用OB80。此类错误包括:超出周期时间、执行OB时出现确认错误、提前了时间而使OB的启动时间被跳过、在CiR后恢复RUN模式。例如,如果在上一次调用之后发生了某一周期性中断OB的启动事件,而同一OB此时仍在执行中,则操作系统将调用OB80。如果OB80尚未编程,则CPU将转为STOP模式。可以使用SFC 39至42禁用或延迟和重新启用时间出错OB。OB81电源出错组织块
只要发生由错误或故障所触发的事件,而此错误或故障又与电源(仅在S7-400上)或备用电池(当事件进入和离开时)有关,则S7-300 CPU的操作系统调用OB81。在S7-400中,如果已使用BATT.INDIC开关激活了电池测试功能,则只有在出现电池故障时才会调用OB81。如果OB81没有编程,则CPU不会转为STOP模式。可以使用SFC 39至42禁用或延迟,并重新启用电源出错OB。OB82诊断中断组织块
如果具有诊断功能的模块(已为其启用了诊断中断)检测到错误,则它会输出一个诊断中断的请求给CPU(当事件进入和离开时)。则操作系统调用OB82。OB82的局部变量包含逻辑基址和四字节的故障模块的诊断数据(请参见下表)。如果OB82尚未编程,则CPU转为STOP模式。可以使用SFC 39至42禁用或延迟,并重新启用诊断中断OB。OB83插入/删除模块中断组织块
在下列情况下,CPU操作系统会调用OB 83: ? 插入/删除已组态模块后
? 在STEP 7下修改模块参数以及在运行期间将更改下载至CPU后 可借助SFC 39至42禁用/延迟/启用插入/删除中断OB。OB84CPU硬件故障组织块
在下列情况下,CPU中的OS将调用OB84: ? 已检测到并更正了内存出错之后
? 对于S7-400H:如果两个CPU之间的冗余链接的性能下降
可以使用SFC 39至42禁用或延迟CPU硬件出错OB,然后再次启用它。OB85优先级出错组织块
只要发生下列事件之一,CPU的操作系统即调用OB85: ? 尚未装载的OB(OB81除外)的启动事件。? 操作系统访问模块时出错。
? 在系统更新过程映像期间出现I/O访问错误(如果由于组态原因,未禁止OB85的调用)。OB86机架故障组织块
只要在分布式I/O(PROFIBUS DP或PROFInet IO)中检测到中央扩展机架(不带S7-300)、DP主站系统或站故障(进入事件与离开事件时),CPU的操作系统调用OB86。如果OB86尚未编程,当检测到此种类型的出错时,CPU将转为STOP模式。可使用SFC 39至42禁用或延迟,并重新启用OB86。OB87通讯出错组织块
只要发生由通讯出错导致的事件,CPU的操作系统就会调用OB87。
如果OB87尚未编程,CPU不会转为STOP模式。可以使用SFC 39至42禁用或延迟,并重新启用通讯出错OB。OB 88处理中断OB 程序块执行被中止后,CPU操作系统将调用OB 88。导致此中断的原因可能是: ? 同步出错的嵌套深度过大 ? 块调用(U堆栈)的嵌套深度过大 ? 分配本地数据时出错
如果未对OB 88编程且程序块执行被中止,则CPU进入STOP模式
(事件ID W#16#4570)。如果在优先级28下中止了程序块执行,则CPU进入STOP模式。可借助于SFC 39至42禁用、延迟和启用处理中断OB。OB121编程出错组织块
只要发生同程序处理相关的错误所导致的事件,CPU的操作系统即调用OB121。例如,如果用户程序调用了尚未装载到CPU中的块,将会调用OB121。OB122I/O访问出错组织块
只要在访问模块上的数据时出错,CPU的操作系统即调用OB122。例如,如果在访问I/O模块上的数据时,CPU检测到读取错误,操作系统将调用OB122.
第二篇:学习PLC编程的入门建议
学习PLC编程的入门建议
1、编程需要坚强的毅力和足够的耐心
人各有所长。有些人把编程看作一项冗长而枯燥的工作;有些人把编程看作一项趣味的智力游戏。如果你是前者,强烈建议你远离这份工作。毕竟编程工作是对人的毅力和耐心的挑战。我所在实验室中,很多学生看到我编程序就会惊讶于我面对这一堆堆符号所表现出的专注。其实,这是兴趣使然。兴趣使我具备了足够的毅力和耐心。经过无数次失败后,当看到一个个符号按我的思路整齐的排列,PLC按我的要求有条不紊的运行时,兴趣得到了极大的满足,如同打通了一个游戏的关口。所以,我告诉这些学生:你们看到的是一堆枯燥怪异的符号,我看到的却是一群热情奔放的舞者,而我则是她们的导演。
2、编程需要敢于实践的信心
我曾经教过一个学生学AutoCAD,我对她的唯一要求就是实践。我告诉她:你随便怎么操作,大不了一张图重画;最坏的结果是系统崩溃,没关系,系统重做,再来;只要电脑没被砸了,怎么都行。两年后,我再看到她做的CAD图纸,也自叹不如。
同样道理,只有不断地在PLC上运行这些指令,观察运行的结果,才能弄清PLC指令的作用。很多初学者对PLC一脸的迷茫,往往是出于一种畏惧,担心损坏设备。而这些畏惧是没有任何道理的。仔细的阅读手册是非常重要的,但是仅靠读书是成不了一个工程师的。更何况手册上的内容并非面面俱到。我在接触到那些不熟悉的指令时,喜欢单独编一个小程序,让PLC运行。然后逐个修改条件,观察运行的结果(MicroWin为用户提供了非常好的监控手段),反过来再重新理解手册的描述,这样就可以非常直观的理解这些指令的作用和使用方法。不必担心自己写的程序会有什么问题,会影响PLC的正常工作。程序有没有问题,只有让PLC运行了才能发现。而发现问题并解决问题就是对自己能力的提高。撇开硬件操作不谈,单就软件来说,我还真没有遇到过由于软件问题而损坏PLC的事。在这里不必担心继电器电路接错线可能造成的后果。所以,大胆的实践是PLC编程的必由之路。
当然,大胆实践并不是野蛮操作,而是必须遵循必要的规范。还有一个要注意的,在程序未经可靠性证实之前,千万不要挂接负载,以免造成不必要的损失。数字量的输出有LED显示;而模拟量处理可以采用一些硬件或软件模拟手段来解决。
3、编程需要有缜密的逻辑思维
编程本身就是一种逻辑思维过程。在高级语言中,使用最多的是ifthenelse、select这些条件判别语句,这就是逻辑中的因果关系。PLC程序就是由这些因果关系组成的:判别条件是否成立,进而决定执行相应的指令。最初的PLC是用来替代继电器逻辑电路的,所以继承了继电器电路以触点作为触发条件的描述方式。在PLC中,以虚拟触点代替了继电器的金属触点,而继电器电路所表达的逻辑关系还是被完整的保留下来。即使引入了继电器电路难以胜任的数值处理过程,PLC从根本上还是在执行一个个因果关系。所以,理顺对象的各个事件之间的逻辑关系,是编程之前必须精心做好的准备工作。我在接到一项任务后,第一件事就是整理出一份逻辑关系图,与用户反复商讨,取得用户的认可,然后才真正进入程序的编写过程。
4、不可或缺的相关知识
PLC的程序是直接作用于对象的具体工艺过程,那么对对象具体工艺过程的理解是非常重要的的。我在与用户的交流过程中,会用我所掌握的UnitOperation的知识分析用户的工艺过程,协助用户整理过程控制中的各个逻辑关系,甚至包括各种仪表、硬件的配置。这得益于我原本所学的专业。当然,不能要求所有搞PLC程序的工程师都有我这样的经历。但是有两门知识却是不可或缺的:一是过程仪表的硬件知识,包括传感器、变送器(二次仪表)和PLC本身,这是构建控制系统的基础;二是过程控制理论,包括各种控制模型的原理和应用,其中最重要的是二位调节和PID调节模型。PID调节是目前用得最广泛的过程控
制手段,且变化多端。学习PID最好的方法就是读书。几乎所有讲解过程控制的书籍都有关于PID的内容,多读基本相关的书籍对理解PID是很有益处的。我发现不少网友在进入PLC领域时,缺乏这些相关知识。这并不可怕;可怕的是当事者不能静下心来弥补知识的缺陷。我们不要怪罪学校没有教授这些内容,而是要注重自己如何去学习这些知识。工作中遇到的许多问题是学校里没讲过的,这不能成为我们拒绝工作的理由,而应该以积极的态度去应对这些问题。我的体会是,为了解决工作中的问题而学习的知识,比课堂上学的东西更容易记住。
5、养成良好的编程习惯
每个人编程都会有不同的习惯和特点,不能强求一致。但是一些好的习惯还是应该为大多数人所遵循。一是理顺逻辑关系、时序关系,编制程序框图;二是合理分配主程序、子程序和中断程序;三是合理分配寄存器,编制寄存器符号表。
PLC编程更接近于单片机,或者说PLC就是模块化的单片机。因此PLC的很多操作都是直接针对寄存器的,如果在程序中出现不合理的寄存器地址重叠,一定会出现不可预想的后果。编制寄存器符号表不仅可以避免上述问题(MicroWin会有问题提示),而且可以使程序具备更好的可读性。这和VB中定义变量有异曲同工之处。
VB编程中关注的是事件,不强调主程序和子程序的观念,因为VB主程序的工作是由PC的操作系统完成的。PLC则不然。PLC程序是以主程序为主干的,CPU不断的循环执行主程序,只有触发条件成立时才会调用子程序或中断程序。即子程序和中断程序所执行的任务不是全时需要的。如果把这些任务都放在主程序中会无端增加主程序的工作量,降低程序的效率。这点和单片机的编程思路是一致的。子程序的使用可以使整个程序的逻辑更清晰。而且子程序可以分开编写、调试,最后“安装”到主程序上。这样你可以一个一个解决问题。
PLC编程,无论是LAD,抑或STL,都不如VB那么直观、有趣,更不如CAD那么形象。但比单片机的汇编语言的可视性强多了。对于初学者,LAD(梯形图)的编程相对直观,更容易上手。
最后,PLC提供了丰富的指令、模块,比单片机方便了很多。但是初学者编程时应尽量先使用简单的指令达到目的。尽管看上去有点土,却不失为一个入门的好途径,且对你理解那些较为复杂的指令会有帮助。具备了一定经验后,应该考虑掌握复杂指令的应用,以及程序的优化。
第三篇:powerbuilder编程简单入门(个人总结)
2011-4 by 邵家鑫 From Tsinghua 一种简单的powerbuilder10数据库编程介绍
1、需求分析与数据库建立
进行需求分析(需求分析文档),确定数据关系,建立各种数据表,建立数据库(Access),设置ODBC数据源(控制面板->管理工具->数据源ODBC->“用户DSN”菜单下点“添加”选相应的数据源驱动程序,如果用Access2003建立的,则选第三项“Driver do Microsoft Access(*.mdb),然后点击“完成”->输入数据源名,如mydata,然后点击“选择”按钮选择建好的数据库,最后点“确定”,如下图所示)
2、界面设计(功能界面、重要数据表维护界面)
界面设计主要分为几个部分
(1)按照管理系统所需的功能设计界面。
首先画出所有可能的业务流程(数据的各种可能输入、修改、删除业务,数据的输出、显示业务)
(2)按照需要维护的表设计界面(往往给最高权限管理员直接修改数据用)
3、开始程序编写
(1)新建一个workspace(new->workspace->workspace)(2)在workspace下建立一个目标
(new->Target->application),可取名frame
2011-4 by 邵家鑫 From Tsinghua(3)在目标下建一个主窗口
可取名w_main,窗体名一般以w_开头(new->PB Object->Window),将其Window Type设为“mdihelp!”
(4)为主窗口建一个主菜单
可取名m_frame,菜单名一般以m_开头(new->PB Object->Menu)(5)程序中设置ODB ODBC 点击按钮,选中“ODB ODBC”项,然后单击右边“New”按钮,弹出如下对话框,设置Profile Name和Data Source,如图所示。
(6)建立配置文件
配置文件取名“config.ini”,内容如下:
[MyDB] DBMS=ODBC AutoCommit=False DBParm=ConnectString='DSN=mydata;UID=;PWD='
(7)自动连接数据库与退出程序关闭数据库的编写
2011-4 by 邵家鑫 From Tsinghua 首先建立Global Variables如下: string gs_userid,gs_username //登录用户标识、用户姓名 string gs_root_path,gs_ini_path
//应用路径和主配置文件路径
其次申明Global External Functions如下:
FUNCTION int GetComputerNameA(ref string computername,ref long size)LIBRARY “KERNEL32.DLL” alias for “GetComputerNameA;Ansi” FUNCTION long GetCurrentDirectoryA(long nBufferLength, REF string szBuffer)LIBRARY “KERNEL32.DLL” alias for “GetCurrentDirectoryA;Ansi” FUNCTION long SetCurrentDirectoryA(string szPathName)LIBRARY “KERNEL32.DLL” alias for “SetCurrentDirectoryA;Ansi” //end prototypes 在程序的总入口(进入“”)Open事件中写入以下代码: // Profile moneyandfriends string ls_1
//设置应用根目录
gs_root_path = space(255)GetCurrentDirectoryA(255, gs_root_path)if right(gs_root_path,1)= '' then gs_root_path = left(gs_root_path,len(gs_root_path)1)if pos(ps_sql, “group by ”)> 0 then
ls_end = right(ps_sql, len(ps_sql)pos(ps_sql, “order by ”)+ 1)
ls_where = mid(ps_sql, pos(ps_sql, “where ”)+6, len(ps_sql)-len(ls_front)-len(ls_end)-6)else
ls_where = mid(ps_sql, pos(ps_sql, “where ”)+6, len(ps_sql)-len(ls_front)-6)end if
2011-4 by 邵家鑫 From Tsinghua ls_return = ls_front + “where(” + ls_where +“)and ” + ps_where + “ ” + ls_end else if pos(ps_sql, “group by ”)> 0 then
ls_front = left(ps_sql, pos(ps_sql, “group by ”)pos(ps_sql, “group by ”)+ 1)elseif pos(ps_sql, “order by ”)> 0 then
ls_front = left(ps_sql, pos(ps_sql, “order by ”)pos(ps_sql, “order by ”)+ 1)else
ls_front = ps_sql
ls_end = “" end if ls_return = ls_front + ” where “ + ps_where + ” “ + ls_end end if return ls_return(2)在窗口中声明局部变量用来记录最初的没有where语句的窗口的SQL查询语句 string is_original_sql
(3)声明局部变量ls_old_select, ls_new_select,如下使用 string ls_old_select, ls_new_select ls_old_select = dw_ttxx.GetSQLSelect()if is_original_sql = ”" then is_original_sql = ls_old_select else //避免条件被循环添加
ls_old_select = is_original_sql end if
ls_new_select = f_change_where(ls_old_select, is_conditions)dw_窗口.SetSQLSelect(ls_new_select)
第四篇:plc编程学习总结
1:PLC编程语言有5种,即顺序功能图(SFC),梯形图(STL),功能块图,指令表,和结构文本。其中顺序功能图(SFC)是最容易理解的,按照时间的先后顺序执行。然后转换成梯形图,因为梯形图是PLC普遍采用的编程语言。不过SFC转换梯形图是很简单的。
2:就好比是开关在合上时两触点接触的一瞬间继电器就有动作了,这叫上升沿。
下降沿就好比开关两触点始终保持接触时,继电器没有动作,只有开关两点断开时的瞬间继电器才动作。
第五篇:PLC编程心得
即使是同一个项目,同一个人,要他重新写一次,也会与原来的不同,我只是看别人的一种思路,是怎样把程序去组织好,如何规范合理分配好元件,我看简单也不一定好,我的编程习惯是要求流程要清晰,即使多花点步数也好。所以我现在一般都不用一个梯形图完成,而是用SFC去编排组织梯形图的执行顺序,这样就不用担心什么互锁连锁的问题,我现在在编写的程序我估计在18000步左右,若是用单一的梯形图来编,我估计对以后的维护和修改会做成很大的困难。
现在工控制软件大部份是可以破解,但如果不想别看懂的程序的话,把里面最好不放常数,全部是数据寄存器,多用一些功能指令,拿出点技术来,要把哭程序写少而精,不要多而杂。我不鼓欢太乱的程序。如果你把技巧都定上去啦,相信不是一般的高手都没办法看懂,那样别人是服了你的技术,而不是服你的乱!我一向都不怕别人看程序,我也不喜欢看别人程序,这就是这的风格!单一!宁可少而精,不可多而杂
上是高手啊,我公司有一台设备的PLC程序真的不放常数,全部是数据寄存器,下载下来的程序在另外一台PLC就不能使用!
我们公司有几台设备都是意大利进口的,都是几千万的设备,老外的程序都没见有常数,应用了好多数据块,一般的工程师都看不懂的