本文给出一种可以避免使用这些指令的小技巧,使你的代码看起来更简洁,也缩程序的扫描周期。
就是在计算机编程中做算法设计时典型的以空间换时间的思想。比如一个字变量,在计算中经常要向双字变量转换,则我们在定义符号时让该变量占据双字的内存空间,将不用的字清零,则可同时以字型或双字型访问该变量而不需要进行专门的转换。
西门子S7-200plc的内存格式与我们常用的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的故障维修步骤
下一篇:西门子STEP7编程软件设置组件属性
推荐阅读





推荐帖子
- 超小型直流电源电压变换电路
-
lorant
移动便携
- 逻辑分析仪基础知识
- 现在示波器集成逻辑分析仪已经很风行,我觉得如果搭配强大的上位机软件的话还是很好用的,示波器只负责采集数据。下面来看看逻辑分析仪基础知识 逻辑分析仪基础知识
-
qq849682862
测试/测量
- 求三相波形发生方案
- 我需要做一个三相波形发生电路。请教诸位高手给个方向。我用过NE555产生波形再移相的方法。但是NE555产生的波形上大下小,移相后波形非常难看。。。。请问还有其他方法没有?求三相波形发生方案
-
西门
模拟电子
- 【小华HC32F4A0】RTT 命令行点亮LED灯
- 【小华HC32F4A0】初识工规级高性能开发板【小华HC32F4A0】零代码闪灯【小华HC32F4A0】RTT—UARTHelloworldhttp://bbs.eeworld.com.cn/thread-1232735-1-1.html在上面的的环境下,打开串口调试终端按Tab键,就可以呼出rtt的控制台:控制台初始化了pin,输入pin得到帮助: msh>pin pin[option] num:getpinnumberfrom
-
lugl4313820
国产芯片交流
- OpenCL相关资料分享
- OpenCL相关资料分享
-
chenzhufly
Altera SoC
- PFC+LLC拓扑,让功率从3000W提高到3600W,有啥思路没
- PFC+LLC拓扑,让功率从3000W提高到3600W,有啥思路没
-
西里古1992
电源技术