您的位置:控制工程论坛网论坛 » 教程与手册 » S7-200编程小技巧

常青树

常青树   |   当前状态:在线

总积分:1421  2025年可用积分:0

注册时间: 2008-09-28

最后登录时间: 2012-05-30

空间 发短消息加为好友

S7-200编程小技巧

常青树  发表于 2008/11/16 20:12:12      889 查看 2 回复  [上一主题]  [下一主题]

手机阅读

西门子的 S7-200 PLC 功能强大,性能可靠,但在做数学运算时不能象高级语言那样做变量类型自动转换,经常要手工做 BTI、ITD 之类的转换,计算完成后又要 DTI 等耗时的操作,而且使代码行数增加,程序可读性不好,也降低了程序运行的效率。 
   本文给出一种可以避免使用这些指令的小技巧,使你的代码看起来更简洁,也缩程序的扫描周期。

   就是在计算机编程中做算法设计时典型的以空间换时间的思想。比如一个字变量,在计算中经常要向双字变量转换,则我们在定义符号时让该变量占据双字的内存空间,将不用的字清零,则可同时以字型或双字型访问该变量而不需要进行专门的转换。
   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 都是花钱买来的,不用白不用,不用也是浪费了。
   同理,如果有字节型变量经常需要与字类型变量相互转换,让字节变量占用一个字的内存宽度浪费一个字节,避免类型转换。  
