S7-200编程小技巧 点击:34209 | 回复:331



xiaolifeidao

    
  • 精华:28帖
  • 求助:0帖
  • 帖子:130帖 | 357回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2005-09-29 10:24:00
楼主
西门子的 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 都是花钱买来的,不用白不用,不用也是浪费了。 同理,如果有字节型变量经常需要与字类型变量相互转换,让字节变量占用一个字的内存宽度浪费一个字节,避免类型转换。



Aerk

  • 精华:0帖
  • 求助:1帖
  • 帖子:32帖 | 171回
  • 年度积分:0
  • 历史总积分:394
  • 注册:2007年5月16日
发表于:2011-02-12 15:56:20
261楼

向楼主学习 写的不错

cliff1977

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 21回
  • 年度积分:0
  • 历史总积分:758
  • 注册:2007年12月11日
发表于:2011-02-20 11:08:48
262楼

 空间换时间,受益非浅。向楼主学习!!

一路前行

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 73回
  • 年度积分:0
  • 历史总积分:263
  • 注册:2010年6月21日
发表于:2011-02-20 19:43:06
263楼

好     顶       !

一路前行

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 73回
  • 年度积分:0
  • 历史总积分:263
  • 注册:2010年6月21日
发表于:2011-03-05 19:42:39
264楼

挺好的…

 

shuying4146

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2011年3月12日
发表于:2011-03-12 11:29:57
265楼
好,学习一下!留了,为了将来用!

wuusing

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:41
  • 注册:2011年3月24日
发表于:2011-03-28 12:43:23
266楼
不错,值得学习!!!!!!!!!!!

JIAHUIXIAOQING

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 70回
  • 年度积分:0
  • 历史总积分:267
  • 注册:2009年2月11日
发表于:2011-03-28 14:56:09
267楼
学习了@@@@@@@@@@@@

chenfuyou20

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 106回
  • 年度积分:0
  • 历史总积分:473
  • 注册:2008年3月25日
发表于:2011-03-28 16:20:52
268楼
很好,不错,好方法,我虽然发现了这一现象,就是没有想起来在程序中应用。

yanhao85

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2010年10月08日
发表于:2011-05-14 15:42:12
269楼

楼主经验之谈,鼎力支持,好!

其啸宜歌

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 16回
  • 年度积分:0
  • 历史总积分:106
  • 注册:2008年3月08日
发表于:2011-05-14 16:03:36
270楼
Nice,day day up.

ipv6_xp

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 8回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2010年11月18日
发表于:2011-05-23 18:49:15
271楼
有点深奥~~~看不太懂……

lhy781016

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:54
  • 注册:2011年6月04日
发表于:2011-06-07 15:48:41
272楼
使用WD系列PLC扩展模块无需对PLC进行任何编程操作,就可以象使用PLC自己内部资源一样。甚至比使用PLC自己本身扩展模块还要简单、方便。
系统容量:
56点输入,56点输出,18路10位AD,14路10位DA
系统组成:
1.主控模块(RS485通讯,8点IN,8点OUT,2路AD,2路DA),一个系统中有且仅有一个主控模块。
2.输入模块(16点IN ),一个系统中可以有或者无输入模块,最多可接3个输入模块。
3.输出模块(16点OUT ),一个系统中可以有或者无输出模块,最多可接3个输出模块。
4.AD模块(4路AD ),一个系统中可以有或者无AD模块,最多可接4个AD模块。
5.DA模块(4路DA ),一个系统中可以有或者无DA模块,最多可接3个DA模块。
技术支持:
广州市新宏电子科技有限公司
地址:广州民营科技园科盛路1号
联系人:王先生 手机:13543452756 电话 /传真:020-62197003
邮箱:wdy0813@sohu.com QQ:107259514
网址:http://wdy0421.cn.alibaba.com

秋雪

  • 精华:1帖
  • 求助:2帖
  • 帖子:11帖 | 224回
  • 年度积分:0
  • 历史总积分:589
  • 注册:2002年11月20日
发表于:2011-06-28 07:43:55
273楼
学习了。谢谢。。。。。

ABC0755

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:24
  • 注册:2011年7月17日
发表于:2011-07-17 12:13:29
274楼
正在学习200 谢谢楼主

a710767920

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2009年8月07日
发表于:2011-07-22 11:08:40
275楼

很好的文章 受教了

 

xinghuaidong2011

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 81回
  • 年度积分:0
  • 历史总积分:253
  • 注册:2011年2月21日
发表于:2011-07-24 07:04:01
276楼
值得学习!受益非浅,学习.

jb70375536

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 14回
  • 年度积分:0
  • 历史总积分:41
  • 注册:2011年7月09日
发表于:2011-07-27 16:15:58
277楼

很好很好,学习了           

zhangmingjuans

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 19回
  • 年度积分:0
  • 历史总积分:79
  • 注册:2009年11月21日
发表于:2011-07-31 17:11:16
278楼
高手,有机会还要和你好好学学

wyoh

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 24回
  • 年度积分:0
  • 历史总积分:289
  • 注册:2011年7月24日
发表于:2011-08-04 20:49:55
279楼
不错 ,支持一下, 值得学习!

xiaogang0000

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 191回
  • 年度积分:0
  • 历史总积分:741
  • 注册:2009年12月13日
发表于:2011-08-05 08:08:59
280楼

挺好的  学习一下 正好刚刚到一个200


热门招聘
相关主题

官方公众号

智造工程师