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 都是花钱买来的,不用白不用,不用也是浪费了。 同理,如果有字节型变量经常需要与字类型变量相互转换,让字节变量占用一个字的内存宽度浪费一个字节,避免类型转换。



lxj1578

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 3回
  • 年度积分:0
  • 历史总积分:88
  • 注册:2003年11月02日
发表于:2009-04-03 20:38:32
221楼

学习中,多谢分享!!!!!

yu_lei

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 29回
  • 年度积分:0
  • 历史总积分:87
  • 注册:2009年3月25日
发表于:2009-04-03 20:43:47
222楼
好好使用,,.............

lwj0007

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 599回
  • 年度积分:0
  • 历史总积分:715
  • 注册:2009年1月09日
发表于:2009-04-05 12:18:04
223楼
 写的不错,收藏了,谢谢!

shengkun

  • 精华:0帖
  • 求助:5帖
  • 帖子:34帖 | 290回
  • 年度积分:0
  • 历史总积分:579
  • 注册:2007年8月27日
发表于:2009-04-05 14:00:07
224楼
henbucuo                                                      

yjdn

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 203回
  • 年度积分:0
  • 历史总积分:408
  • 注册:2007年3月19日
发表于:2009-04-06 00:55:14
225楼

受教了!!!!!!!!

rock佳

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 63回
  • 年度积分:0
  • 历史总积分:139
  • 注册:2006年4月02日
发表于:2009-04-06 19:54:07
226楼

rock佳

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 63回
  • 年度积分:0
  • 历史总积分:139
  • 注册:2006年4月02日
发表于:2009-04-06 19:56:06
227楼

意润泽

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 44回
  • 年度积分:1
  • 历史总积分:134
  • 注册:2005年7月02日
发表于:2009-04-07 15:04:10
228楼

       感谢分享!

zyuan

  • 精华:0帖
  • 求助:0帖
  • 帖子:21帖 | 79回
  • 年度积分:0
  • 历史总积分:227
  • 注册:2003年6月30日
发表于:2009-04-08 16:47:07
229楼

空间换时间的概念比较新颖.但是,每个人的编程风格不一样.对于编程人员来讲.自己编的程序可读性就好.别人编的再精简,若看不懂,还是比不过自家的.所以,我认为,条条大路通罗马,关键是你把工艺和程序匹配通.至于运行效率,S7-200也就完成些小任务.对于这个领域的工程,我们这些工控人,只管按自己的风格编去吧.若你编的程序别人看不懂,现场工作又非常好,你的工作和版权无形中受到了保护,这也是你的荣幸啊.

从另一个方面来回复楼主.

wenfeng2008

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2009年6月02日
发表于:2009-06-13 21:36:19
230楼

200的软件帮助里都有,不懂的可以找出来看看。

 

wenfeng2008

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2009年6月02日
发表于:2009-06-13 21:37:31
231楼
自学是比较困难,有个高手指点就好了

candao1985

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 13回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2009年7月02日
发表于:2009-07-08 10:27:00
232楼
值   得   学    习

xyl35

  • 精华:2帖
  • 求助:0帖
  • 帖子:5帖 | 75回
  • 年度积分:0
  • 历史总积分:130
  • 注册:2009年2月06日
发表于:2009-08-16 18:45:09
233楼

好东东,学习了!!!!

边干边学

  • 精华:1帖
  • 求助:0帖
  • 帖子:1帖 | 344回
  • 年度积分:0
  • 历史总积分:401
  • 注册:2008年12月04日
发表于:2009-08-17 14:34:33
234楼
以 226 为例,有多达 10K 的 RAM,偶从来没有超过 1K。 这些 RAM 都是花钱买来的,不用白不用,不用也是浪费了。

cyy19841214

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 6回
  • 年度积分:0
  • 历史总积分:138
  • 注册:2009年3月07日
发表于:2009-08-17 22:22:57
235楼
好啊,xuexi ,好东西

znnpizi

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2009年6月10日
发表于:2009-08-18 08:46:41
236楼

不错

有没有300跟400的编程小技巧啊

 

fgsd

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 24回
  • 年度积分:0
  • 历史总积分:46
  • 注册:2003年12月09日
发表于:2009-10-06 22:50:34
237楼
好文章!值得学习! 好文章!值得学习!

黎亮

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:100
  • 注册:2009年5月31日
发表于:2009-11-24 17:50:53
238楼

本人有一套VCC2008编程软件(中文)和s7-300编程中文软件提供 电话13787842037

 

e158521

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2009年12月27日
发表于:2010-01-09 08:48:31
239楼

感谢!这样的话!以后就用不到转换指令了!呵呵!

ZHAOQJIE

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2009年8月07日
发表于:2010-03-08 17:06:39
240楼
楼主能给介绍一下S7200告诉脉冲输出的应用吗?例子,资料都可以 zhaojie7710@139.com

热门招聘
相关主题

官方公众号

智造工程师