技术论坛

 回复:应用探讨——Step7 各种编程语言对比及使用探讨

返回主题列表
作者 主题

总坛主
西门子官方工程师西门子官方工程师

经验值:23725
发帖数:3679
精华帖:8
楼主    2011-11-01 11:28:44
主题:应用探讨——Step7 各种编程语言对比及使用探讨
大家都有这样的经历,出行会选用不同的交通方式,有时步行,骑自行车,有时乘坐公交、地铁、开车或者打车,这取决于路途的远近、路况等实际情况,当然也取决于你拥有什么样的交通工具。Step7中同样也为自动化项目程序设计提供了不同的编程语言,提供了不同的编程选择。在很多工控论坛上或者实际项目程序设计过程中,一直有工程师对究竟该选用哪种编程语言比较好,孰优孰劣或者哪种语言是今后的发展趋势的相关话题的讨论。其实,就像交通工具一样,不能说任何一种出行方式就是绝对的好或者不好,它们都有自己的特点和适用人群、适用场合。同样的编程语言也是一样的,Step7各种编程语言(LAD、FBD、STL、SCL、GRAPH、Higraphy、CFC等)有不同的应用场合、应用对象及各自鲜明的特点。
关于具体编程语言的介绍,大家可以参照下载中心的编程手册:
1、编号:1007,用于S7-300和S7-400编程的梯形图(LAD)
2、编号:4032,用于S7-300 和S7-400 的功能块图(FBD)编程
3、编号:1008,用于S7-300 和S7-400 的语句表(STL)编程

开设此话题,欢迎大家可以就以下几个点畅所欲言,发表自己的看法,共同提高。
1、阐述自己使用的某种编程语言的感受、分享经验及心得;
2、LAD、FBD、STL、SCL、GRAPH、CFC等编程语言的特点及适用场合;
3、如何选择不同的编程语言,以缩短程序开发周期,提高编程效率;
4、如何编写出可读性强的程序、以使别人更快的读懂你的程序;
5、程序加密、保护,采用某些特定的编程方式,如何让别人读不了或读不懂你的程序。

活动奖励:
此次集中交流将持续至11月20日,其中所有精华帖作者将获得加倍精华奖励积分;最终所有有效留帖的网友将获得加倍发帖积分。更多积分带给您更多奖品兑换的自由。
对于有突出发言贡献的网友,还可以在当前的可兑换奖品中免费挑选200分(含)任一款奖品。
交流结束后也将专门整理重要内容,供广大网友分享参考。
预祝大家交流愉快,收获丰富!
划痕
侠圣

经验值:4794
发帖数:2009
精华帖:22
2楼    2011-11-01 14:38:39
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
4、如何编写出可读性强的程序、以使别人更快的读懂你的程序;
5、程序加密、保护,采用某些特定的编程方式,如何让别人读不了或读不懂你的程序。


关于以上两点,我个人认为它们是对立统一、相辅相成
首先,完整的符号说明和注释是增强程序可读性的充要条件。其次,不同编程方式在一定的场合也起到了增强程序可读性的效果。比如:逻辑控制使用FBD和LAD方式能够能加程序的可读性;SCL用于实现高级算法具有高效的同时,在一定程度上复杂算法的可读性(相比STL语言);使用CFC实现控制对象的透明操作,更容易实现面向对象的程序设计,对于工程师而言可读性较高;利用Graph或SFC实现顺序控制,可读性好!


对于程序的加密和保护,是伴随程序设计的产生而产生的,这也是工程师对自己劳动成果的保护。<之前谈论过很多有关加密解密的方案,在此就不一一例举了>
我认为让别人读不了或读不懂你程序的方法如下:
1、将程序下载PLC,再上载上来(没有符号表、没有注释),即使是工程师本人这种情况下还要花相当时间来解读程序!
2、利用CFC编程,最后将CFC源程序删除(CFC编译的程序自动分配DB自动完成程序结构框架组织),就算是你亲自设计的程序,没有CFC你都看不懂,也不敢对程序做任何更改!
3、程序中加入自定义结构体变量。在程序设计完成后将自定义结构体变量名称用IN1、IN2等等来表示,即使不做任何的加密功能,解读程序也不会少花时间!
<就以上三种吧,其中第一种方案是个人认为最简单高效的解决方案>

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
No discussion, no outcome.
剑忠
奇侠

经验值:9641
发帖数:622
精华帖:57
3楼    2011-11-01 16:50:43
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
1、严格来说,SIEMENS的LAD、FBD、STL、SCL、Graph、HiGraph、CFC等这些编程工具没有优劣之分,只有适用之分。什么样的项目规模、结构、价位、应用行业,以及客户特定要求和开发工程师的使用习惯等因素,决定了使用编程工具。总之,权衡适用性和性价比才是选用编程工具的决定因素。
2、以我为例,项目一般都有很多模拟量的炉控设备,规模偏大,且用户有集中监控、报警、曲线显示、报表等要求。因此,单纯的使用LAD、FBD、STL等这些工具就不能高效优质的完成任务,需搭配SCL、CFC等这些编程工具了。但由于用户有上位的集中监控、报警、曲线显示、报表等要求,所以也不能选用性价比不高的Graph、HiGraph这些编程工具。
3、如果项目主要是电气逻辑或顺序逻辑控制,就不要选SCL、CFC,应选LAD、FBD、STL这些编程工具;但如果顺序和时序逻辑关系及其复杂,不建议选用STL。
4、当然如果设备无上位的集中监控、报警等要求,且用户愿多出钱提高档次,可选用Graph、HiGraph等这些编程工具。
以上是我对SIEMENS编程工具的选择观点,也请各位补充或斧正!

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
大学之道,在明明德,在亲民,在止于至善。
tea365
侠士

