搜索
bottom↓
回复: 33

大家对PLC的编程语言是什么看法

[复制链接]

出0入0汤圆

发表于 2013-5-18 17:16:13 | 显示全部楼层 |阅读模式
PLC是我们专业的一门课程,对 PLC 编程一直很不习惯,不太明白它的优势在哪里。下面是我的几点看法:
1. 指令表,读起来比汇编语言还难受,而且各厂家产品还有各自的非标准的拓展功能指令。
2. 梯形图,看似直观,但是程序长了一样很可怕,Y0,Y1,...Y100+,目前的IDE对注释的支持(方便的编辑和直观的显示)比较差吧?。
3. 状态图,比梯形图更加直观些,这点不可否认。但是状态内部依然是梯形图。而且,什么S0, S1, S2的,注释不在旁边,读起来还是很难受。

在我看来直接使用 C语言+固件库 的形式编程还更方便些,也许是我学习的第一门语言就是C语言的原因吧。
不知大家对此是什么看法,PLC编程语言 的优势在哪里。

出0入0汤圆

发表于 2013-5-18 17:48:55 | 显示全部楼层
C语言+固件库  那只有开发人员才能玩得转啦

PLC程序都是工程人员写的呢

出0入0汤圆

发表于 2013-5-18 17:50:38 | 显示全部楼层
ljt80158015 发表于 2013-5-18 17:48
C语言+固件库  那只有开发人员才能玩得转啦

PLC程序都是工程人员写的呢

+1.                          

出0入0汤圆

 楼主| 发表于 2013-5-18 18:03:44 | 显示全部楼层
ljt80158015 发表于 2013-5-18 17:48
C语言+固件库  那只有开发人员才能玩得转啦

PLC程序都是工程人员写的呢

不会吧,写PLC程序和写C程序都是有学习成本的。我觉得PLC也不是书上说的那么简单易用,也许是个人原因。

出0入0汤圆

发表于 2013-5-18 18:06:41 | 显示全部楼层
PLC编程语言的优势只有电工才知道
在这里谈论优势,不如去做2个现场

出0入0汤圆

 楼主| 发表于 2013-5-18 18:32:34 | 显示全部楼层
heky 发表于 2013-5-18 18:06
PLC编程语言的优势只有电工才知道
在这里谈论优势,不如去做2个现场

呃,我们做实验的时候也就是在一台电脑上编程,然后下载到PLC,我不知道你说的“现场”是不是这样子。。。如果不是的话,那就真的是我无知了。对PLC并不感兴趣,所以估计将来是做不了“现场”的了。

出0入0汤圆

发表于 2013-5-18 18:40:23 | 显示全部楼层
所以说你们是做实验,我说的是现场调试机器。

出0入264汤圆

发表于 2013-5-18 18:56:15 | 显示全部楼层
本帖最后由 mcu_lover 于 2013-5-18 18:58 编辑

PLC编程对于写惯了C语言的人来说,要想转变思路确实得花一段时间。最好是做一个实际的案子,控制几个气缸,继电器,来控制机构的动作实现具体的工艺要求。实践过了之后你就知道用PLC相比C语言来说,优势实在是太多了。
很多人觉得梯形图编程比较别扭,打心底反抗。其实是因为不理解PLC的工作原理所致的。简单的来说PLC的梯形图就是类似于C语言里你写的一个while(1)循环要做的事。此外还有重要的一点是梯形图里面的所有东西都是基于扫描周期的,这一点在初学时候一定要时刻牢记,否则你写的程序运行效果与你设计逻辑会有偏差。你得想一想程序在此刻的这次扫描里做了什么,下一个扫描周期该如何做。其实和C里面的逻辑也是一样的,不同的是梯形图体现的更严格。

对于楼主位的问题1:现在很少有人用指令表编程,少到什么程度呢?至少我到现在为止,没有见过一个人在实际现场用指令表编程,以前还可能说用手持编程器采用指令方式编程,现在因为笔记本电脑的普及,在现场都是笔记本用梯形图设计。

问题2:梯形图绝对是直观的,比C语言要直观的多。从上到下,从左到右,按照你的逻辑进行运算输出。而且现在的IDE对注释的支持都比较好。我们都知道在C语言里面用全局变量对程序结构有影响,但是不可否认的一个优点就是全局变量使用起来非常非常方便。你可以把PLC里面的所有变量都当成全局变量看待,所以PLC程序写起来是非常爽的。不管PLC还是C,对于变量都是要注释清晰,合理使用。所以这一点上,不存在你说的X0.....X100  Y0....Y100 很可怕。按照你这么说,我还说单片里面的PA0~PA7   PB0~PB7 这些IO口一样是很可怕的。
为了打消你的疑虑,我从前几天做的一个案子的梯形图里截图几个片段你看。

