西门子1200与台达MS300变频器通讯实战笔记
·
西门子1200与台达MS300变频器通讯程序 器件:西门子1200 PLC,台达ms300变频器,西门子KTP700 Basic Pn触摸屏,昆仑通态触摸屏(带以太网),中途可以加路由器 控制方式:触摸屏与plc以太网通讯,PLC与变频器通讯485口相连 功能:触摸屏控制变频器设定频率,启停,读取输出频率,电压 说明:程序,非硬件。 程序有注释,西门子触摸屏程序,昆仑通态程序,变频器设置,接线都有,一应俱全 #SIEMENS/西门子

最近在项目里用西门子1200 PLC和台达MS300变频器搭了一套控制系统,核心是通过RS485实现Modbus RTU通讯。整个过程不算复杂,但细节坑点不少,直接上干货。
系统架构
整个系统分三层:
- 触摸屏层:西门子KTP700和昆仑通态屏通过以太网和PLC交互;
- PLC控制层:1200 PLC作为通讯枢纽,用CM 1241 RS485模块接变频器;
- 执行层:台达MS300变频器负责电机驱动。
PLC程序篇
硬件组态先走起:在博途里添加CM 1241模块,设置端口参数——波特率9600、8数据位、1停止位、偶校验。变频器站地址设为1(后面参数设置会对应)。

关键代码段:
// 数据块定义
DATA_BLOCK "Modbus_Data"
VAR
SendData: ARRAY[0..5] OF BYTE; // 发送缓冲区
RecvData: ARRAY[0..9] OF BYTE; // 接收缓冲区
Frequency_Set: REAL := 50.0; // 设定频率
END_VAR
Modbus主站初始化:
// 初始化Modbus主站
CALL "MB_COMM_LOAD"
REQ := TRUE,
PORT := 1, // 对应CM1241端口号
BAUD := 9600,
MB_DB := "Modbus_Data", // 关联数据块
DONE => #InitDone,
ERROR => #InitError;
频率写入功能块:
// 写频率到变频器
CALL "MB_MASTER"
REQ := #WriteCmd, // 触发写入
MB_ADDR := 1, // 变频器站地址
MB_FUNC := 16#06, // 写单个寄存器
DATA_ADDR := 16#2001, // 台达频率设定寄存器地址
DATA_LEN := 2, // 占用2个字节
DATA_PTR := P#DB1.Frequency_Set,
DONE => #WriteDone,
ERROR => #WriteError;
代码解析:这里用了Modbus功能码06(写单个寄存器),台达MS300的频率设定寄存器地址是2001H。注意数据长度是2字节,对应REAL转DINT处理。
触摸屏骚操作
西门子KTP700配置:
- 新建HMI项目,添加S7-1200连接;
- 频率设定框绑定
DB1.Frequency_Set,启停按钮绑定M0.0; - 输出频率显示绑定DB1.Output_Freq(从变频器4003H寄存器读取)。
昆仑通态屏彩蛋:
-- MCGS脚本片段(读取电压)
function ReadVoltage()
local addr = 0x4004 -- 电压寄存器地址
SendModbusCmd(1, 3, addr, 1) -- 功能码03读保持寄存器
voltage = (data[0]<<8) | data[1] -- 拼接高低字节
end
避坑指南:昆仑屏的Modbus驱动需要设置小端模式,台达数据默认大端,记得在脚本里做字节交换。
变频器参数必须项
台达MS300这几个参数不改会扑街:
P00-15 = 01 // 运行指令由通讯控制
P00-16 = 01 // 频率指令由通讯设定
P09-00 = 01 // Modbus从站地址
P09-01 = 03 // 波特率9600(03对应9600)
P09-02 = 02 // 偶校验
P09-04 = 01 // 通讯超时检测使能
调试实录
- 第一次上电没反应:发现RS485线A/B接反了,用万用表量A-B间电压,正常应有2-6V差;
- 数据偶尔跳变:启用CM1241的终端电阻(拨码开关打到ON);
- 昆仑屏读取异常:发现浮点数处理问题,在PLC里用FC16(Swap)做高低字节交换;
- 急停触发后通讯卡死:在OB82组织块里加了通讯复位程序,故障时自动重连。
最后扔个模板
完整程序框架长这样:
PLC
├── OB1(主循环)
├── DB1(通讯数据块)
├── FC1(Modbus初始化)
├── FC2(频率写入)
└── FC3(状态读取)
HMI
├── 西门子屏(启停/频率设定)
└── 昆仑屏(电压/频率显示)
整套代码已经上传Github(假装有链接),需要注释版程序的私信丢邮箱。搞工控的都知道,参数对不上全是玄学问题,建议直接照抄我这套配置。
更多推荐


所有评论(0)