经验值:1951
发帖数:619
精华帖:4
4楼    2011-11-01 21:19:23
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
我也来说说
1、阐述自己使用的某种编程语言的感受、分享经验及心得
一开始接触PLC时,看着LAD就和电气图一样,那时的书好像也只有这这一种语言,就是有别的语言那时也只能看懂LAD。,所以到现在喜欢用这一种语言来编程。LAD和电气图一样对我而言不需要加于什么思考很容易的把电气原理图就直接在脑子中转换成了LAD输入电脑。因为一接到项目在脑子中所先生成的是电气原理图。后来PLC普及了各种语言也多了。因比较少接触大型和较为复杂的计算,所看到和使用的大多是LAD。
2、LAD、FBD、STL、SCL、GRAPH、CFC等编程语言的特点及适用场合
对我来就LAD和电气图一样对我们而言不需要加于什么思考很容易的把电气原理图就直接在脑子中转换成了LAD输入电脑,别的和看天书差不多,要花不少时间去看特别是STL、SCL。
3、如何选择不同的编程语言,以缩短程序开发周期,提高编程效率;
我想适合自己的就是最好的。GRAPH、CFC能缩短程序开发周期,提高编程效率
4、如何编写出可读性强的程序、以使别人更快的读懂你的程序
按照工艺流程编写出的程序最有可读性强,使别人更快的读懂你的思想。
能让别人在短时间内看懂你的编程思路、思想、程序用意的程序就是最好的程序
5、程序加密、保护,采用某些特定的编程方式,如何让别人读不了或读不懂你的程序。
程序加密、保护在论坛中很有争议。我明天就要去面对这一问题,明天要和一家机械厂谈一合作,厂家想买一项目的程序,不知各位有什么好的建议?
程序加密、保护是保护自己也是保护厂商。本人的做法是在保修内会PLC上运行的程序加密保护,但会另外复制一份给厂商给他参考。
如果大家的程序都不注释没有实物参照,很多程序只能看懂这个是什么指令,而看不懂程序员的用意

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
学习再学习活到老学到老 http://lytea365.blog.163.com
Zane
版主

经验值:85161
发帖数:21047
精华帖:399
5楼    2011-11-01 23:58:02
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
1.只会语句表,梯形图
2.用最简单的指令,完成最复杂的任务
3.所有的变量只能有一次写操作
4.让别人轻松读懂每一句指令,却读不懂整段程序的意思
5.同样的程序,做不同的任务

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
Zane 注册自动化系统工程师 Always save before download
jacky_andy
奇侠

经验值:6742
发帖数:2277
精华帖:19
6楼    2011-11-02 08:30:49
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
1、阐述自己使用的某种编程语言的感受、分享经验及心得;
如果项目中有比较复杂的数学运算的话,SCL的优势是显而易见的。
3、如何选择不同的编程语言,以缩短程序开发周期,提高编程效率;
顺控程序现在一直用LAD,下个项目有机会用下一Graph,感觉graph在顺控程序方面的优势应该也是比较明显的。

4、如何编写出可读性强的程序、以使别人更快的读懂你的程序;

我的习惯是
1:出现在每个变量都必须有注释,
2:工艺程序封装,
3:不同功能用FC 或者FB,在OB1中调用

5、程序加密、保护,采用某些特定的编程方式,如何让别人读不了或读不懂你的程序。
1:SCL编写,将源代码删除,这个方法挺好,
2:STL LAD编写的功能块用KNOW_HOW_PROTECT加密的话,感觉现在都形同虚设。解密软件太多了。
3:STEP 5.5好像出现了新的加密形式,没有用过。只是看过相关的帖子。
4:另外zane版主的从技术角度谈程序加密的文章大家都可以看一下,受益匪浅。

暂时就想到这么多,想好了,再补充。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
n次看你的背影
奇侠

经验值:7974
发帖数:2321
精华帖:73
9楼    2011-11-02 11:09:14
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
关于“S7-300/400 PLC中LAD、FBD、STL、SCL、GRAPH、CFC等编程语言的特点”,我个人也有些理解:
1、LAD语言的主要思想是依靠使能流的流向来进行编程;它的基本指令,采用的符号类似于电气继电器控制回路中的常开、常闭触点、和线圈来表达,而且编程顺序总是从左到右,至上而下,类似于设计好的电气控制原理图。使能流就如电气控制回路中的电流一般贯穿其中,直观、可读性较强;特别适合熟悉电气继电器控制回路的专业人员使用。调用子程序的场合也可以使用LAD。
2、FBD语言的主要思想来源于数字电路中的与、或、非、异或·····等各种门电路,它的基本指令采用逻辑门的方式来表达;而编程时,数字电路的高电平、底电平把各种逻辑门贯穿其中,直观、可读性较强;特别适合熟悉数字电路的专业人员使用。调用子程序的场合也可以使用FBD。
3、STL语言类似于汇编语言,SIEMENS的STL语言加入了较多二次开发的指令,主要是面向CPU操作的语言,比汇编语言稍高级;文本顺序编程方式;它的优点是:指令最全、代码精炼、体积较小、效率最高、功能最强大、编程灵活自由、能完成其它语言无法完成的工作、每条语句都能做独立的注释;它的缺点是:抽象、不容易理解、可读性不强;有汇编语言经验的专业人员比较喜欢使用。比较适合用STL语言来开发、和调用子程序!
4、SCL语言类似Pascal语言,结构严谨,具有C语言的思想,属于高级语言,做复杂数据计算和处理最佳;用作子程序的开发也比较适合,特别适合熟悉Pascal语言的专业人员使用,主要使用在复杂数据处理的场合,编译后生成S7程序才能使用。此语言工具需要单独安装,还需要独立的授权。
5、GRAPH语言类似图形编程,让人感觉有条理和直观,在顺序控制方面处理能力较强、特别适合实现各种顺序控制任务;此语言工具需要单独安装,还需要独立的授权。
6、CFC语言主要是用在各个功能和功能块之间用连线的方式来进行编程,连线方便,比较直观,是面向对象的语言工具!此语言工具需要单独安装,还需要独立的授权。
以上只是个人观点,仅供参考,希望能和大家进一步交流和提高!

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
n次看你的背影
奇侠

