首先,在TIA Portal软件上新建一个SCL程序。然后,按照以下步骤进行编程:
[code]// 定义变量
VAR
// 统一的通讯参数类型
param : MODBUSRTU_PARAM := (
PORT := COM1,
BAUDRATE := 9600,
DATA_BITS := 8,
STOP_BITS := 1,
PARITY := PAR_NONE
);
// 定义一个浮点数类型的变量来存储电表的有功电能值
energy : REAL;
// 定义地址变量
address : WORD := 40001;
// 定义通讯地址
device_address : BYTE := 1;
END_VAR
// 主程序
MAIN
// 循环读取电表有功电能值
WHILE TRUE DO
// 读取电表数据
Read_From_ModbusRTU(
param := param,
device := device_address,
addr := address,
data := energy
);
// 前往下一块电表
address := address + 2; // 每个电表对应的地址号隔了一个地址
// 等待100ms,给串口缓冲区足够的时间来处理数据
DELAY := T#100MS;
END_WHILE;
END_MAIN[/code]
在这段代码中,我们使用MODBUS RTU通讯方式(即RS485)读取电表的有功电能。首先,我们定义了一个通讯参数类型`MODBUSRTU_PARAM`,其中设置了使用COM1端口、波特率为9600、数据位为8、停止位为1、奇偶校验为无。接下来定义了一个浮点数类型的变量来存储电表的有功电能值,一个地址变量以及一个通讯地址变量。在主程序中使用了一个while循环,不断读取电表数据,先是通过`Read_From_ModbusRTU`函数读取数据,然后将地址号加2以前往下一块电表。之后,我们在循环之间加入100ms的延迟,给串口缓冲区足够的时间来处理数据,避免数据出现错误。 |