西门子PID程序 西门子PLC 1200大全 和多台G120西门子变频器Modbud RTU通讯,带西门子触摸屏,带变频器参数/Modbus通讯报文,PID自写FB块无密码可以直接应用到程序,PID带手动自动功能,可手动调节PID, 注释详细
在自动化控制领域,西门子的产品组合为工程师们提供了强大而灵活的解决方案。今天就来详细讲讲如何实现西门子PLC 1200与多台G120西门子变频器通过Modbus RTU通讯,同时搭配西门子触摸屏,并自定义一个无密码限制、带手动自动功能且注释详细的PID FB块。
一、西门子PLC 1200与G120变频器Modbus RTU通讯
硬件连接
首先确保PLC 1200与G120变频器之间的物理连接正确。一般通过RS485接口进行连接,PLC 1200侧通常使用CM 1241 RS485通信模块。将变频器的485接口(如A+、B-)对应连接到CM 1241的相应引脚。
软件配置
在TIA Portal软件中进行如下操作:
- 添加设备:在项目中添加PLC 1200和变频器设备。对于变频器,需根据实际型号进行添加。
- 配置通讯:在PLC的硬件配置中,对CM 1241模块进行参数设置,设置波特率、奇偶校验等与变频器一致的通讯参数。
通讯代码示例
// 定义Modbus通讯功能块变量 VAR MB_COMM_LOAD : FB "MB_COMM_LOAD"; MB_MASTER : FB "MB_MASTER"; Error : Word; Status : Word; END_VAR // 初始化通讯 MB_COMM_LOAD( COMM_PORT := 2, // CM 1241端口号 BAUD := 9600, PARITY := "Even", RTS_ON_DLY := 0, RTS_OFF_DLY := 0, MAX_MSG_LEN := 256, ERROR => Error, STATUS => Status ); // 主站通讯 MB_MASTER( REQ := TRUE, // 触发一次通讯请求 MB_ADDR := 1, // 变频器地址 ID := 1, FUNC := 3, // 读取保持寄存器功能码 DB_NO := 10, // 数据存储DB块号 START := 40001, // 寄存器起始地址 NUM := 10, // 读取寄存器数量 ERROR => Error, STATUS => Status );在上述代码中,MBCOMMLOAD功能块用于初始化Modbus通讯端口,设置通讯参数。MBMASTER功能块用于发起通讯请求,这里以读取变频器保持寄存器为例,REQ触发请求,MBADDR指定变频器地址,FUNC为功能码,DB_NO指定数据存储的DB块,START和NUM确定读取的寄存器范围。
二、西门子触摸屏的集成
连接设置
将触摸屏通过以太网连接到PLC所在网络。在TIA Portal中,添加触摸屏设备,并建立与PLC的连接。配置触摸屏的IP地址与PLC处于同一网段。
界面设计
在触摸屏的画面设计中,可以创建以下元素:
- 手动自动切换按钮:用于切换PID控制的手动和自动模式。
- 手动调节滑块:在手动模式下,调节PID的输出值。
- 参数显示区域:显示变频器的实时参数,如频率、电流等。
三、自定义PID FB块
功能描述
这个自定义的PID FB块具备手动自动功能,能够方便地在两种模式下切换,并手动调节PID输出。
代码实现
// 输入输出接口定义 VAR_INPUT Setpoint : Real; // 设定值 ProcessValue : Real; // 过程值 ManualOutput : Real; // 手动输出值 ManualAutoSwitch : Bool; // 手动自动切换开关 SampleTime : Time := T#100MS; // 采样时间 Kp : Real := 2.0; // 比例系数 Ki : Real := 0.5; // 积分系数 Kd : Real := 0.1; // 微分系数 END_VAR VAR_OUTPUT PIDOutput : Real; // PID输出值 END_VAR VAR Error : Real; // 偏差 Integral : Real; // 积分项 PreviousError : Real; // 上一次偏差 LastTime : Time; // 上次采样时间 END_VAR // 计算偏差 Error := Setpoint - ProcessValue; // 手动模式处理 IF ManualAutoSwitch THEN PIDOutput := ManualOutput; ELSE // 自动模式 // 计算积分项 IF (T#0S < (TOD - LastTime)) AND ((TOD - LastTime) <= SampleTime) THEN Integral := Integral + Error * (Real_TO_TIME(SampleTime) / 1000.0); LastTime := TOD; END_IF; // PID计算 PIDOutput := Kp * Error + Ki * Integral + Kd * ((Error - PreviousError) / (Real_TO_TIME(SampleTime) / 1000.0)); PreviousError := Error; END_IF;在这段代码中,首先定义了输入输出接口,包括设定值、过程值、手动输出值、手动自动切换开关等。在手动模式下,直接输出手动设定值。自动模式下,按照PID控制算法,根据设定值与过程值的偏差,计算积分项,并最终得出PID输出值。
四、变频器参数与Modbus通讯报文
变频器参数设置
要实现与PLC的Modbus RTU通讯,需要在变频器中设置相关参数。比如设置通讯地址(与PLC通讯设置中的变频器地址一致)、波特率、奇偶校验等参数。以G120变频器为例,通过变频器的操作面板或者调试软件,进入参数设置界面进行相应设置。
Modbus通讯报文分析
以读取变频器频率为例,Modbus RTU报文格式如下:
- 地址域:变频器的地址,如0x01
- 功能码:读取保持寄存器功能码为0x03
- 起始地址:频率寄存器地址,如40001
- 寄存器数量:通常为1
- CRC校验:用于校验报文的正确性
通过分析和理解这些报文,能够更好地在PLC程序中进行数据的读写操作,确保与变频器的稳定通讯。
以上就是西门子PLC 1200与多台G120变频器Modbus RTU通讯、搭配触摸屏以及自定义PID FB块的详细实现过程,希望能对大家在自动化项目实践中有所帮助。