经验值:7974
发帖数:2321
精华帖:73
12楼    2011-11-02 19:11:41
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
关于:“哪种语言是今后的发展趋势?”我是这样理解的:
是的,以前在论坛上看到好几个帖子谈到各种语言的优劣和发展趋势的话题,点击率很高,参与者众多,讨论的非常热烈!我认为就SIEMENS S7-300/400 PLC而言,LAD、FBD、STL、SCL、GRAPH、CFC等编程语言,每种语言都有各自的长处和短处,我们更应该看到的是它们各自的长处,而不是短处,我们要充分利用它们各自的长处为我们使用!每种编程语言的存在,必然有它们的理由,理由如下:
一、(技术层面)起初,SIEMENS为了消除PLC单一编程语言的弱点,和减小使用者专业的局限性,SIEMENS努力开发适合相关专业人员的编程语言,能使更多的编程人员利用自己熟悉或者喜欢的语言去编程或者开发!
二、(市场层面)SIEMENS为了扩大市场、争取更多的消费者,开发了多种适合相关专业人员使用的语言,让尽量多的相关的技术人员使用SIEMENS的产品。消费者增多了,它的市场占有率也会逐步提升!也许编程语言的多样性是SIEMENS PLC市场营销的策略之一!

我以前使用过S5,当时S5编程软件运行在DOS操作系统的平台上,编程语言较少,随着各种技术的发展,S7替代了S5。我发现S7里面的编程语言增多了,原来S5的编程语言依然在S7里面保留下来。所以我认为:随着PLC技术的发展,我相信S7里面各种编程语言一个不少地依然会存在,而且我也相信还会有新的编程语言不断加入进来,将继续保持着SIEMENS PLC编程语言多样性的优势!

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
n次看你的背影
奇侠

经验值:7974
发帖数:2321
精华帖:73
17楼    2011-11-03 10:33:17
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
关于“如何选择不同的编程语言,以缩短程序开发周期,提高编程效率?”从事这个行业以来,我个人有些体会,愿与大家讨论和分享:
1、编程语言尽量选择自己熟悉的喜欢的编程语言,这样会提高编程的速度和正确率;
2、编程遇到的工艺设备中,将自己平时经常遇到的典型设备,比如:气动阀(带全开、全关限位)、皮带输送机(带拉绳开关、跑偏开关、速度检测)、开关量类型的步进电动执行器(带全开、全关限位和开扭矩、关扭矩保护)、软启动器、变频器、高压开关柜.......可以为这些典型设备的控制程序,用STL或者SCL开发功能较全的、通用的、可移植的FC或者FB,最好把与上位的接口也做在其中;自己开发这些FC、FB时需要调试好了,清楚每个形参的含义和用法,以备调用;
3、把平时自己开发的积累的FC、FB不断加到自己创建的S7库里面,这样每次编程遇到类似的工艺设备,就到自己创建的S7库里面去调用,这样就可避免重复编程,也可以提高编程的效率;增强程序的结构;
4、随着平时的积累,自己也可以总结一个自由的、可扩展的主程序架构,在每次编程时,都可以按照这样类似的架构组织主程序;然后在主程序或者子程序中可以采用自己熟悉的喜欢的语言调用自己开发的FC、FB或者系统自带的资源。

我的体会是:平时模板型程序的不断积累、良好的程序架构、混合语言的编程方式可以缩短程序开发周期,提高编程效率。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
拾起
奇侠

经验值:5257
发帖数:332
精华帖:6
22楼    2011-11-03 17:45:28
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
我就用过两种,LAD和STL,说说我的感觉。
1、大多数人还是熟悉LAD的模式,主要还是可读性与电气图很相似,刚开始接手都是这种语言,自然受欢迎程度高。LAD在顺序控制的表达和可读方面感觉不错。
2、STL在数据运算,比如指针的运用方面,类似于平均值计算等。很简洁。
3、在一次工程项目中,客户的工程师自认有些水平,因为多数我用LAD,所以他总是发表意见,说这个为什么不那样写等等。后来把我逼急了,我都用STL,于是他傻眼了。其实我的STL编程能力也不怎么样,只是我将LAD的语句转换成STL后,把一些空的,比如NOP删除后,它就回不去LAD,又不影响程序运行。
每种语言都有特殊作用,关键看使用人的编程能力和习惯。在程序加密方面,又能让人读懂程序,又要求程序的加密,其实在具体的编程技术上不太好统一,我倾向于非技术方面的。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
仰望星空,脚踏实地
剑忠
奇侠