对于你的第三个问题:我想C设计里面肯定会设计到大量状态机的地方,你需要管理一大堆的状态变量,尤其是状态层次有嵌套的时候。状态跳转的时候还得考虑不同标志变量在不同状态下的值。虽然状态机用起来非常方便,其实也是建立在你个人对于程序理解掌握的能力基础之上。对于PLC里面的状态图,它已经为你做了很多繁琐的工作,你只需要好好想你在每个状态玩成什么具体的工作就好了。而且图形化的设计方式绝对是比C里面的状态机写起来要爽的得多。
还是用事实讲话:下面截图是某个状态下,电机控制Y轴平台进行上下运动,按钮按下运动,松开停止。有上下两个按键,分别对应向上运动,和向下运动。


短短几行就完成了所需要的功能,而且该做的保护都有。如果用的C的话可能你得抓脑半天了,又是按键消抖,各种状态纠缠。

多状态交互转换轻松简单,直观明了。


另外,PLC的在线监控,在线编辑功能,其方便易用性 远非MCU里面的JTAG在线仿真所能比拟的。在调机时候,非常直观方便。前几天刚做的这台设备,配电完毕后,拿着电脑,现场从零开始写程序,一大群人围着你,两天全部OK,若是用C写恐怕得个把星期了。

一般来说,越抽象的东西使用起来越简单。用汇编语言编程时候,苦不堪言,于是我们抽象出来了C语言,但是面对大型程序时候C仍然不够完美,于是C++又被抽象出来了。PLC也是一样,PLC就是对MCU功能的抽象,所以使用PLC是绝对比MCU要方便许多的。PLC里面也就是一个单片机,不同的是有人已经为了处理好了底层你需要的各种繁琐细节,你只需要关注你想要的逻辑过程即可。

用过了PLC,其实真的不想再回到MCU的世界里。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-5-18 19:08:46 | 显示全部楼层
lz位的问题,已经不是第一次看见,不去做电工,永远不知道电工的需要。

出0入0汤圆

 楼主| 发表于 2013-5-18 23:15:20 | 显示全部楼层
mcu_lover 发表于 2013-5-18 18:56
PLC编程对于写惯了C语言的人来说,要想转变思路确实得花一段时间。最好是做一个实际的案子,控制几个气缸, ...

谢谢,你说的有理。

关于注释的问题主要还是我对IDE不太熟悉的原因。
“PLC里面的所有变量都当成全局变量看待”这点我就很不习惯了,我是做纯软件的,比较看重封装的问题,而且这在实现上确实是很浪费,当然这点在解释语言里面不重要的了。
不得不吐槽的是Mxx的序号要手工分配(我现在写PLC程序就是这么干的,不知道IDE有没有更好的支持),也让我很不舒服,我要的只不过是一个有意义的名字而已,除了输入X和输出Y,数字序号就不应该出现在程序里的。
PLC的状态图确实是相对比较直观的,C语言对简单的状态一般是用switch case实现,不麻烦,但没那么直观,这个一般是可以使用UML工具来自动生成C/C++语言代码的。
PLC在并行的逻辑上处理的确实比较方便,不过我认为一个好的C++(或者其它程序语言)多线程库,或者类似现有的GUI框架都能很好的解决这个问题。

“PLC的在线监控” 确实是一大亮点。

相对C语言,我觉得PLC更适合用来处理比较简单的逻辑。

我也觉得MCU麻烦,应该说,裸机MCU本来就特别麻烦,但是如果底下有个操作系统内核就不一样了,开发还是用灵活的C语言,甚至可以是C++等其它高级语言,配上一个库来控制输入输出,一样是很方便的。

出0入0汤圆

发表于 2013-5-18 23:28:21 | 显示全部楼层
Pony279 发表于 2013-5-18 23:15
谢谢,你说的有理。

关于注释的问题主要还是我对IDE不太熟悉的原因。

只是系统代价问题,加一个操作系统会增加复杂度,C++的编译器也是很复杂的。

出0入0汤圆

 楼主| 发表于 2013-5-18 23:33:10 | 显示全部楼层
netawater 发表于 2013-5-18 23:28
只是系统代价问题,加一个操作系统会增加复杂度,C++的编译器也是很复杂的。 ...

“加一个操作系统会增加复杂度” 操作系统对整体性能的影响是比较少的,相比解释性语言牺牲的性能来说更是微不足道。
“C++的编译器也是很复杂的”   有开源的gcc啊,当然不用自己开发了,更新也是别人帮你做,除非你选用的CPU架构非常独特,就需要自己改装gcc。

出0入0汤圆

发表于 2013-5-18 23:43:15 | 显示全部楼层
如果楼主偏好高级语言,西门子的300/400开发环境是提供了SCL语言的,类PASCAL的语言。

