对网友求助问题的几个回帖展示之十六 点击:383 | 回复:4



wyb2866255

    
发表于:2012-03-08 07:58:22
楼主

           对网友求助问题的几个回帖展示之十六

 

   本文5例是近期在网上回答网友的求助帖,现展示给大家,如有不对之处,请给于指正,谢谢!

一、网友求助:西门子PLC VB10012VB10134,那么VW100是?,为什么?

 回复:

      如果PLC处于运行监控状态下看到的VB10012,是10进制数,它的16进制数为16#0CVB101显示为3416进制数为16#22,故VW10016进制数为16#C22,转换为10进制数为3106,即在运行监控状态下看VW100,其值显示为3106.

      为什么这样,因为S7-200PLC的存储器的内容,为整数,是以16进制数存在的,在监控下存储器对外显示却是人们习惯的10进制数,故 VB100作为独立字节显示为12时,其值=16#0CVB10作为独立字节显示为34时,其值=16#22。而VW100作为一个字,其高字节为16#0C,其低字节为16#22,其vw100的内容=16#0C22,转换为10进制数=3106,由于对外显示为10进制数,故显示值为3106”,而不是1234”0C22”

二、网友求助:有关S7-200 建立数组,然后查地址的方法问题----最近在设计一个控制算法,需要把一些数据提前做成数组(矩阵)的方式先存储下来,然后在CPU工作过程中,根据实时数据查询二维数组,我已经想到了用间接寻址的方法(基址+偏移量),涉及到指针操作,但是我如何才能获得我存储数组的第一个单元的地址,也就是基址呢?假如首存储单元就是VB0,以后的连续存储,VB1VB2...

   STL语言环境下可以用取地址符‘&’,解决,但是如何才能在梯形图中实现呢?

   回复:从实际程序中截取几段,供你参考:

1、确定数据区首址:将首地址送入VD90

2、将指针地址(*VD90)的内容送入存储区(VB350

3、送数完毕后,指针地址加1VD901),为下一次送数做好准备工作

    三、网友求助:在不知道传感器型号的时候,如何判别它是NPN型还是PNP型呢

回复:     

可以这样判断:在不接外负载时,用电压表测输出端对电源的负极的电压,当改变传感器的输出状态时,如电压表指示无变化,说明此传感器的晶体管输出是无负载的,其集电极是开路的,可用1~2K电阻,先并接输出点与电源负极,电压表并接电阻二端,改变传感器输入状态,如输出电压有变化,说明此传感器的输出是PNP型,如果没有变化,说明电阻接错了,再将电阻接输出与电源正极之间,再改变传感器的输入状态,此时电表指示应有变化,说明此传感器是NPN型晶体管输出。见下图:

      上左二个图为NPN型晶体管输出,负载(电阻)接输出端与电源正极为正确,改变输入状态,其输出状态随之改变。如电阻接在输出端与电源负极是错误的,当改变输入状态,其输出电压不变(恒=0)。

      上右二个图为PNP型晶体管输出,负载(电阻)接输出端与电源负极为正确,改变输入状态,其输出状态随之改变。如电阻接在输出端与电源正极是错误的,当改变输入状态,其输出电压不变(电阻电压恒=0)。

四、求助:西门子的plc最大存储单位是一个双字  32    移位指令可以对这32个位进行左移右移或者循环移位   但是现在我想对89个位进行操作  就是我想对89个位进行左移右移或者循环移位   苦思冥想  竟是没想出来什么方法   所以请教一下高人指点  这个能不能实现  要怎么实现  

回复   

下面是用S7-200编写的一次循环一位的3个双字(96位)循环左移程序,供大家参考。只要理解多双字移位编程的构思,对89位及 左右移位的编程都可以实现。

 

     补充说明:上面编程是对VD0~VD8三个双字的循环左移,即每按一下按钮(I0.0),VD0~VD8三个双字的内容将循环左移一位。

       再编写一个89位自身循环左移一位,且要求含有循环位的字节中不进行循环的其它位保持原值不变的编程程序:

     循环的89位地址为:最高位V0.0(VB0的最低位)VD1VD5二个双字(64位),VW9一个字(16位),VB118位)共89位,并要求VB0V0.1~V0.77位的数据保持不变。编好的程序如下:

    五、求助:组态王S上可以读取PLCS7-200的变量,可组态王不能给S7-200赋值,怎么回事?请知道的指点一二

    回复:这与组态王与它和S7-200的通讯变量设置有关,在组态王里如设置变量为自读,组态王可以读取PLCS7-200的该变量,而不能给该变量赋值,你可设置该变量为可读可写方式,就可就既能读又能写这一个变量。

网友又问:在PC ACCESS里设置的是一个字,读写;在组态王里是i/o整数,short,读写;又改试过浮点数也不行,不知道是通讯电缆、组态王还是PC ACCESS有问题,搞不明白

回复:一般组态王与S7-200的连线,就用S7-200编程时用的连接线,在组态王与S7-200 通信时,设备驱动选用PPI,而在对变量只在组态王里设定,如设定为读写方式,就可就既能读又能写这一个变量。



楼主最近还看过



chengmongsi

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 201回
  • 年度积分:0
  • 历史总积分:1389
  • 注册:2011年11月07日
发表于:2012-03-08 08:14:25
1楼

学习了,讲不很好。。。。。。。

LJPWXY2008 --王者之师

  • 精华:1帖
  • 求助:1帖
  • 帖子:3帖 | 589回
  • 年度积分:0
  • 历史总积分:4603
  • 注册:2008年6月15日
发表于:2012-03-11 09:14:49
2楼

楼主是个编程高手,学习了。

门徒

  • 精华:2帖
  • 求助:1帖
  • 帖子:28帖 | 689回
  • 年度积分:0
  • 历史总积分:3245
  • 注册:2011年9月22日
发表于:2012-08-01 18:25:02
3楼

对网友求助问题的几个回帖展示之一:http://bbs.gongkong.com/Details/201112/2011120414133000003-1.shtml

门徒

  • 精华:2帖
  • 求助:1帖
  • 帖子:28帖 | 689回
  • 年度积分:0
  • 历史总积分:3245
  • 注册:2011年9月22日
发表于:2012-08-01 18:28:37
4楼

对网友求助问题的几个回帖展示之一:http://bbs.gongkong.com/Details/201112/2011120414133000003-1.shtml

SSI ļʱ