经验值:9641
发帖数:622
精华帖:57
23楼    2011-11-04 00:01:01
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
1、STEP7各种编程工具的用途对比及使用,前面大家也谈了很多。我在3楼中也谈了一下个人使用经验,其中谈到选择原则主要是项目规模、结构、价位、应用行业,以及客户特定要求和开发工程师的使用习惯等因素,以及权衡适用性和性价比才是选用编程工具的决定因素。
2、在这几个诸多因素中,我再补充一条“匹配性”因素。匹配性就好比什么素质技能的人做什么工作;出多少钱买哪种档次的产品;什么样的消费档次就必须配备什么样软硬件服务。例如,乘坐飞机的服务就不能按乘坐汽车的服务来配备,两个互不语言相通的人就必须说通用语言或配备翻译等。
3、回到STEP7各种编程工具的匹配性使用上来说,如果项目一个几十点的单台机电设备监控,不可能选用S7-400或PCS7系统,所以就不可能选用CFC工具。但如果项目选用PCS7系统,那肯定是I/O点相当多,系统复杂地点分散,这就必需使用CFC工具,甚至还有SCL工具。同时也就不能使用S7-Graph、S7-HiGraph工具了,这就是由匹配性因素决定的。
4、在一些可多种选择编程工具的项目场合,如果客户没有特定要求,在项目结构和价位已定板后,通常就按开发工程师的使用习惯因素决定了。
5、关于使用习惯,我在做项目时喜欢将WinCC集成于STEP7中,并且如果项目AS站选用S7-400,我会毫不犹豫的想到选用CFC和SCL工具。因为这两个编程工具是做AS与OS集成的匹配搭档,特别突出在做集成报警(Integrated ALARM)方面。今年我向即将举行的2011年SIEMENS自动化专家会议投稿了两篇论文,其中一篇《SCL和CFC编程在WinCC与STEP7全集成项目架构中的开发应用》,就着重论述了SCL和CFC工具在整个项目规划、架构、编程和调试中的组合应用。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
大学之道,在明明德,在亲民,在止于至善。
n次看你的背影
奇侠

经验值:7974
发帖数:2321
精华帖:73
25楼    2011-11-04 14:12:48
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
关于“如何编写出可读性强的程序、以使别人更快的读懂你的程序?”我想说说我的做法和体会:
1、设计符号:给设备分配好I/O点的地址后,把它们的地址按照从小到大的次序写到Excel表里面,并做好与之对应的符号和中文注释;I/O地址的符号一般由设备位号和能代表该点含义的英文缩写的大写字母这两部分组成:比如有一设备上的电机位号为66666,我会定义它的备妥(ready)信号的符号为66666RDY、中控(center)信号的符号为66666CNT、运行反馈(feedback)信号的符号为66666FBK、报警(alarm)信号的符号为66666ALM、故障(fault)信号的符号为66666FLT、确认(acknowledge)信号的符号为66666ACK、全开限位(open position)信号的符号为66666OPS、全关限位(close position)信号的符号为66666CPS、驱动(drive)信号的符号为66666DRV;·······比如这台电机有2个轴承温度测点,我会定义它实际(actual)PIW输入地址的符号为T66666ACT1、T66666ACT2......I/O地址的符号和注释定义好以后导入符号表。编程时甚至可以不需要知道绝对地址只要知道位号或对象就可以直接使用符号编程。PLC其它被用到的全局变量,如:位存储器M、定时器T、计数器C、数据块DB......也要尽量做好符号和注释。有规律、有含义的变量符号命名和详细的注释,可以增强程序的可读性。同时一个好的全局符号系统可以面向对象进行编程。而且对变量的查找也非常有帮助,例如这台电机有故障发生,那么在程序编辑器鼠标右键快捷方式Go To/Go To Location输入66666FLT然后Go To,程序编辑器就能跳转到"66666FLT"程序中赋值的地方,就可以很快查明故障原因了,良好的符号系统也能快速诊断设备状态。
2、编程的语言:编程时逻辑不复杂的,尽量使用大家比较熟悉的LAD、FBD语言来实现;在主程序、子程序中调用FC、FB时,尽量用LAD、FBD语言方式,这样程序比较直观、可读性也强。
3、程序的注释:注释可以用英文也可以用中文,国内客户的程序尽量用中文做注释。编程时尽量做好语句的注释、段落的注释、块的注释;用户自己开发的FC、FB,在它的对象属性里面可以将其输入、输出形参以及其功能尽量描述的详细一点,这样其它人在看程序时也就比较容易理解。
4、主程序的架构:在较大的系统中,某些特定功能的程序可以人为地分割开来。这样也就会更加清晰易懂。贴一主程序架构规划的例子参考。
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬OB1内的用户程序╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
// ★★★PLC与PLC或者和从站设备的通信程序★★★
CALL FC 301 //接受来自PLC2的数据 shared db DB301
CALL FC 302 //发送数据到PLC2 shared db DB302
CALL FC 303 //接受来自PLC3的数据 shared db DB303
CALL FC 304 //发送数据到PLC3 shared db DB304
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬XX生产线PLC1的控制程序╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
// ★★★各工艺段的控制程序★★★
CALL FC 311 //工艺段1的控制程序 shared db DB311
CALL FC 312 //工艺段2的控制程序 shared db DB312
CALL FC 313 //工艺段3的控制程序 shared db DB313
CALL FC 314 //工艺段4的控制程序 shared db DB314
CALL FC 315 //工艺段5的控制程序 shared db DB315



//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬可放入OB3X内执行╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
// ★★★各模拟量处理程序★★★
CALL FC 361 //模拟量地址从PIW512~PIW575(每个群组32个模拟量)shared db DB361
CALL FC 362 //模拟量地址从PIW576~PIW639(每个群组32个模拟量)shared db DB362
CALL FC 363 //模拟量地址从PIW640~PIW703(每个群组32个模拟量)shared db DB363
CALL FC 364 //模拟量地址从PIW704~PIW767(每个群组32个模拟量)shared db DB364
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬可放入OB3X内执行╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
// ★★★STEP型PID控制程序★★★
CALL FC 381 //每个群组控制16个回路STEP型PID控制器 shared db DB381

// ★★★连续PID控制程序★★★
CALL FC 385 //每个群组控制16个回路连续量的PID控制器 shared db DB385

//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
// ★★★评估CPU执行PLC程序的时间以及PID程序初始化标志位复位★★★
L #OB1_PREV_CYCLE //Cycle time of previous OB1 scan (milliseconds)
T DB300.DBW 0
L #OB1_MIN_CYCLE //Minimum cycle time of OB1 (milliseconds)
T DB300.DBW 2
L #OB1_MAX_CYCLE //Maximum cycle time of OB1 (milliseconds)
T DB300.DBW 4

