欢迎来到朵拉利品网
知识中心
资讯
  • 资讯
  • 产品
  • 供应商
您的位置: 朵拉利品网 >  知识中心 > 西门子plc数组 西门子PLC数据块中的数组如何创建?
西门子plc数组 西门子PLC数据块中的数组如何创建?
2019-07-04 09:06:06 来源:朵拉利品网

1, 西门子PLC数据块中的数组如何创建?



1. 新建一DB块,建块时选择“Shared DB”。
2. 新建的DB块中有DB_VAR变量,默认的类型(Type)好像是INT,直接修改该变量的属性就可以了。
3. 在INT上点右键,选择Complex Types→ARRAY。
4. 之后变量类型就变成ARRAY[]了,在中括号中写入1..20,表示数组从DB_VAR[1]开始,到DB_VAR[20]结束。
5. 接着在ARRAY[1..20]下面一行点右键,选择Elementary Types→INT,这样一个INT量的一维数组就建好了。

3, 西门子PLC数据类型



bool 布尔量 就是开关量 只有 0,1
byte 字节
word 字 16位整数
dword 双字 32位整数
int 带符号16位整数
dint 带符号32位整数
real 浮点数 实数 32位
适配器 就是plc 和电脑的 连接线 例如 MPI电缆
以s7300为例:S7-300的数据类型分以下三种:基本数据类型、复合数据类型和参数类型。
一、基本数据类型 1、位(bit)
常称为BOOL(布尔型),只有两个值:0或1。如:I0.0,Q0.1,M0.0,V0.1等。 2、字节(Byte)
一个字节(Byte)等于8位(Bit),其中0位为最低位,7位为最高位。如:IB0(包括I0.0~I0.7位),QB0(包括Q0.0~Q0.7位),MB0,VB0等。范围:00~FF(十进制的0~255)。
3、字(Word)
相邻的两字节(Byte)组成一个字(Word),来表示一个无符号数,因此,字为16位。如:IW0是由IB0和IB1组成的,其中I是区域标识符,W表示字,0是字的起始字节。需要注意的是,字的起始字节(如上例中的“0”)都必须是偶数。字的范围为十六进制的0000~FFFF(即十进制的0~65536)。在编程时要注意,如果已经用了IW0,如再用IB0或IB1要特别加以小心。 4、双字(Double Word)
相邻的两个字(Word)组成一个双字,来表示一个无符号数。因此,双字为32位。如:MD100是由MW100和MW102组成的,其中M是区域标识符,D表示双字,100是双字的起始字节。需要注意的是,双字的起始字节(如上例中的“100”)和字一样,必须是偶数。双字的范围为十六进制的0000~FFFFFFFF(即十进制的0~4294967295)。在编程时要注意,如果已经用了MD100,如再用MW100或MW102要特别加以小心。
以上的字节、字和双字数据类型均为无符号数,即只有正数,没有负数。 5、16位整数(INT,Integer)
整数为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-32768~32767。 6、32位整数(DINT,Double Integer)
32位整数和16位整数一样,为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-2147483648~2147483647。 7、浮点数(R,Real)
浮点数为32位,可以用来表示小数。浮点数可以为:1.m*2e,其存储结构如图所示:
8、常数的表示方法 常数可以是字节、字或双字,CPU以二进制方式存储,也可以用十进制,十六进制ASCII码或浮点数形式来表示。如下图所示:
说明:(1)S5T#格式为:S5T#aD_bH_cM_dS_eMS,其中a,b,c,d,e分别是日,小时,分,秒和毫秒的数值,输入时可以省掉下划线,如表中所示。 (2)D#取值范围为:D#1990_1_1~D#2168_12_31。 二、复合数据类型
用户通过复合基本数据类型而生成就是复合数据类型。 复合数据类型包括以下几种: 1、数组(ARRAY)
将一组同一类型的数据组合在一起组成一个单位就是数组。
2、结构(STRUCT)
将一组同不同类型的数据组合在一起组成一个单位就是结构。 3、字符串(STRING)
字符串是由最多254个字符组成的一维数组。 4、日期和时间(DATE-AND-TIME)
用于存储年、月、日、时、分、秒、毫秒和星期的数据。占用8个字节,BCD编码。星期天代码为1,星期一~星期六代码分别是2~7。
如:DT#2004_07_15_12:30:15.200为2004年7月15日12时30分15.2秒。 5、用户定义的数据类型(UDT,User-Defined Data Types)
由用户将基本数据类型和复合数据类型组合在一起形成的数据类型。 可以在数据块DB和变量声明表中定义复合数据类型。 三、参数类型
是为在逻辑块之间传递参数的形参(Formal Parameter,形式参数)定义的数据类型。

