西门子S7200 PLC作为Modbus从站进行编程时,主要需要使用MBUS_INIT和MBUS_SLAVE指令。以下是具体的编程步骤和要点:
启用和初始化Modbus通讯
使用MBUS_INIT指令来启用和初始化Modbus通讯。该指令必须在每次扫描且EN(使能)输入打开时执行。可以在首次扫描时执行,或者通过边缘检测元素用脉冲打开EN输入。
配置通讯参数
模式:输入数值1将端口0指定给Modbus协议并启用协议;输入数值0指定给PPI,并禁用Modbus协议。
波特率:将波特率设为1200、2400、4800、9600、19200、38400、57600或115200。
地址:将地址设为1和247之间(包括1和247)的数值。
校验:校验参数被设为与Modbus主设备校验相般配。可接受的数值为:*0-无校验*1-奇数校验*2-偶数校验。
时延参数
时延参数用于延长标准Modbus信息结束超时条件。该参数的典型数值在有线网络上应为0。如果使用带有纠错功能的调制解调器,时延可设为50至100毫秒;如果使用扩展频谱无线电,时延可设为10至100毫秒。时延数值可以是0至32767毫秒。
MaxIQ参数
MaxIQ参数用于设置供Modbus地址00xxxx和01xxxx使用的I和Q点数,数值范围为0至128。
执行MBUS_SLAVE指令
在完成上述配置后,使用MBUS_SLAVE指令来处理Modbus从站的通讯。在使用MBUS_SLAVE指令之前,必须先正确执行MBUS_INIT指令,并在指令完成后立即设定"完成"位,才能继续执行下一条指令。
示例程序
```西门子
PROGRAM ModbusSlave
VAR
EN: BOOL;
MODE: INT;
BAUD: INT;
ADDR: INT;
CHECK: INT;
DELAY: INT;
MAXIQ: INT;
END_VAR
MBUS_INIT:
IF EN THEN
IF MODE = 1 THEN
SET PORT 0 TO MODBUS
ELSE
SET PORT 0 TO PPI
END_IF;
SET BAUD TO 9600;
SET ADDR TO 1;
SET CHECK TO 1;
SET DELAY TO 50;
SET MAXIQ TO 128;
SET "完成" TO TRUE;
END_IF;
END_PROGRAM
MBUS_SLAVE:
IF "完成" THEN
-- 处理Modbus从站通讯的代码
END_IF;
END_PROGRAM
```
在这个示例中,`EN`是一个使能信号,`MODE`用于选择通讯协议,`BAUD`是波特率,`ADDR`是Modbus地址,`CHECK`是校验类型,`DELAY`是时延参数,`MAXIQ`是I和Q点数。`MBUS_INIT`指令在每次扫描且`EN`输入打开时执行,完成初始化后设置"完成"位,然后执行`MBUS_SLAVE`指令处理Modbus通讯。
请根据实际的硬件配置和通讯需求调整上述程序中的参数。