A M 17.0
R M 17.0 //OB1第一个循环结束复位初始化标志位,用作PID控制器初始化
BE
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
一个清晰的可扩展的程序架构,也能让人快速读懂程序!
一个较好的程序架构也有利于系统的扩展:比如生产线需要增加一工艺过程,可以拷贝一个FC315和DB315,重命名为FC316和DB316,修改一下FC316里面的相应的子程序的实参和逻辑联锁关系,这样在较短的时间之内一个工艺段程序就出来了。同种属性的、相同结构的子程序拷贝一下,然后修改一下实参和逻辑,问题会变得相对容易一些。如果这条生产线比较大,或者有几条这样的生产线,需要较多这样的PLC站,那么拷贝这样PLC站的程序,同样修改相应的实参和逻辑联锁关系,并做好与伙伴PLC和从站需要的通讯,就能将较多的PLC站集成在一起!主程序架构具有能伸能缩、可进可退、收放自如的功能和特点,也就能够满足较多行业和场合的需求了!可见,较好的思想会让我们走的更远!有些高级语言程序的架构思想确实在PLC里面也值得借鉴!比如C语言。
5、帮助文件:如果编程者细致,并希望别人能快速看懂程序(值得尊敬的编程者),也会给自己开发的FC、FB做些帮助文件,或者也可以将帮助文件加入进S7的help里面去。

个人体会、个人愚见,仅供参考!

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
angelo
侠客

经验值:988
发帖数:460
精华帖:6
29楼    2011-11-05 14:40:18
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
看了上面,受益匪浅。LAD适合逻辑,STL适合算法,SCL适合一些重复性较强的场合。越高级的语言,效率越低,选什么语言,还要相时而定

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
www123456
至圣

经验值:12603
发帖数:2379
精华帖:86
31楼    2011-11-05 22:52:12
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
quote:以下是引用jacky_andy在2011-11-05 14:46:42的发言:
Graph和Higraphy的区别是什么呢?不都是图标形式的编程吗?
西门子的SFC是Graph?

S7 Graph相当于西门子优化处理的SFC编程语言,S7-HiGraph相当于状态图,通过绘制功能图表来实现编程,内部集成封装了信号监控及触发功能,适合给机械工程师使用。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
Automann
至圣

经验值:18299
发帖数:6168
精华帖:137
33楼    2011-11-06 09:45:39
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
1.S7-HiGraph的结构
S7-HiGraph是S7-300/400的图形化编程语言,需要单独安装和单独的授权。
S7-HiGraph 程序分为3级结构,多个状态图构成图表组,多个状态和转换条件构成状态图。
编译图表组时,生成的块以FC+DB的形式出现,必须周期性地调用S7-HiGraph FC。
2.S7-HiGraph与S7-GRAPH 的比较:
S7-GRAPH用于顺序控制,单个/多个顺控器可以单独/协调工作。
S7-HiGraph在实现顺序控制的基础上,还可以实现下列功能:
1)用S7-HiGraph生成的状态图可以被封装为标准元件。
2)封装后的标准元件可以在图表组中多次重复调用,调用时可以分配不同的实参。
3)标准元件(即状态图)之间可以通过消息或全局变量协同工作。
3.消息
消息(Message)用于状态图之间的通信,有两种消息:
1)内部消息用于在一个图表组中的多个状态图之间进行通信。
2)外部消息用于不同的图表组之间或S7-HiGraph与其它STEP7程序之间的通信。消息的数据类型必须为 Bool(位)。
4.应用举例
假设某物流线有50条传送带,传送带分为4种类型。编程人员只需用S7-HiGraph设计4种状态图,来分别描述4种不同传送带的特性。在图表组编程中,分别引用若干次这4种状态图,并分配各自的参数,就组成了由50条传送带组成的物流线的控制程序。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
追求完美
Automann
至圣

经验值:18299
发帖数:6168
精华帖:137
34楼    2011-11-06 11:55:20
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
几种编程语言的特点
语句表可供习惯于用汇编语言编程的用户使用,可以实现某些不能用梯形图或功能块图表示的功能,例如间接寻址和编写循环程序。语句表在运行时间和要求的存储空间方面最优。语句表的输入方便快捷,还可以在每条指令的后面加上注释,便于复杂程序的阅读和理解。在设计通信、数学运算等高级应用程序时建议使用语句表。
梯形图与继电器电路图的表达方式极为相似,适合于熟悉继电器电路的用户使用。语句表程序较难阅读,其中的逻辑关系很难一眼看出,在设计和阅读有复杂的触点电路的程序时最好使用梯形图。
功能块图适合于熟悉数字电路的用户使用,欧洲人比较喜欢使用功能块图,国内很少有人使用功能块图。
S7-SCL编程语言适合于熟悉高级编程语言(例如Pascal或C语言)的用户使用。
S7-Graph、HiGraph和CFC可供有技术背景,但是没有PLC编程经验的用户使用。S7-Graph对顺序控制过程的编程非常方便,HiGraph的特点见楼上的帖子,CFC适合于连续过程控制的编程。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
追求完美
々稻草人々
侠客