出0入0汤圆

 楼主| 发表于 2013-5-18 23:54:04 | 显示全部楼层
twitter 发表于 2013-5-18 23:43
如果楼主偏好高级语言,西门子的300/400开发环境是提供了SCL语言的,类PASCAL的语言。 ...

谢谢。

问个题外话,现在的配电系统(我不知道是不是这么称呼的)是不是都用PLC控制的,我在网上看过控制整栋楼的灯光来玩游戏的视频,所以比较好奇。

出0入0汤圆

发表于 2013-5-19 02:52:29 | 显示全部楼层
不要用三菱之类太差的PLC。日系PLC一直是在中低端打天下。你如果觉得PLC的编程语言不咋地,也有高级的。西门子的WINAC支持调用C#,C++,VB等语言开发的DLL,你也可以直接用上述语言编写实时或者非实时的程序控制WINAC。方法不是问题,结果最重要。你如果做大型项目你就知道PLC的好处了。

出0入0汤圆

发表于 2013-5-19 09:08:37 来自手机 | 显示全部楼层
搭车问下,plc的rs485网络,主机上电扫描后,未扫到的设备如何让其持续扫描?

出0入264汤圆

发表于 2013-5-19 11:32:54 | 显示全部楼层
Pony279 发表于 2013-5-18 23:15
谢谢,你说的有理。

关于注释的问题主要还是我对IDE不太熟悉的原因。

我告诉你PLC的所有变量可以当成全局变量看,是强调编程的方便性。至于封装,是与变量无关的,所谓的封装都是编译器和编程语言整出来的,如果你愿意,你也可以在PLC里面,或者单片机里面的汇编里面自己去实现。怎么使用,就看个人水平和偏好了。好比我现在告诉你某个MCU有2KB的RAM空间,你是当全局使用,还是局部使用,随你便。PLC里面的变量亦是如此。另外MXXX  DXXX的分配现在有的IDE都是支持自动分配的,而且变量名可以自己任意取,和C里面的一致。只是很久以前的很老的PLC的IDE不支持罢了。现在的IDE大都是支持的。
至于C语言里面的状态机,我研究的还是比较多的,但是我不发表意见,仁者见仁,智者见智。
有一点你弄错了,PLC在逻辑处理上面比C要方便许多,越是逻辑复杂的,用PLC越方便,所以并非你认为的PLC更适合用来处理比较简单的逻辑。如果你有机会亲自动手设计机器的电控程序,就会明白了。
我现在甚至于都想自己做一套IDE来给单片机使用,使用图形化编程处理所有外设操作。把PLC里面优秀的设计思想带到MCU里面,让MCU的程序员轻松些。

出0入0汤圆

发表于 2013-5-19 16:21:16 | 显示全部楼层
一直用梯形图。PLC对浮点数的处理方面,各位大神有什么好的方法吗?

出0入42汤圆

发表于 2013-5-19 16:56:36 | 显示全部楼层
C语言的思维跟plc的梯形图差距还是很大的

高级点的plc可以用st语言编程,跟C语言接近。

出0入0汤圆

 楼主| 发表于 2013-5-19 20:22:41 | 显示全部楼层
canback 发表于 2013-5-19 16:56
C语言的思维跟plc的梯形图差距还是很大的

高级点的plc可以用st语言编程,跟C语言接近。 ...

我觉得PLC的梯形图的逻辑和verilog的有点像,可以认为是并行的。
不过我还是偏爱代码多一点,应该说还没找到一个能够让我放弃代码的图形化编程界面
其实作为一个程序员,不应该偏好任何一种编程语言的~总之都是用来挣钱的。

出0入0汤圆

发表于 2013-5-19 21:09:28 | 显示全部楼层
呵呵,PLC梯形图编程自有其妙处,梯形图这种编程方式是由早期的纯粹继电器控制回路演化来的,和真正的实际控制工程联系紧密,楼主如果熟悉继电器控制那就理解了为何PLC选用梯形图这种编程方式,如有不妥请各位指正。

出0入0汤圆

发表于 2013-5-19 21:16:56 | 显示全部楼层
mcu_lover 发表于 2013-5-18 18:56
PLC编程对于写惯了C语言的人来说,要想转变思路确实得花一段时间。最好是做一个实际的案子,控制几个气缸, ...

谢谢前辈了!
今天做了PLC实验,我不会弄,老师说我水又说我笨。

出0入42汤圆

发表于 2013-5-19 22:52:22 | 显示全部楼层
Pony279 发表于 2013-5-19 20:22
我觉得PLC的梯形图的逻辑和verilog的有点像,可以认为是并行的。
不过我还是偏爱代码多一点,应该说还没 ...

