可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。
可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。
会点Pascal的都会这个,但是对于不同厂牌的PLC,其对于IEC61131-3中的ST支持是不同的,施耐德的ST,西门子的ST,以及富士的ST会有少许差别。
PLC领域中,PLC语言有多种,对应的是一个国际规范IEC61131-3:
所以,实际上,PLC语言,就等价于IEC61131-3。下面详细解释:
对应的多种PLC语言,其就是由相关国际规范IEC 61131-3,所定义的。
还有一个不常见的,第6种:
允许编程人员图形化的去连接中继器和线圈。
允许用户可以快速地实现二进制和模拟表达式方面的编程。
类似于C语言或PASCAL语言
下面详细解释ST语言:
ST语言支持操作符,控制语言和功能,支持下述方面内容:
下面详细的解释,对于MELSEC-Q系列的ST语言的特点:
适用于顺序的过程或流程。
CFC就像一种徒手画出来的FBD的编辑器。
不像面向网络的FBD,其中FBD是对于不同的输入之间的连接点,操作符,输出都是自动设置的。
而CFC则是需要自己手动画的。
因此,所有的模块盒子都可以自由的被替换,因此其无需临时变量即可支持反馈循环(feedback loop)。
由于各种技术员和工程师的教育水平、擅长的专业领域不同,所以,需要多种PLC语言之间,可以互通。
因为实际情况是,对于不同的领域内的人,其所培训和使用的PLC语言都不同,而导致不同领域之间的人在PLC语言方面,互相很难沟通。
美国的汽车工业领域:倾向于用LD梯形图;
欧洲的汽车工业领域:更喜欢用FBD功能模块图
计算机科学家:喜欢用ST结构图(类似于高级语言,比如C语言)
而不同的PLC语言有各自的优缺点和适用的领域:
内存管理方面的工作:对于内存的读和写,IL和ST(比LD)更加合适;
控制传送带的程序:如果用LD写,很明显会比ST写,逻辑会更清晰;
顺序控制系统:用SFC无疑使最好的选择;
因此,实际上很多时候,是不同的PLC语言混合搭配去使用的:
一个PLC制造商,想要实现一个POU,可能就会选择用IL去处理IO模块
一个传送带制造商,想要用PLC监视和控制限位开关盒马达:更倾向于用LD去实现
而PLC软件人员:会去根据需求去修改对应的IL,使用LD去实现控制
而(上述的传送带可能又会卖给)一个工厂建造商,其都是用FBD,并且要求IO控制程序有对应完整和统一的文档
PLC编程语言中 最常用的语言是梯形图和指令语句表。
梯形图形式上与继电器控制线路很相似。
在继电器控制线路的基础上略加改动就形成PLC的梯形图程序。
在完成梯形图程 序后为使PLC按程序完成控制任务就需要将一段程序存入到PLC的用户程序存储器中这时就要使用编程器将程序的一条一条指令按顺序键入到PLC中即 可。
梯形图与指令语句表的之间存在相互对应关系。
编写简单的程序用梯形图编程比较方便初学者容易掌握。
但是编写复杂程序使则显得繁锁 程序越大越麻烦 不容易编程。
二、步进顺控指令语言编程它是一种专用于顺序控制的较复杂程序的编程方法。
此方法编程方法简单规律性强初学者较易掌握可大大提高工作效率并给调试修改程序带来很大方便。
导火索:今天早上GX Woks无响应,强行关闭再打开,发现一个早上的活白干了!最近用GX Works2写ST语言程序的积怨爆发了! 背景:最近要将一个其他种类控制器的转为PLC,源程序是C语言的,于是瞄上了ST语言(不知道的翻IEC 61131-3标准看),据称接近C等高级语言,能用相对简洁的表法方式处理复杂逻辑和数学问题。 吐糟1:就是GX Woks的自动保存!选项里面的自动保存居然全部都是在把程序写进PLC才进行,没有编译时保存,也没有每隔一段时间保存。于是GX Woks2一旦无响应,节哀吧…… 吐糟2:ST相对简洁的表法方式处理复杂数学问题?!连个“整型提升”都没有(反正?GX Woks2没有),处理不同类型整数的计算时可壮观了,一堆INT_TO_DINT、BOOL_TO_INT什么的,本来十几个字符的算式硬生生写成了几十个字符的。就算编译后的代码一样,但编译器难道就不能聪明一些做自动整型提升,以方便用户么! 吐糟3:求幂的“**”居然强制要求底数是浮点数类型,如求2的N次幂还要将2先转换为浮点数2.0,闲得发疯了吧! 吐糟4:“MELSEC-Q/L结构体编程手册(结构化文本篇)”手册的小节“4.3.5 使用控制语句时的注意事项”中列举了好几种if、for语句的执行步数和时间,还亲切地把等效且执行步数更少时间更短的指令表告诉用户。那为什么ST语言编译时不直接编译成后面的那种指令表!非要编译出消耗更多步数和时间的指令! 吐糟5:GX Works2对ST代码的调试弱爆了,在手册“GX Works2 操作手册(公共篇)”里面的“附录4.3 不支持的功能”中有写,不支持单步跟踪、断点等等,但又说请用支持该功能的GX Developer……你GX Works不是作为GX Developer等等的升级版+集大成者吗,怎么把实用的功能砍掉了! 吐糟6:标签用到的软元件的自动分配标号是从大到小,手动指定时的自动输入却又是从小到大。如有个结构体里面有bool型变量var1、var2、var3,自动分配时会分配到类似:var1--M7679、var2--M7678、var3--M7675,手动指定的自动输入时却分配到类似:var1--M0、var2--M1、var3--M2,标号大小是倒过来的。在使用批量传送置位复位等指令时让人无所适从。 吐糟7:相对C语言,不能使用多重结构体变量,也不能使用联合体,如果可以用的话就能见一个类似下面结构的数字IO结构体,条用到时候就是DIO.DIN.input1,这样代码看起来有条理多了 DIO---DIN---包含成员输入1至输入n(可建联合体变量All用于全体操作) 杂七杂八:还有语法高亮不能显示配对括号,有时无缘无故的变为注释的绿色不执行编译,换个行又好了……部件选择里面的函数连个功能说明也没有,也不能直接输入功能搜索函数,全都要跑到帮助里面找,两头跑累不累啊! 尾声:我明白ST不是C,但自动整型提升这样方便的特性难道就不能加进来吗?而GX Works毕竟是传统梯形图等起家的,ST的编写编译环境还差不少呢。 |