经验值:858
发帖数:143
精华帖:9
35楼    2011-11-07 09:29:09
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
1.梯形图(LAD)
梯形图(LAD)的英文全称是Ladder Logic 。
梯形图编程语言的特点是:与电气操作原理图相对应,具有直观性和对应性;与原有继电器
控制相一致,电气设计人员易于掌握。这就是大家喜欢它的原因。
梯形图编程语言的优点:易于调试,程序易读性强,程序易于移植,易于分析逻辑关系
梯形图编程语言的缺点:不适合人工编写复杂控制任务及大型程序
2.功能块图(FBD)
功能块图(FBD)的英文全称是Function Block Diagram 。
功能块图编程语言的特点是:其编程类似于电子电路逻辑图,非常直观,易于调试。对于熟悉电子电路的朋友一定喜欢它。
功能图编程语言的优点:易于调试, 程序易读性强,程序易于移植,易于分析逻辑关系
功能图编程语言的缺点:不适合人工编写复杂控制任务及大型程序,功能块里面的实际处理功能不那么显而易见.
3.语句表(STL)
语句表(STL)的英文全称是Statement List 。
语句表(STL)编程语言的特点是:其编程风格非常简捷,完全是汇编语言的风格,用STL做的程序体积小,功能强大,所以经验丰富的程序员一定喜欢它。
语句表编程语言的优点:功能强大,程序代码效率高
语句表编程语言的缺点:指令记忆困难,程序易读性差,初学者不容易入手.不适合人工编写复杂控制任务及大型程序。
4.结构化文本SCL
全称是S7-SCL(Structured Control Language 结构化控制语言)。
具有以下特点:是一种类似于PASCAL的高级编程语言,符合国际标准IEC 61131-3,PLCopen基础级认证
适用于 SIMATIC S7-300 (推荐用于CPU314以上CPU), S7-400, C7 and WinAC
SCL编程语言的优点:其非常适合于如下任务:复杂运算功能,,复杂数学函数,数据管理,过程优化
SCL编程语言的缺点:SCL 对工程设计人员要求较高,需要其具有一定的计算机高级语言的知识和编程技巧。不适合初学者。
5.S7-GRAPH
S7-GRAPH 具有以下特点:适用于顺序控制程序,符合国际标准IEC 61131-3,PLCopen 基础级认证,适用于 SIMATIC S7-300 (推荐用于CPU314以上CPU), S7-400, C7 and WinAC
S7-GRAPH的优点:对于做顺序控制比较方便,适合做功能块。
S7-GRAPH的缺点:不适合用于小项目,其代码量相对于STL 编程有所增加
6.S7-HiGraph
S7-HiGraph 具有以下特点:通过绘制功能图表来实现异步控制,非常适合于机械设计工程师,调试及维护工程师,利于自动化工程师与机械工程师相互沟通, 集成了信号监控及触发功能,适用于 SIMATIC S7-300 (推荐用于CPU314以上CPU), S7-400, C7 and WinAC
S7-HiGraph的优点:S7-HiGRAPH 不仅仅具有PLC 典型的元素(例如 输入/输出,定时器,计数器, 符号表),
而且具有图形化编程语言语言的特性,其非常适合于如下任务:异步控制,自动机械设计
S7-HiGraph的缺点:代码量相对于STL 编程有所增加的。
7.S7-CFC
S7-CFC 全称是 Continuous Function Chart。
S7-CFC 具有以下特点:通过绘制功能图表来自动生成程序,拥有强大的预制程序库,同时也可使用STEP7中的标准块,通过简单的连线来降低开发成本并减少错误,优化集成在STEP7中,与STEP7 兼容,适用于 SIMATIC S7-300 (推荐用于CPU314以上CPU), S7-400, C7 and WinAC
S7-CFC的优点:过程控制,系统工程
S7-CFC的缺点:其代码量相对于STL 编程有所增加。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
生活就是不断寻找你想要的东西
leend2009
侠圣