4, 西门子300plc数组的使用,mw0中的值不停的变化,怎样将mw0的值存...



西门子step7中的MOVE指令按照字节、字、双字的方式MOVE。MB0代表0这个字节,从m0.7排到m0.0,置位的是m0.0和m0.3,那么就是MB0=00001001,把这个数MOVE给MB0就可以了。
置位/复位指令根据RLO的值,来决定被寻址位的信号状态是否需要改变。若RLO的值为
被寻址位的信号状态被置1或清0;若RLO是0,则被寻址位的信号保持原状态不变。对于置位操作,一旦RLO为1,则被寻址信号(输出信号)状态置1,即使RLO又变为0,输出仍保持为1;对于复位操作,一旦RLO为1,则被寻址信号(输出信号)状态置0,即使RLO又变为0,输出仍保持为0。
语句表STL表示的置位/复位指令
R Reset 复位指令
S Set 置位指令
梯形图LAD表示的置位/复位指令
---( S ) Set Coil 线圈置位指令
---( R ) Reset Coil 线圈复位指令
SR Set-Reset Flip Flop 复位优先型SR双稳态触发器指令
RS Reset-Set Flip Flop 置位优先型RS双稳态触发器指令

5, 西门子PLC数据问题



如果双字DB100.DBD0为0,那么DB100.DBX0.0是否也为0
是的,DBX0.0~DBX3.7均为0
当DB100.DBD0为1时,是否DB100.DBX0.0也为1
不是,DBD0由DBB0~DBB3组成,DBB3为最低字节,因此DBX3.0才是为1
当DB100.DBD0为0和1以外的数值时,DBD100.DBX0.0全为0呢?
那取决于你以外的数值的值,需要转换为二进制进行分析。

6, 西门子PLC Any是什么数据类型呢



ANY和VARIANT都是指针型数据类型,西门子300/400/1500支持ANY类型,1200/1500支持VARIANT类型。
ANY 类型的参数指向数据区的起始位置,并指定其长度。 ANY 指针使用存储器中的 10 个字节。
VARIANT 类型的参数是一个可以指向不同数据类型变量(而不是实例)的指针。VARIANT 指针可以是一个元素数据类型的对象,例如 INT 或 REAL。 也可以是一个 STRING、DTL、STRUCT 数组、UDT 或 UDT 数组。 VARIANT 指针可以识别结
构,并指向各个结构元素。 VARIANT 数据类型的操作数在背景 DB 或 L 堆栈中不占用任何空间。 但是,将占用 CPU 上的存储空间。
VARIANT 类型的变量不是一个对象,而是对另一个对象的引用。 VARIANT 类型的各元素只能在函数的块接口中声明。 因此,不能在数据块或函数块的块接口静态部分中声明,例如,因为各元素的大小未知。 所引用对象的大小可以更改。

7, 西门子plc数据传送计算问题



在西门子PLC中,VD0是由VW0和VW2组成,而VW0是高16位,VW2是低16位,
其中VW0又是由VB0和VB1组成,其中VB0是VW0的高8位,VB1是VW0的低8位,
其中VW2是由VB2和VB3组成,其中VB2是VW0的高8位,VB3是VW0的低8位,
VB0是由8个位组成的,其中VB0.0是最低位,VB0.7是最高位
VB1也是由8个位组成的,其中VB1.0是最低位,VB1.7是最高位
VB3和VB4的规律同上
那么VD0就是由VB0,VB1,VB2,VB3,组成的,VB0是最高8位,VB3是最低的8位
用位来表示就是,VB0.7-VB0.0 ,VB1.7-VB0.0 ,VB2.7-VB2.0 ,VB3.7-VB3.0
可以看到VB0.7是VD0的最高位,VB3.0是VD0的最低位,共32位
那么按照你的问题,将1这个数值传到VW1中,由于VW1是由VB1(高8位)和VB2(低8位)组成,所以这个1是被存储在VB2的最低位,也就是VB2.0这个位上,
那么这时你看VD0的数值用16进制数应该是16#00000100;(注意16进制每两个数占用1个VB字节)
10进制数就是256;