西门子三明授权代理商
这些数据可以从输入端口上连接的外部器件获得,需要使用传送指令读取这些器件上的数据并送到内部单元;初始数据也可以用程序设置,即向内部单元传送立即数;另外,某些运算数据存储在机内的某个地方,等程序开始运行时通过初始化程序送到工作单元。
(1) 机内数据的存取管理
在数据运算过程中,机内的数据传送是不可缺少的。运算可能要涉及不同的工作单元,数据需在他们之间传送;运算可能会产生一些中间数据,这需要传送到适当的地方暂时存放;有时机内的数据需要备份保存,这要找地方把这些数据存储妥当。总之,对一个涉及数据运算的程序,数据管理是很重要的。
此外,二进制和 BCD 码的转换在数据管理中也是很重要的。
(2) 运算处理向输出端口传送
运算处理总是要通过输出实现对执行器件的控制,或者输出数据用于显示,或者作为其他设备的工作数据。对于输出口连接的离散执行器件,可成组处理后看作是整体的数据单元,按各口的目标状态送入一定的数据,可实现对这些器件的控制。
(3) 比较指令用于建立控制点
控制现场常有将某个物理量的量值或变化区间作为控制点的情况。如温度低于多少度就打开电热器,速度**或低于一个区间就报警等。作为一个控制“阀门”,比较指令常出现在工业控制程序中
程序设计是PLC应用中较关键的问题。PLC程序设计的基本思路是按照设备的要求设计输入和输出信号的逻辑关系,在输入某些信号时得到预期的输出信号,从而实现预期的工作过程。因此,简单而常用的方法是以过程为目标,分析每个过程的启动条件和限制条件,根据这些条件编写该过程的PLC程序,完成了所有过程的PLC程序即完成了整个PLC程序。注意:有些指令转换后会有所不同,直接在欧姆龙PLC程序中修改即可。
在编写PLC程序之前,首先应对系统的特点和运行过程进行分析。在一般的工业生产过程中,系统内每台设备开始时均处于初始状态。初始状态包括:
a.供设备用电的电源正常。
b.设备选择在自动方式,即PLC控制方式。
c.该设备的保护、控制及信号已复位。
在确定每台设备均满足初始状态后,由操作员下达起动命令,整个系统从初始状态出发进入起动过程。自检中任一台设备不满足起动的初始条件均不能进行起动操作。在起动过程中各设备状态不断改变,各个单体设备根据工艺流程顺序起动运行,向稳定运行状态前进,最后进入稳定运行状态。稳定运行状态的时间视生产情况确定。当一段生产工作完成后,由操作员操作或由停车条件自动发出停车命令,系统即进入停止过程,待最后一台设备停止完毕后,整个系统又回到了初始状态,等待下一周期。
1)在初始阶段,系统各设备自检发生的故障 a.供电电源或设备不正常。b.设备控制状态是否选择自动方式。c.未排除故障。
2)起动故障常见起动故障为起动**时故障,即PLC驱动输出继电器动作,在正常时间内电动机未能相应起动。
3)运行故障在系统运行中,可能出现电动机过载跳闸、自动方式被人为改变、保护人身和设备安全的急停开关动作等突发性事件或故障。
以上故障和信号任一种出现,均应将PLC程序立即转入执行停止命令阶段,按程序设定停止生产流程,对于这种需立即中止生产过程的故障,称之为一类故障。在实际生产中还有另一种故障不需要立即停止生产流程,如除尘器,该类设备在整个生产流程中属于附属设备,如不运行也不会影响生产的正常进行,当其发生故障时,PLC系统可先停掉该设备并向操作员发出声、光报警信号,由总调度室指派维修人员进行设备检修而PLC系统可继续执行生产主流程程序,这类故障可称为二类故障
怎样来提高PLC程序运行速度,可以采用以下几种编程方法,仅供参考:
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——自复位按钮式输入(button)
sw——切换开关或自锁按钮输入(switch)
sig——传感器、编码等电平信号输入(**)
rly——输出继电器位(relay)
……
当然,这个根据个人习惯来,没有定则,主要是利于自己区分。
如有一个字类型变量名为 VarName,为使用的转换技巧,我们可以这样定义:
wVarName——VW2
dVarName——VD0
在程序初始化时将 VW0 清零(如果是不需要记忆的变量,直接将 dVarName 清零也可)或者在数据块中将 VW0 设置为零。则以后需要以字类型访问变量时就用 wVarName,需要以双字类型访问变量时就用 dVarName。完全不需要类型转换。
本方法可以较大的减少程序语句数,使程序更简洁、可读性更好,由于不需要做耗时的类型转换,程序运行效率也得到提高。且数学运算量越大,效率提高越明显。
缺点是要多占用两字节的内存,以后程序中不能使用 VW0。但 S7-200 的 RAM 空间很大,一般是用不完的,以 226 为例,有多达 10K 的 RAM,偶从来没有**过 1K。 这些 RAM 都是花钱买来的,不用白不用,不用也是浪费了。
同理,如果有字节型变量经常需要与字类型变量相互转换,让字节变量占用一个字的内存宽度浪费一个字节,避免类型转换。
以上就是提高PLC运行速度的编程方法