经验值:4839
发帖数:1120
精华帖:17
37楼    2011-11-07 15:16:34
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
一,每个语言的特点:
a,梯形图
梯形图(LAD)的英文全称是Ladder Logic ,梯形图由触点、线圈和应用指令等组成。触点代表逻辑输入条件,如外部的开关、按钮和内部条件等。线圈通常代表逻辑输出结果,用来控制外部的指示灯、交流接触器和内部的输出标志位等。
LAD语言的特点是:梯形图是使用得最多的PLC图形编程语言。梯形图与继电器控制系统的电路图很相似,直观易懂,很容易被工厂熟悉继电器控制的电气人员掌握,特别适用于开关量逻辑控制。
梯形图编程语言的缺点:不适合人工编写复杂控制任务及大型程序
b,功能块图(FBD)
功能块图(FBD)的英文全称是Function Block Diagram ,类似于数字逻辑门电路的编程语言,有数字电路基础的人很容易掌握。该编程语言用类似与门、或门的方框来表示逻辑运算关系,方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入、输出端的小圆圈表示“非”运算,方框被“导线”连接在一起,信号自左向右流动。
功能块图编程语言的特点是:其编程类似于电子电路逻辑图,非常直观,易于调试,易于分析逻辑关系。对于熟悉电子电路的朋友一定喜欢它。
功能图编程语言的缺点:不适合编写大型程序以及较多的逻辑运算的程序,功能块里面的实际处理功能不那么显而易见.
c,语句表(STL)
语句表(STL)的英文全称是Statement List ,编制顺序控制程序的指令和编程元件。其中,STL为步进梯形指令(Step Ladder Instruction)。
语句表(STL)编程语言的特点是:其编程风格非常简捷,完全是汇编语言的风格,用STL做的程序体积小,功能强大,所以经验丰富的程序员一定喜欢它。
语句表编程语言的缺点:指令记忆困难,程序易读性差,初学者不容易入手.不适合人工编写复杂控制任务及大型程序。
使用STL指令时应该注意以下一些问题:
1)与STL触点相连的触点应使用LD或LDI指令,即LD点移到STL触点的右侧,直到出现下一条STL指令或出现RET指令,RET指令使LD点返回左侧母线。各个STL触点驱动的电路一般放在一起,最后一个电路结束时—定要使用RET指令。
2)STL触点可以直接驱动或通过别的触点驱动Y、M、S、T等元件的线圈,STL触点也可以使Y、M、S等元件置位或复位。
3)STL触点断开时,CPU不执行它驱动的电路块,即CPU只执行活动步对应的程序。在没有并行序列时,任何时候只有一个活动步,因此大大缩短了扫描周期。
4)由于CPU只执行活动步对应的电路块,使用STL指令时允许双线圈输出,即同一元件的几个线圈可以分别被不同的STL触点驱动。实际上在一个扫描周期内,同一元件的几条OUT指令中只有一条被执行。
5)STL指令只能用于状态寄存器,在没有并行序列时,一个状态寄存器的STL触点在梯形图中只能出现一次。
6)STL触点驱动的电路块中不能使用MC和MCR指令,但是可以使用CJP和EJP指令。当执行CJP指令跳人某一STL触点驱动的电路块时,不管该STL触点是否为“1”状态,均执行对应的EJP指令之后的电路。
7)与普通的辅助继电器一样,可以对状态寄存器使用LD、LDI、AND、ANI、OR、ORI、SET、RST、OUT等指令,这时状态器触点的画法与普通触点的画法相同。
8)使状态器置位的指令如果不在STL触点驱动的电路块内,执行置位指令时系统程序不会自动将前级步对应的状态器复位。
d,结构化文本SCL
全称是S7-SCL(Structured Control Language 结构化控制语言),IEC61131–3标准创建的一种专用的高级编程语言。与梯形图相比,它能实现复杂的数学运算,编写的程序非常简洁和紧凑。
SCL编程语言的特点:其非常适合复杂运算功能,,复杂数学函数,数据管理,过程优化的编程处理。
SCL编程语言的缺点:SCL 对工程设计人员要求较高,需要其具有一定的计算机高级语言的知识和编程技巧。不适合初学者。
e,S7-GRAPH
S7-HiGraph 流程图编程方式 ,符合DIN EN 1131-3标准结构化编程,使用更方便,强大的诊断功能
适用于SIMATIC S7-300(CPU 314以上),S7-400, C7, WinAC
S7-GRAPH 具有以下特点:适用于顺序控制程序,符合国际标准IEC 61131-3,PLCopen 基础级认证
S7-GRAPH的缺点:不适合用于小项目,其代码量相对于STL 编程有所增加
f,S7-HiGraph
S7-HiGraph是S7-300/400的图形化编程语言,需要单独安装和单独的授权。S7-HiGraph 程序分为3级结构,多个状态图构成图表组,多个状态和转换条件构成状态图, 编译图表组时,生成的块以FC+DB的形式出现,必须周期性地调用S7-HiGraph FC。
具有以下特点:通过绘制功能图表来实现异步控制,非常适合于机械设计工程师,调试及维护工程师,利于自动化工程师与机械工程师相互沟通, 集成了信号监控及触发功能 计
S7-CFCS7-HiGraph与S7-GRAPH 的比较:
S7-GRAPH用于顺序控制,单个/多个顺控器可以单独/协调工作。
S7-HiGraph在实现顺序控制的基础上,还可以实现下列功能:
1)用S7-HiGraph生成的状态图可以被封装为标准元件。
2)封装后的标准元件可以在图表组中多次重复调用,调用时可以分配不同的实参。
3)标准元件(即状态图)之间可以通过消息或全局变量协同工作。
S7-CFC 全称是 Continuous Function Chart,这是一种基于其他编程语言之上的图形语言,用来编制顺序控制程序。顺序功能图提供了一种组织程序的图形方法,在顺序功能图中可以用别的语言嵌套编程。步、转换和动作是顺序功能。顺序功能图用来描述开关量控制系统的功能,根据它可以很容易地画出顺序控制梯形图程序。
S7-CFC 具有以下特点:通过绘制功能图表来自动生成程序,拥有强大的预制程序库,通过简单的连线来降低开发成本并减少错误,优化集成在STEP7中,与STEP7 兼容,适用于 SIMATIC S7-300 (推荐用于CPU314以上CPU), S7-400, C7 and WinAC
S7-CFC的缺点:其代码量相对于STL 编程有所增加。
二,对于掌握前面几种编程的语言,根据编程项目的大小,可以灵活应用,比如stl和lad在一个项目里同时使用,减少编程的量,也减少了cpu的负荷。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
学无止境
我爱wincc
游民

经验值:116
发帖数:48
精华帖:1
40楼    2011-11-07 16:41:05
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
LAD和STL是平时用的最多的两种语言,也是step7本身就提供的语言。
1、对于逻辑的搭建,个人感觉还是LAD最合适。可读性非常好,上手快,隔很久以后再阅读也能很快读懂。一般新手上路都是从LAD开始的。
2、对于STL的使用,一般来说,做运算相比LAD要容易些。因为他对数据类型限制的不像LAD那么死。并且支持指针,处理数据和实现一些算法的时候要容易很多。但是用STL编程,注释和符号表一定要写好,不然隔一段时间后,自己回头读都经常搞不清当时这么写是为了什么了。
Graph和SCL是附加安装软件包后太提供的高级编程语言。使用的较少,浅浅的说点
1、Graph特别适合用以流程的编程,可以看成流程图的样子。一步一步的很清晰简单。但是编辑完后,比直接用LAD和STL写出来的程序块要大。但是编程效率肯定要高很多了。
2、SCL,也是一种高级语言。STL是类汇编的语言,SCL我认为有些类C,教程的标准说法,他是一种PASCAL语言。学过C语言和汇编语言的同学肯定有感受,这两种语言的编程效率简直是天壤之别。所以用SCL也同样可以大大提高编程效率。

提高可读性方面来说,我认为注释和符号表的作用很大。另外就是要多利用结构体和程序块。就好像C语言编程中,要通过建立合适的变量名、结构体和函数块进行编程。这样出来的程序,结构清晰,简单易读。

