对网友求助问题的几个回帖展示之十六
本文5例是近期在网上回答网友的求助帖,现展示给大家,如有不对之处,请给于指正,谢谢!
一、网友求助:西门子PLC VB100为12,VB101为34,那么VW100是?,为什么?
回复:
如果PLC处于运行监控状态下看到的VB100为12,是10进制数,它的16进制数为16#
为什么这样,因为S7-200的PLC的存储器的内容,为整数,是以16进制数存在的,在监控下存储器对外显示却是人们习惯的10进制数,故 VB100作为独立字节显示为12时,其值=16#
二、网友求助:有关S7-200 建立数组,然后查地址的方法问题----最近在设计一个控制算法,需要把一些数据提前做成数组(矩阵)的方式先存储下来,然后在CPU工作过程中,根据实时数据查询二维数组,我已经想到了用间接寻址的方法(基址+偏移量),涉及到指针操作,但是我如何才能获得我存储数组的第一个单元的地址,也就是基址呢?假如首存储单元就是VB0,以后的连续存储,VB1,VB2...
在STL语言环境下可以用取地址符‘&’,解决,但是如何才能在梯形图中实现呢?
回复:从实际程序中截取几段,供你参考:
1、确定数据区首址:将首地址送入VD90
2、将指针地址(*VD90)的内容送入存储区(VB350)
3、送数完毕后,指针地址加1(VD90加1),为下一次送数做好准备工作
三、网友求助:在不知道传感器型号的时候,如何判别它是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的最低位),VD1、VD5二个双字(64位),VW9一个字(16位),VB11(8位)共89位,并要求VB0的V0.1~V0.7的7位的数据保持不变。编好的程序如下:
五、求助:组态王S上可以读取PLCS7-200的变量,可组态王不能给S7-200赋值,怎么回事?请知道的指点一二
回复:这与组态王与它和S7-200的通讯变量设置有关,在组态王里如设置变量为自读,组态王可以读取PLCS7-200的该变量,而不能给该变量赋值,你可设置该变量为可读可写方式,就可就既能读又能写这一个变量。
网友又问:在PC ACCESS里设置的是一个字,读写;在组态王里是i/o整数,short,读写;又改试过浮点数也不行,不知道是通讯电缆、组态王还是PC ACCESS有问题,搞不明白
回复:一般组态王与S7-200的连线,就用S7-200编程时用的连接线,在组态王与S7-200 通信时,设备驱动选用PPI,而在对变量只在组态王里设定,如设定为读写方式,就可就既能读又能写这一个变量。
楼主最近还看过