嫩叶草回家旧址图片高清_免费18款深夜禁用黄尿入口_禁止18勿入的30000部芒果

  • IIANews微官网
    扫描二维码 进入微官网
    IIANews微信
    扫描二维码 关注微信
    移动客户端
  • English
2024全景工博会
I/O 设备

程序运行提速 PLC编程优化

  2009年11月05日  

     通过本方法优化可以极大的减少程序语句数,使程序更简洁、可读性更好,由于不需要做耗时的类型转换,程序运行效率也得到提高。且数学运算量越大,效率提高越明显。

     缺点是要多占用两字节的内存,以后程序中不能使用VW0。但S7-200的RAM空间很大,一般是用不完的,以226为例,有多达10K的RAM,偶从来没有超过1K。这些RAM都是花钱买来的,不用白不用,不用也是浪费了。

     同理,如果有字节型变量经常需要与字类型变量相互转换,让字节变量占用一个字的内存宽度浪费一个字节,避免类型转换。具体步骤如下:

     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——-传感器、编码等电平信号输入(signal)

     rly——-输出继电器位(relay)

     ……

     当然,这个根据个人习惯来,没有定则,主要是利于自己区分。 
    
     假如有一个字类型变量名为VarName,为使用前面的转换技巧,我们可以这样定义:

     wVarName————VW2

     dVarName————VD0

     在程序初始化时将VW0清零(如果是不需要记忆的变量,直接将dVarName清零也可)或者在数据块中将VW0设置为零。

     则以后需要以字类型访问变量时就用wVarName,需要以双字类型访问变量时就用dVarName。完全不需要类型转换。   关于第3点"使用SET指令只执行一次即可,不必每次扫描都执行这个指令,有些工程人员忽视了这个问题,使用了常规的方法来驱动SET指令,无意中增加了PLC程序扫描运行时间"不是很理解,能不能说得细一点。

     1:如果在ob里编写子程序段,是扫描的,但是如果您编写为FC调用,那么在FC的调用条件没有满足时,FC中的程序暂时不执行。这也是我所说节省时间的意思。

     2:PLC的执行步数根据程序长短会不同,扫描时间会根据执行步数的不同而不同,如果用一个mov指令完成8个数字量输出的控制,当然比用8个mov指令完成8个数字量输出的控制所需要的程序步数少。

     3:避免了类型转换,方法如下:

    以S7-200为例,它的内存格式与我们常用的PC机正好相反,它是高字在前,低字在后的。所以我们可以将字变量放在后两个字节,在程序初始化时将前两个字节清零(程序的其它地方不得使用这两个字节)。

     如我们定义符号时将字变量定义在VW2,同时保持VW0的值为零。则程序中可以用VW2以字型访问该变量,同时也可以VD0以双字型访问,避免了类型转换。

     为了避免使用时混淆,最好以明确的符号定义来区分字类型和双字类型。在此强烈推荐类匈牙利命名法:以前缀指示变量类型,用首字母大写的有意义的英文单词的组合作变量名。本人习惯用以下缀:b————字节型变量(byte)

     w————字型变量(word)

     d————双字变量(double)

     r————实型变量(real)

     f————位变量(flag)

     btn——-自复位按钮式输入(button)

     sw————切换开关或自锁按钮输入(switch)

     sig——-传感器、编码等电平信号输入(signal)

     rly——-输出继电器位(relay)

     ……   当然,这个根据个人习惯来,没有定则,主要是利于自己区分。

     假如有一个字类型变量名为VarName,为使用前面的转换技巧,我们可以这样定义:

     wVarName————VW2

     dVarName————VD0

     在程序初始化时将VW0清零(如果是不需要记忆的变量,直接将dVarName清零也可)或者在数据块中将VW0设置为零。则以后需要以字类型访问变量时就用wVarName,需要以双字类型访问变量时就用dVarName。完全不需要类型转换。

     本方法可以极大的减少程序语句数,使程序更简洁、可读性更好,由于不需要做耗时的类型转换,程序运行效率也得到提高。且数学运算量越大,效率提高越明显。

     缺点是要多占用两字节的内存,以后程序中不能使用VW0。但S7-200的RAM空间很大,一般是用不完的,以226为例,有多达10K的RAM,偶从来没有超过1K。这些RAM都是花钱买来的,不用白不用,不用也是浪费了。

     同理,如果有字节型变量经常需要与字类型变量相互转换,让字节变量占用一个字的内存宽度浪费一个字节,避免类型转换。

标签:PLC  我要反馈
最新视频
研祥智能AI无风扇工业控制器M60C   
ifm传感器课堂:IO-Link主站AL1X0X与Profinet通讯组态演示   
TE 成就稳定、高效的新能源储能系统
研祥金玛
专题报道
2024全景工博会
2024全景工博会 2024工博会以“工业聚能 新质领航”为全新主题,旨在瞄准我国新型工业化高质量发展的核心技术和重点领域,为产业转型升级提供良好的示范样板。
企业通讯
《我们的回答》ABB电气客户故事
《我们的回答》ABB电气客户故事

全球能源格局加速重构的今天,怎样走好复杂且极具挑战的电气化转型之路?如何用创新技术实现更多电力和更低排放,从而创造美好世

开关电源在设备升级中的性能影响和选型技巧
开关电源在设备升级中的性能影响和选型技巧

随着《中国制造2025》等政策的推进,新一代工业浪潮来临,工控行业迅猛发展,自动化设备需求与日俱增。众所周知,电源是设备

在线会议
热门标签

社区

于都县| 贵州省| 北海市| 永仁县| 诏安县| 建昌县| 蕲春县| 邹城市| 赣州市| 澜沧|