程序加密,经验不多。但其实最简单的办法,就是把符号表删除,就很难阅读了。呵呵,有点跟楼主开始的需求不太相符哈。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
Automann
至圣

经验值:18299
发帖数:6168
精华帖:137
52楼    2011-11-08 23:09:48
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
顺序功能图语言S7-Graph的特点
顺序功能图 (Sequential Function Chart) 是IEC 61131-3标准中的编程语言,用来编制顺序控制程序。在这种语言中,工艺过程被划分为若干个顺序出现的步,步包含控制输出的动作,从一步到另一步的转换由转换条件控制。STEP 7中的S7-Graph顺序功能图语言属于可选的软件包。用S7 Graph编写的程序以功能块(FB)的形式被主程序OB1调用。
所谓顺序控制,就是按照生产工艺预先规定的顺序,在各个输入信号的作用下,根据内部状态和时间的顺序,在生产过程中各个执行机构自动地有秩序地进行操作。加工工业的生产过程最适合采用顺序控制。
下面是用来控制上下两条运输带的顺序功能图的程序状态监控。步S2的动作框中的指令“D”表示延迟,6秒的延时时间到时,转换条件M0.3变为1状态。



S7-Graph的功能非常强大,可选多种参数集,动作中可使用多种指令,包括定时器指令、计数器指令和算术运算指令。可在动作中调用其他逻辑块,动作可以与互锁和多种事件结合,可以用S7-Graph编写具有多种工作方式的顺序控制程序。
综上所述,S7-Graph虽然入门容易,但是要想精通需要付出很大的努力。
现在还有相当多的PLC(包括S7-200和S7-1200)没有配备顺序功能图语言。可以用顺序功能图来描述工艺过程,用起动保持停止电路或置位/复位指令来编写顺序控制程序。

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
追求完美
jacky_andy
奇侠

经验值:6742
发帖数:2277
精华帖:19
60楼    2011-11-10 08:36:21
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
西门子叫SCL ,实际上是ST语言
发一篇很好的介绍ST语言的看一下,简洁使用,大家看一下,希望对想学好SCL语言的有帮助

点击此处查看附件


点击此处查看附件


管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
划痕
侠圣

经验值:4794
发帖数:2009
精华帖:22
80楼    2011-11-17 18:19:00
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
补充:LAD、FBD、CFC编程自查错功能优于STL编程,在此仅以LAD和STL编程作实例比较。
在于在LAD编程环境下,对数据类型要求很严密,只要出现数据类型不一致就会报错,并且不能继续保存编译!而在STL环境下,对数据类型的匹配不是很严格!
比如,如下语句在STL环境下不会报错,而在LAD中就会报错(出现红色文字)
L MW 100
L L#100
>D
= M 104.0

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
No discussion, no outcome.
剑忠
奇侠

经验值:9641
发帖数:622
精华帖:57
81楼    2011-11-18 00:27:22
精华帖  主题:回复:应用探讨——Step7 各种编程语言对比及使用探讨
quote:以下是引用划痕在2011-11-16 19:36:22的发言:
A侠,你好!现做如下解答,请你指正,谢谢!
2、适用于CPU314以上的CPU;


出处:在张工编写的《西门子STEP7编程语言与使用技巧》一书中,第六章(Page100)“6.2.1 S7-GRAPH简介”中提到的,原句子“适用于 SIMATIC S7-300(推荐用于CPU314以上的CPU)、S7-400、C7 和 WinAC”。
个人分析:考虑到使用S7-GRAPH编写程序(最终编译为FB)时,占用系统内存较多(步数为20时,占用内存约10K左右),而CPU314(6ES7 314-1AG13-0AB0)的工作内存为96KB,系统中若存在几个顺序或者再使用几个PID回路,CPU的内存将不够用,故不建议将S7-GRAPH应用与CPU314及其以下CPU。
<此处为个人分析,请指正——此处参考《西门子STEP7编程语言与使用技巧》一书中Page132页,关于常见问题“S7-GRAPH程序占用多大CPU内存”的解答>
1、《西门子STEP7编程语言与使用技巧》一书我也看过,张工之所以推荐用于CPU314以上的CPU,这是一个经验之谈,是从预留系统内存足够富余量考虑的。
2、尽管SIEMENS官方的技术手册写明可使用在S7-300以上CPU中使用S7-GRAPH工具,然而事实上CPU312这类CPU连DP通讯端口都没有了,仅有MPI口,是S7-300中最低端的CPU了,所以工作内存非常有限。例如:6ES7 312-1AE14-0AB0工作内存仅32KB,但新版的高端CPU313C(6ES7 313-6CG04-0AB0)工作内存有128KB,就基本可以胜任使用S7-GRAPH工具了。
3、不过,使用S7-GRAPH工具后占用系统内存较多是事实,如果项目中还有不少的数学运算程序,又将占用较多的系统内存,从而会导致CPU模块工作内存不足。因此,推荐用于CPU314以上的CPU,这是一个经验之谈,值得借鉴的。
4、关于低端的CPU312模块我有一个使用经历供分享:用S7-SCL的“FOR TO DO”语句写了一个三层循环的算法程序,编译下装(Compile and Download)后都正常,但就是程序执行结果异常,CPU模块始终亮SF灯故障,诊断缓冲区也提示有“FOR TO DO”语句的FB块I/O访问错误?
5、结果折腾了将近一天时间,将“FOR TO DO”语句三层循环减少为两层循环就好了!说明低端的CPU312模块内存缓冲区太小,无法进行复杂数学运算。
6、由此提醒大家:SIEMENS的编程工具确实丰富,但工具的选用与CPU模块和存储卡一定要注意匹配。否则,将出现意想不到的问题!

管理员注:本帖已被纳入此次探讨发帖整理,请点此详阅
大学之道,在明明德,在亲民,在止于至善。
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。