产品描述
西门子宁波PLC模块总代理
恒温控制装置梯形图
四、控制程序及说明
控制系统软件用程序语言描述系统的工作任务。结合恒温水箱的工作内容。程序有以下两大任务。
(1)完成系统设置,完成传感器送来数据的处理,并转化为系统工作所需格式,安排输出数据的工作方式等。本例中指扩展模块工作状态的设置及检查,三处温度及流量值的读人与处理,显示机构的安排等。本项工作类似于系统工作前的准备。
(2)系统正常工作时的调控过程。本例中指水泵、风机、阀门的控制过程。
经删减简化的控制程序如图8-15~图8-17所示。由于程序内容较多,本例采用主子程序结构。其中主程序规划子程序的执行。子程序0完成系统初始化,子程序1完成模块检查,子程序2为输人数据的处理,子程序3完成系统的调节控制过程,子程序4为输出显示。以上子程序中,从任务出发分类,只有子程序3是属于任务2的。其余均为任务1的。
以上程序中,子程序0初始化完成了数据区清零,设置采样次数及设置高速计数器的工作。高速计数器是PLC配置的用于机外高频脉冲计数的计数器,本例中流量脉冲从I0.0口中输入PLC,由高速计数器统计单位时间的脉冲数并换算为流量
子程序3中的温度控制方法主要是比较指令.这在数据控制中是很常见的。
子程序4为加热及显示控制。本例中加热功率的大小为PLC模拟量输出电压控制。本例采用了查表法PID。这里的表指的是由加热装置的触发特性及PID控制要求设定的一组数据,数据的选择由温差控制。因而子程序4中有温度差计算及乘2的内容。查表则指由温度差决定的送数大小,大小不同的数送到模拟量输出单元后即可使图8-14中转换单元输出不同的功率。
子程序4中温度、流量及功率的显示是分时的。这主要通过移位指令实现。另外报警有关程序已略去。
虽经简化,程序仍较长,为了方便阅读,特将程序中所用存储单元用途列表如表8-8所示。
表8-8 恒温水箱程序中使用的主要存储单元
1 简述
Modbus寄存器分为四种,如表1.1所示:
表1.1 寄存器分类
寄存器种类 | 数据类型 | 访问类型 | 功能码 | PLC地址 | 寄存器地址 |
---|---|---|---|---|---|
线圈寄存器 | 位 | 读写 | 01H 05H 0FH | 00001-09999 | 0000H-FFFFH |
离散输入寄存器 | 位 | 只读 | 02H | 10001-19999 | 0000H-FFFFH |
输入寄存器 | 字 | 只读 | 04H | 30001-39999 | 0000H-FFFFH |
保持寄存器 | 字 | 读写 | 03H 06H 10H | 40001-49999 | 0000H-FFFFH |
2 常用功能码
Modbus中常用的功能码有8个,可以分为位操作和字操作两类,如表2.1所示:
表2.1 常用功能码
功能码 | 描述 | PLC地址 | 寄存器地址 | 位/字操作 | 操作数量 |
---|---|---|---|---|---|
01H | 读线圈寄存器 | 00001-09999 | 0000H-FFFFH | 位操作 | 单个或多个 |
02H | 读离散输入寄存器 | 10001-19999 | 0000H-FFFFH | 位操作 | 单个或多个 |
03H | 读保持寄存器 | 40001-49999 | 0000H-FFFFH | 字操作 | 单个或多个 |
04H | 读输入寄存器 | 30001-39999 | 0000H-FFFFH | 字操作 | 单个或多个 |
05H | 写单个线圈寄存器 | 00001-09999 | 0000H-FFFFH | 位操作 | 单个 |
06H | 写单个保持寄存器 | 40001-49999 | 0000H-FFFFH | 字操作 | 单个 |
0FH | 写多个线圈寄存器 | 00001-09999 | 0000H-FFFFH | 位操作 | 多个 |
10H | 写多个保持寄存器 | 40001-49999 | 0000H-FFFFH | 字操作 | 多个 |
3 读线圈寄存器(01H)
功能码01H读取Modbus从机中线圈寄存器的状态,可以是单个寄存器,或者多个连续的寄存器。
假设从机地址为01H,读取的线圈寄存器的起始地址为0017H,读取38个寄存器,指令如表3.1所示:
表3.1 读线圈寄存器指令:
从机地址 | 功能码 | 起始地址 | 起始地址 低位 | 寄存器数量 高位 | 寄存器数量 低位 | CRC高位 | CRC低位 |
---|---|---|---|---|---|---|---|
01 | 01 | 00 | 17 | 00 | 26 | 0D | D4 |
各线圈的状态与数据内容的每个bit对应,1代表ON,0代表OFF。如果查询的线圈数量不是8的倍数,则在最后一个字节的高位补0。
表3.2.1 读线圈状态的返回结果
从机地址 | 功能码 | 返回字节数 | 数据1 | 数据2 | 数据3 | 数据4 | 数据5 | CRC高位 | CRC低位 |
---|---|---|---|---|---|---|---|---|---|
01 | 01 | 05 | CD | 6B | B2 | 0E | 1B | 44 | EA |
其中,**个字节CDH对应线圈0017H到001E的状态,转为二进制是11001101,其中bit0对应0017H,bit7对应001E,如表3.2.2所示:
表3.2.2 线圈0017H到001EH的状态
001EH | 001DH | 001CH | 001BH | 001AH | 0019H | 0018H | 0017H |
---|---|---|---|---|---|---|---|
1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 |
ON | ON | OFF | OFF | ON | ON | OFF | ON |
最后一个字节为1BH,对应线圈0037H到003CH的状态,转为二进制是00011011,其中bit0对应0037H,bit5对应003CH,其余两位用0填充,如表3.2.3所示:
表3.2.3 线圈0037H到003CH的状态
003CH | 003BH | 003AH | 0039H | 0038H | 0037H | 0036H | 0035H |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
填充 | 填充 | OFF | ON | ON | OFF | ON | ON |
产品推荐