1楼 0 0 回复
  • 匿名

    匿名   |   当前状态:离线

    总积分:0  2025年可用积分:0

    注册时间: 0001-01-01

    最后登录时间: 0001-01-01

    空间 发短消息加为好友

    匿名   发表于 2008/11/16 17:05:13

    我公司一批库存,我以最优惠的价格销售,如果有需要者请来电


    厦门市狄豪自动化设备有限公司


    联系方式
    ------------------------------------------------------
    联系人:兰春福
    电话:+86-592-5529910 13779958853
    传真:+86-592-5529700
    QQ:1027860284
    E-mail:lanchunfu@163.com 



    BAUER           BK80X-12U/D16MA4-TOF-W K/Z075A8/SP
    FOXBORO         871FT-403D3C
    FOXBORO         871FT-4H3D3C-C
    FOXBORO         871FT-4G3D3C-3C
    FOXBORO 
    83W-T01S1SFTNA-H
    83F-TO2S1SFTNA-H
    83F-T1HS1SFTNA-H
    83S-T02TNA
    83S-TO3TNA
    83S-TO2TNA
    83S-TO3TNA
    METTLER TOLEDO (梅特勒)    
    TB600363-2
    TB600529-2
    TB600342


    BECKER          KVT  3.80
    BECKER          VT 440


    ACOPIAN  电源   B24G500-230


    电机 RELIANCE ELECTRIC FL  143TC 0.75
    泵 Ingersoll-Dresser


    电机 RELIANCE ELECTRIC XEX 182JM 3HP
    泵 FLOWSERVE  M3128


    电机 EMERSON 215JM 10HP
    泵 Ingersoll-Dresser D814


    电机 EMERSON 213JM 7.5HP
    泵 Ingersoll-Dresser D824


    电机 EMERSON EME 254JM 15HP
    泵 Ingersoll-Dresser D824


    电机 EMERSON 143JM 1HP
    泵 Ingersoll-Dresser D824


    电机 EMERSON 184JM 5HP
    泵 Ingersoll-Dresser D824
     
    电机 RELIANCE ELECTRIC FC 56C 3/4HP
    泵 Ingersoll-Dresser


    电机 BALDOR 37A03*56 7.5KW


    电机 RELIANCE ELECTRIC XE 364TSC 100HP


    电机 RELIANCE ELECTRIC XE 364TSC 60HP


    电机 RELIANCE ELECTRIC 112-M2 4KW
    泵 FLOWSERVE


    电机 RELIANCE ELECTRIC 213JM 7.5HP
    泵 FLOWSERVE D824


    电机 RELIANCE ELECTRIC 213JM 7.5HP
    泵 FLOWSERVE D824


    RELIANCE ELECTRIC
    Part Number:897'13-10 B
    Description: AC/AC CONVERTOR SA3000AC070


    电机 SEW DFV132M4-KS 10HP
    减速头 SEW EURODRIUE RXF97DV132M4-KS


    电机 SEW DFV132M4-KS 10HP
    减速头 SEW EURODRIUE RXF97DV132M4-KS


    电机 SEW DFV132M4-KS 10HP
    减速头 SEW EURODRIUE RXF97DV132M4-KS


    电机 SEW K127BN30HRLPX200 10HP
    减速头 SEW EURODRIUE RXF97DV132M4-KS


    电机 SEW W30DT80K 4BM0.1HR 0.75HP
    减速头 SEW EURODRIUE 4BM0.1HR


    电机 SEW W30DT80K 4BM0.1HR 0.75HP
    减速头 SEW EURODRIUE 4BM0.1HR


    电机 SEW DFT80N4 1HP
    减速头 SEW EURODRIUE SA57TD80N4


    电机 SEW DFT80N4 1HP
    减速头 SEW EURODRIUE SA57TD80N4


    电机 SEW DFT80K4BMG1NR 0.75HP
    减速头 SEW EURODRIUE FA47DT80K4BMG1HR


    电机 SEW DFT80K4BMG1NR 0.75HP
    减速头 SEW EURODRIUE FA47DT80K4BMG1HR


    电机 SEW DFT80K4BMG1NR 0.75HP
    减速头 SEW EURODRIUE FA47DT80K4BMG1HR


    电机 SEW DFT80K4BMG1NR 1.5KW
    减速头 SEW EURODRIUE SA67/TD80K4BMG1HR


    电机 SEW DT80N41BHG 0.75KW
    减速头 SEW EURODRIUE FA47DT80N41BHG
     
    电机 SEW DT80K41BMG 0.75KW
    减速头 SEW EURODRIUE S67DT80K41BMG


    电机 SEW DT80K41BMG 0.75KW
    减速头 SEW EURODRIUE S67DT80K41BMG


    电机 DANFOSS BK80X-12U/D16MA4-TOF-ZW 11KW
    减速头 DANFOSS BAUER GMBH Z075A9


    电机 DANFOSS DNK94/241-UB1.5-S2-2MIN 1.5KW
    减速头 DANFOSS BAUER GMBH ZKK010 A9


    电机 DANFOSS DNK94/241-UB1.5-S2-2MIN 1.5KW
    减速头 DANFOSS BAUER GMBH ZKK010 A9


    电机 DANFOSS SG4-31/D1A4-283M 2.2-S2-2MIN 2.2KW
    减速头 DANFOSS BAUER GMBH


    电机 DANFOSS SG4-31/D1A4-283M 2.2-S2-2MIN 2.2KW
    减速头 DANFOSS BAUER GMBH


    电机 DANFOSS BK20X-21V/DU09XA4-TOF-ZW/SP 2.2-S2-5MIN 2.2KW
    减速头 DANFOSS BAUER GMBH


    电机 DANFOSS SG4-21DK84-200L-UB 0.75-S2-5MIN 0.75
    减速头 DANFOSS BAUER GMBH


    电机 西门子 RGZVESD 5HP
    IWAKI MD-50
    IWAKI MD-30
    BAIDOR 215TC 7.5HP
    DODGE M3556T-50
    MARATHON 8VJ184TT1         FR-184T 5HP
    MARATHON FR-215T 10HP
    ABB  张力量测器 PFTL 101A 3BSE004160R1
    ZIMM SHZ-50-K-SS
    STEMMANN-TECHNIK   TYP:6261309 
    STEMMANN-TECHNIK   TYP:6261311
    SQUARE-D 安全开关  HU364AWK
    KOBOLD             KAL-KH-24VDC 
    SWAGELOK           SS-45S8-ID-KL-33C

    2楼 回复本楼

    引用 匿名 2008/11/16 17:05:13 发表于2楼的内容

  • wilton_gao

    wilton_gao   |   当前状态:离线

    总积分:123  2025年可用积分:0

    注册时间: 2008-01-16

    最后登录时间: 2009-09-29

    空间 发短消息加为好友

    wilton_gao   发表于 2008/11/16 20:12:12

    3楼 回复本楼

    引用 wilton_gao 2008/11/16 20:12:12 发表于3楼的内容

总共 , 当前 /