我也这么觉得。
plc的梯形图,更像硬件描述语言,不过一个用图去描述,一个代码描述

出0入0汤圆

发表于 2013-5-21 14:02:13 | 显示全部楼层
Pony279 发表于 2013-5-19 20:22
我觉得PLC的梯形图的逻辑和verilog的有点像,可以认为是并行的。
不过我还是偏爱代码多一点,应该说还没 ...

绝不是并行的,与C程序一样是一行一行执行的

出0入0汤圆

发表于 2013-5-21 16:19:55 | 显示全部楼层
Pony279 发表于 2013-5-18 23:33
“加一个操作系统会增加复杂度” 操作系统对整体性能的影响是比较少的,相比解释性语言牺牲的性能来说更 ...

操作系统和C++谁用谁知道了。

解释性语言的好处是可以动态修改程序。

出5入0汤圆

发表于 2013-5-21 18:17:48 | 显示全部楼层
kmani 发表于 2013-5-19 21:16
谢谢前辈了!
今天做了PLC实验,我不会弄,老师说我水又说我笨。

那老师也太xxxxxxxxxxxxxxxxxxxxx

出0入0汤圆

发表于 2013-5-21 18:28:17 | 显示全部楼层
我会点C,但是我不会梯形图,我周围很多电工都会梯形图,但是不懂C

出0入0汤圆

发表于 2013-5-23 08:37:50 | 显示全部楼层
本帖最后由 xo37 于 2013-5-23 08:39 编辑

PLC就是特殊功能化的单片机功能板;

楼主是学校里的,见多了研究生、博士生了,所以对于C也好其他语言也罢,感觉上要熟悉些,但就用PLC梯形图编程和用C写个51程序实际的来完成一个功能,比如X0键按下,Y0输出,X0松开,Y0停止输出,PLC要比51快捷的多;
当然,C写51在处理复杂情况下的时候,要便捷些,毕竟,PLC的初衷就是为不熟悉51编程的情况下,提供一个快捷的平台,初期主要替代继电器电路,后来加入各种丰富、强大的功能;

大牛的人硬件工程师,弄个51也好,arm也罢,都可以信手拈来,而且,实战经验也丰富得多,闭环控制、信号处理……

就像带辅助侧轮的儿童车,对于熟练骑车的人来说不必要;但对于上车就东倒西歪的人来说还是有用的;

同样是C,你用dos下的Turbo C 和Win 环境下的VC或Borland C还是有很大区别的,毕竟IDE的便捷性在那里摆着;

出0入0汤圆

发表于 2013-5-23 08:45:31 | 显示全部楼层
kmani 发表于 2013-5-19 21:16
谢谢前辈了!
今天做了PLC实验,我不会弄,老师说我水又说我笨。

简单的PLC程序,无非就是把输入点看作常开、常闭的触点,输出嘛,就是继电器的线圈;

可能整天在学校的孩子没有个具体的概念,我上手PLC1个月了,基本的功能,基本上随便拿一家PLC过来就可以写了——西门子除外,因为那个厂家的软件官网没得下;

出0入0汤圆

发表于 2013-5-23 08:51:51 | 显示全部楼层
学校还是整天只知道让孩子们抬头看天 —— 某学院机电毕业的优秀班干部,连个简单的照明用220V开关控灯都不会弄;
也不知道是谁的悲哀,学生也不想多学一点,多学了怕吃亏吧……

出0入0汤圆

发表于 2013-5-26 21:38:24 | 显示全部楼层
Pony279 发表于 2013-5-18 23:15
谢谢,你说的有理。

关于注释的问题主要还是我对IDE不太熟悉的原因。

熟悉C的朋友
建议你直接从IEC61131语言系统入门

这样就很容易上手
不过IEC61131适合大型设备

富士电机
罗克韦尔
施耐德
倍福
等等啦,都是国际标准

顺便说一下PLC是有局部变量的哦

出0入0汤圆

发表于 2013-5-26 22:23:40 来自手机 | 显示全部楼层
有没有大虾分享下:PLC梯形图编程跟另外一种图形编程 LabView的编程思路及设计方法差异?

出0入0汤圆

发表于 2013-5-28 13:58:38 | 显示全部楼层
defkpy 发表于 2013-5-26 21:38
熟悉C的朋友
建议你直接从IEC61131语言系统入门

赞同你的说法
还有我觉得指令表是必须懂得,如果花点时间看看PLC那几个寄存器,在看看指令表那几个指令,指令表还是挺好理解的

出0入0汤圆

发表于 2013-5-31 09:38:33 | 显示全部楼层
PLC确实对电工和大型设备来说有着非常多的优势,这是MCU无法比拟的(虽然PLC的核心是MCU).
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-4 04:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表