一、基本数据类型
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位),0(包括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,形式参数)定义的数据类型。
这里简单介绍下西门子plc梯形图编程实例 使用西门子200smart PLC与电流表进行 Modbus RTU通讯
关于Modbus 通讯可自行查阅资料,这里不做过多赘述,不说废话直接开始。
1.接线
下图1. S7-200 SMART CPU 集成 RS485 端口的引脚分配
连接器 | 引脚标号 | 信号 | 引脚定义 |
1 | 屏蔽 | 机壳接地 | |
2 | 24V 返回 | 逻辑公共端 | |
3 | RS-485 信号 B | RS-485 信号 B | |
4 | 发送请求 | RTS (TTL) | |
5 | 5V 返回 | 逻辑公共端 | |
6 | + 5V | +5 V,100 Ω 串联电阻 | |
7 | +24V | +24 V | |
8 | RS-485 信号 A | RS-485 信号 A | |
9 | 不适用 | 10 位协议选择(输入) | |
外壳 | 屏蔽 | 机壳接地 |
下图2. 青智仪表ZW1619-RS485 端口的引脚分配
**需要注意的是,西门子PLC定义的RS485-A和-B与其他厂家定义不同;
这里需要将电流表端485A-PLC的3脚(B)、电流表端485B-PLC的8脚(A),交叉相连接。
2.设置电流表通讯参数
这里用的是默认参数,Modbus 规约RTU模式 通讯
参数 | 设置值 |
波特率 | 9600 |
数据位 | 8 |
校验位 | none |
停止位 | 1 |
从站地址 | 1 |
这里是寄存器地址
寄存器地址(十进制) | 存器地址(十六进制) | 数据名称 | 数据类型 |
4096 | 1000H | 单相电压值 | 浮点数 |
4098 | 1002H | 单相电流值 | 浮点数 |
4100 | 1004H | 单相功率值 | 浮点数 |
... |
以上参数及设置都可以从说明书中找到。
仪表说明书ZW1619,提取密码:1234 //pan./s/1WGgq67TQ6sCHXjvNbsVrYw
3.编写PLC程序
PLC做主站,这里直接调用 库文件>Modbus RTU Mater下的指令:
初始化主站,设置波特率,COM口等相关参数,具体设置可按F1查看帮助
2.发送请求,设置从站地址为1,读寄存器,读取起始地址设为44097(40001+十进制设备地址4096),数量为4,存入PLC地址&VB100;即VD100,4个双字节:
仪表寄存器地址 | 存入寄存器地址 | 存入V区地址 |
4096 | 44097 | VD100 |
4098 | 44099 | VD104 |
4100 | 44101 | VD108 |
4.调试PLC程序
写入PLC程序,打开状态图表监控
将VD40,赋值44097,V30.0、V30.1置为1 开始通讯测试
修改VD100、VD104等显示格式为:浮点数
PLC程序实例-电流表模块通讯,提取密码:1234 //pan./s/1lo6FjoBgZHy2wIqd5LWNUw
这里是电流表只支持 读取电流功能,所以仅有电流值可以读取到。
运行电机,监控到VD104有数值变化,与电流表示数相近,与电流表Modbus RTU通讯成功。