第yi:PLC是可以工作在***恶劣的电磁环境中的
我们都在宣传片中见过三江源地区的藏羚羊,它们生活在***恶劣的环境中。如果把我们内地的普通山羊放到这里,不出三天,普通山羊恐怕就见牛克斯了。
如果我们把计算机直接放到PLC工作的环境中,河南电气柜,无需太久,这些计算机将死机甚至烧毁。
在ABB的早期工程中,我们就是把工业控制计算机直接放在变电站开关柜中,用来实施测控和数据处理。然而,用不了多久,电源故障和硬盘故障,还有输入输出接口的故障就接踵而来,让人烦不胜烦。直到我们用PLC替换下这些工控机,事情才算完。
这叫做抵御电磁骚扰EMC的能力,PLC可达三级甚至四级,而计算机能达到二级就算很不错了。
抵御EMC电磁骚扰,会有许多措施。例如隔离技术、接地技术等等都是。
***:PLC的程序是一行行顺序执行的,它不会陷入死循环
我们在编写计算机程序时,经常会遇见循环。如果一个循环子程序设计不恰当,或者条件引起了程序返回,有可能进入到死循环中,系统当然就死机了。
然而,PLC的程序是一条接一条顺序执行的,只有到了程序末尾才会回头。在程序中任何部位,若条件满足,可以实现跳转,但程序还是一条接一条顺序执行。
如此一来,PLC几乎不会死机。这也是PLC区别于普通计算机的根本特性。
基于此,我们会发现PLC的可靠性极高,这是普通计算机完全不能比拟的。
第三:冗余配置
所谓冗余配置,就是在控制过程中存在主机和从机,它们依靠握手线关联,并共享资源和信息。
如果是计算机,当主机出现问题时,切换到从机的时间较长。但对于PLC,我们可以在机架上安排2套CPU作为主从控制,它们之间的转换仅几个时钟周期即可完成。
例如我们的控制对象是汽轮机,它的转子在高速旋转。我们不妨假定转子的转速就是工频周期,也即每分钟3000转。如果我们对汽轮机实施DCS监控,在现场层面我们只能选用带冗余配套的PLC,绝bu可能使用计算机。一旦PLC的主机发生故障,它立刻就转入从机控制,对于受控对象来说几乎感觉不到,自动排水电气柜,但计算机就未必可以实现类似功能了。
事实上,带冗余配套的PLC系统就属于规模较大的PLC。从题主的描述看,似乎连边都没沾上。
第四:PLC的程序特点
PLC的程序规模都不大,一般才几千字节,能上万字节就算很大的程序了。
PLC有许多输入输出接口,以及各种类型的变量,这些都需要专门设置地址,以便在程序中使用。
我们看下图,此图是用PLC国际通用标准IEC61131-3模块化编程语言写成的:
图1:某地铁配电控制系统PLC的输入接口参数定义程序和延迟判误程序
在图1中,我们在左侧看到了许多输入参量,它们的末尾都有_s的标识,这些就是开关量输入参数,它们不但有地址,还有名称。这是必须的,否则程序无法辨识和使用它们。
我们由图1的程序看到,这种编程方法比所谓的C语言方便得多。事实上,每一个功能块就相当于一段C语言。例如TON模块,它是延迟模块,如果用C语言,怎么也要若干语句行,但这里仅仅只是一个程序模块而已。何者更方便一看便知。
我们再看下图:
图2:PLC的16位字解析为单个开关量的程序段
图2中,程序开头的AND(与逻辑模块)实施程序转移。当条件满足时,AND启动子程序入口。
在图2中,我们看到了UNPACK16模块,它的任务是把一个16位的字解析为16个开关量,供下一步程序使用。
我们很容易想到,这个UNPACK16模块若用C语言来写,又会有何种形式?何者更方便?
我们看下图:
图3:数据交换的RS485接口定义和MODBUS通信管理
图3是PLC对系统中各种数据交换的定义、数据采集和管理。图中的一个个模块就是处理MODBUS通信协议数据的,同时还实现数据采集轮巡操作。
这些模块用C语言该如何写?是不是会麻烦很多?
我们看到,PLC程序的便捷性是C语言无法比拟的。
第五:PLC的工作范围
PLC的内存不大,尽管它的可靠性很高,但PLC不能用于较大的计算。我曾经设计过一个PLC程序,用于浮点数的乘法,麻烦得很,***不得不使用模块配合查表来解决问题。
PLC的内部其实就是单片机,只不过整个PLC的单片机系统经过了严格的EMC测试,而操作系统和编程系统也进行了优化,方便我们这些编程者使用。
既然PLC只是一台单片机系统,可想而知它与计算机不在同一个技术水平上。计算机能够完成的工作,哪怕只是一篇WORD文档的写作,用PLC绝bu可能完成。但PLC能够轻松实现的控制功能,用计算机虽然也能勉强实现,但效果极差,且可靠性极低,尺寸也巨大。
如此看来,PLC与计算机的工作特性不一样,适用的工作对象当然也不一样。
所以,题主拿计算机的C语言来比拟PLC的编程语言,并不合适。
另外,题主所谓的规模较大的PLC,这个定义不明确,也是没有意义的。
大学本科也是机械专业,中阳空调自控电气柜,不过那时候根本没用心去学,我们大二还是大三的时候上过一门 PLC 课程,那时候老师就是按照课本知识在教,那时候老师后给过我们一个电脑模拟 PLC 控制软件,有一些操作就在软件运行。大四的时候,学校组织考了一波 PLC 证书,这才真正接触过 PLC 机器。
回到楼主这个题目,楼主先去图书馆找几本相关教材看看。推荐一个楼主的一个网站,刚好有 PLC课程,楼主看看对你有没有用。
自学PLC,西门子的话推荐去看廖长初编的那几本书。
网上资源很多,没必要看书。
Plc比较容易上手
而且很多品牌软件都能很方便的仿zhen
建议联系实例多实践试试
如果学习西门子的话
安装软件后自带帮助文档,有问题就上西门子工业支持中心找答案
你能遇到的问题,***都已经有人遇到了,并且还有答案
找找各大厂家产品的手册看看~
安装仿zhen器。
照着编程手册和帮助文件直接搞就好了。
不需要教材。
1
根据工程实际需求,进行功能块规划,编写子程序
在PLC中子程序是为一些特定的控制目的编制的相对独立的程序。执行子程序调用指令CALL等,如果条件不满足子程序调用时,程序的扫描就仅在主程序中进行,不再去扫描这段子程序,这样就减少不必要的扫描时间。
2
用字或双字数据传送给DO点方法来控制输出
在PLC的应用中通常都会有大量的输出控制,用字或双字数据传送给DO点方法来控制输出可以提高速度,只要根据实际应用的要求,合理分配输出地址,变换控制输出控制字,可以大大减少PLC程序执行的步数,从而加快PLC的程序运行速度。
3
脉冲触发SET、RESET
PLC中,使用SET指令只执行一次即可,不必每次扫描都执行这个指令,很适合与脉冲输出(PLS/PLF)指令配合使用。有些工程人员忽视了这个问题,使用了常规的方法来驱动SET指令,无意中增加了PLC程序扫描运行时间。
4
避免类型转换,方法如下:
以S7-200为例,它的内存格式与我们常用的PC机正好相反,机械设备控制电气柜,它是高字在前,低字在后的。所以我们可以将字变量放在后两个字节,在程序初始化时将前两个字节清零(程序的其它地方不得使用这两个字节)。
如我们定义符号时将字变量定义在VW2,同时保持VW0的值为零。则程序中可以用VW2以字型访问该变量,同时也可以VD0以双字型访问,避免了类型转换。
为了避免使用时混淆,以明确的符号定义来区分字类型和双字类型。在此强烈推荐类匈牙利命名法:以前缀指示变量类型,用首字母大写的有意义的英文单词的组合作变量名。本人习惯用以下缀:
b————字节型变量(byte)
w————字型变量(word)
d————双字变量(double)
r————实型变量(real)
f————位变量(flag)
btn——-自复位按钮式输入(btn)
sw————切换开关或自锁按钮输入(switch)
sig——-传感器、编码等电平信号输入(signal)
rly——-输出继电器位(relay)
……
当然,这个根据个人习惯来,没有定则,主要是利于自己区分。
假如有一个字类型变量名为VarName,为使用前面的转换技巧,我们可以这样定义:
wVarName————VW2
dVarName————VD0
在程序初始化时将VW0清零(如果是不需要记忆的变量,直接将dVarName清零也可)或者在数据块中将VW0设置为零。则以后需要以字类型访问变量时就用wVarName,需要以双字类型访问变量时就用dVarName。完全不需要类型转换。