AI小西
热门搜索
1847工业学习平台PLC编程与计算机连接选型非接触雷达资料汇总压力仪表资料汇总

签到有奖

  • 移动端入口

  • 工业服务小程序
  • 支持中心移动端首页
  • AI小西-AI智能问答助手
  • SIEMENS工业找答案小程序
  • 工业培训与认证
  • 西门子工业1847俱乐部
  • SIEMENS工业技术支持与服务
@CurrentUser.EmailCount@

消息提醒

登录 | 注册
@CurrentUser.NickName@
1847会员:未开通
VIP等级 @CurrentUser.vipLevel@
西币
@CurrentUser.coin@
  • 我的支持中心
  • 我的1847会员
  • 我的技术论坛
  • 我的找答案
  • 我的下载中心
  • 我的售后服务
  • 我的培训认证
  • 我发的帖子
  • 我跟的帖子
  • 我的论坛设置
  • 论坛用户指南
  • 我的下载中心
  • 我的培训认证
  • 我的提问
  • 我的回答
  • 已经帮助了@CurrentUser.allAnswercount@人我要回答
  • 已连续活跃@CurrentUser.allLoginDayCount@天我要提问
  • 首次回答问题获得双倍西币积分
  • 个人设置
  • 退出
  • 首页
  • 技术支持
    • 技术支持
    • AI小西
    • 风驰卡
    • 产品入门
    • 在线产品选型
  • 售后服务
    • 售后登记和质保查询
    • 备件商城
    • ASP工程师验证
    • ASP公司证书验证
    • 售后服务常见问题
  • 下载中心
    • 首页
    • 售前文档(样本、宣传册等)
    • 售后文档(FAQ、手册等)
  • 工业学习平台
    • 首页
    • 了解会员权益
    • 立即开通1847会员
  • 培训认证
    • 首页
    • 教室培训课
    • 取证训练营
    • 在线自学课
    • 认证证书查询
    • 培训伙伴验证
  • 技术论坛
    • 首页
    • 最新发帖
    • 精华帖
    • 发新帖
  • 找答案
    • 首页
    • 已解决问题
    • 精华常见问题
    • 发布新问题

官方商城

  • 西门子中国
  • 技术支持与服务首页
    我的支持中心
    下载中心首页
    全球技术资源
    1847工业学习平台
    产品入门新手必读
    找答案
    技术论坛
    售后服务
    网络资源新手必读
    高级搜索
  • 技术论坛
    论坛公告
    论坛使用指南
    最新发帖
    精华帖
    分享帖
    高赞帖
    热门帖
    高端推荐帖
    最高收藏帖
  • 自动化系统 / SIMATIC S7-300/400
  • 网上找到的用C语言编写的PID

技术论坛

 • 产品分类
自动化系统
  • SIMATIC S7-1500系列 
  • SIMATIC S7-1200系列 
  • SIMATIC S7-200
  • SIMATIC S7-200 SMART 
  • SIMATIC S7-300/400 
  • 通信与网络组件
  • Profinet技术开发专区
  • 工业边缘计算
  • SIMATIC WinCC / Panel 
  • SIMATIC WinCC OA (原PVSS)
  • DCS/SIMATIC PCS7
  • IPC/PG
  • LOGO!
  • 物联网(IOT)
  • 工业电源
驱动技术
  • SINAMICS 
  • SINAMICS S200 
  • 直流调速器
  • 电机
  • SIMOTION
  • MicroMaster
  • 驱动技术综合产品
  • MasterDrives 
  • DCMA 变频器健康管家 维护智库
数控系统
  • SINUMERIK 
  • SIMODRIVE
低压电气
  • 低压电气
  • 低压数字化
传感器与通讯
  • 过程仪表
  • 分析仪器
  • 工厂传感器
谈天说地
  • 谈天说地
 • 咱工程师的故事
咱工程师的故事
  • 网友专栏 
  • 工程师随笔
1847大咖专栏
  • 崔工谈博途与PLC
  • PROFINET工业通信详解
  • 冯工聊工业网络
  • 电磁兼容问题及处理
  • 大咖专栏合集
特别专题
  • 专家大讲堂课后探讨
  • 西门子工业1847俱乐部
  • 特别专题合集
 • 培训与认证答疑专区
培训与认证答疑专区
  • PLC编程精英训练营
  • MA 小型自动化系统
  • WinCC系统开发工程师精英训练营
  • V90精英训练营
  • WinCC精英训练营
  • S7-1200精英训练营
  • G120变频器精英训练营
  • S7-200SMART精英训练营
 • 服务合作伙伴专区
服务合作伙伴专区
  • FA合作伙伴共创社区
  • Networks and Communication
  • GMC蓝黄带考试-G120
  • GMC蓝黄带考试-V90
  • GMC 合作伙伴专区

网上找到的用C语言编写的PID

thomas_top

西门子1847工业学习平台

  • 帖子

    1752
  • 精华

    3
  • 被关注

    36

论坛等级:奇侠

注册时间:2005-07-12

钻石 钻石 如何晋级?

网上找到的用C语言编写的PID

42

1

2026-01-21 09:29:33

fb58pid.zip



//VAR_INPUT

#ifndef TRUE

  #define TRUE 0x01

#endif 

#ifndef FALSE

  #define FALSE 0x00

#endif 

float    PV_IN = 0.0 ;   //过程变量输入

//可以在“过程变量输入”输入端设置初始值,或者也可以连接到浮点数格式的外部过程变量上。

int      PV_PER  = 0 ;      //外围设备过程变量 外围设备I/O 格式的过程变量连接到控制器的“外围设备过程变量”输入端。

float    DISV = 0.0 ;   //干扰变量 对于前馈控制,干扰变量连接到“干扰变量”输入端。

unsigned char    INT_HPOS = FALSE ; //积分作用保持在正方向 积分作用的输出可以锁定在正方向。为此,INT_HPOS 输入端必须设置成TRUE。在级联控制中,主控制器的INT_HPOS 互连到次级控制器的QLMN_HLM。

unsigned char    INT_HNEG = FALSE ; //积分作用保持在负方向

//积分作用的输出可以锁定在负方向。为此,INT_HNEG 输入端必须设置成TRUE。在级联控制中,主控制器的INT_HNEG 互连到次级控制器的QLMN_LLM。

int    SELECT = 0 ;      //调用PID 和脉冲发生器的选项

//如果激活了脉冲发生器,则有几种方法可用于调用PID 算法和脉冲发生//器:

//. SELECT =0:在一个快速周期性中断级中调用控制器,并处理PID算法和脉冲发生器。

//. SELECT =1:在OB1 中调用控制器,并且只处理PID 算法。

//. SELECT =2:在一个快速周期性中断级中调用控制器,并只处理脉冲发生器。

//. SELECT =3:在一个慢速周期性中断级中调用控制器,并只处理PID 算法。

//END_VAR

//VAR_OUTPUT

float    PV = 0.0 ;   //过程变量   有效的过程变量在“过程变量”输出端输出。

float    LMN = 0.0 ;   //可调节变量 可调节变量的有效值以浮点数格式, 在“可调节变量”输出端输出。

int    LMN_PER = 0 ;      //外围设备操作可调节变量 外围设备格式的可调节变量值连接到控制器的“外围设备操作可调节变量”输出端。

unsigned char    QPULSE = FALSE ; //输出脉冲信号 可调节变量的值是在QPULSE 输出端调制的输出脉冲宽度。

unsigned char    QLMN_HLM = FALSE ; //达到可调节变量的上限 可调节变量的值始终限制在上限和下限范围之内。当超过了上限时,通过QLMN_HLM 输出端进行指示。

unsigned char    QLMN_LLM = FALSE ; //达到可调节变量的下限 可调节变量的值始终限制在上限和下限范围之内。当超过了下限时,通过QLMN_LLM 输出端进行指示。

unsigned char    QC_ACT = TRUE ;  //下一个循环周期,连续控制器继续工作

//该参数指示在下一个块调用时是否执行连续控制器环节(只有当SELECT 具有数值0 或1 时才相关)。

//END_VAR

//VAR_IN_OUT

float    CYCLE = 0.1 ;   //连续控制器的采样时间[秒]

//在此设置PID 算法的采样时间。调谐器在阶段1 中计算采样时间,然后将其输入到CYCLE 中。

float    CYCLE_P = 0.02 ;  //脉冲发生器的采样时间[秒]

//在该输入端,输入脉冲发生器环节的采样时间。FB 58“TCONT_CP”在阶段1 中计算采样时间,然后将其输入到CYCLE_P。

float    SP_INT = 0.0 ;   //内部设定值 “内部设定值”输入端用于指定一个设定值。

float    MAN = 0.0 ;   //手动值 “手动值”输入端用于指定一个手动值。在自动模式中,它被改成可调节变量。

unsigned char    COM_RST = FALSE ; //完全重启动 该块有一个初始化例行程序,当COM_RST 输入端被置位时执行该例行程序。

unsigned char    MAN_ON = TRUE;   //手动操作打开 如果“手动操作打开”输入被置位,则中断控制回路。MAN 手动值被设置为可调节变量的值。

//END_VAR

//VAR

float    DEADB_W = 0.0 ;   //死区宽度 偏差通过死区。“死区宽度”输入决定死区大小。

float    I_ITLVAL = 0.0 ;   //积分作用的初始化值

//积分作用的输出可以在I_ITL_ON 输入端上设置。该初始化值用于“积分作用的初始化值”输入。在重启动期间,

//COM_RST = TRUE,积分作用被设置成初始值。

float    LMN_HLM = 100.0;  //可调节变量上限

//可调节变量的值始终限制在上限和下限范围之内。“可调节变量上限”输入指定了上限。

float    LMN_LLM = 0.0 ;   //可调节变量下限

//可调节变量的值始终限制在上限和下限范围之内。“可调节变量下限”输入指定了下限。

float    PV_FAC = 1.0 ;   //过程变量因子

//“过程变量因子”输入和“外围设备过程值”相乘。该输入用于调整过程变量的范围。

float    PV_OFFS = 0.0 ;   //过程变量偏移量

//“过程变量偏移量”输入被加到“外围设备过程变量”上。该输入用于调整过程变量的范围。

float    LMN_FAC = 1.0 ;   //可调节变量因子

//“可调节变量因子”输入和可调节变量相乘。该输入用于调整可调节变量的范围。

float    LMN_OFFS = 0.0 ;   //可调节变量偏移量

//“可调节变量偏移量”输入加到可调节变量的数值上。该输入用于调整可调节变量的范围。

float    PER_TM = 1.0 ;   //周期[秒]

//脉宽调制的脉冲重复周期在PER_TM 参数上输入。脉冲发生器的脉冲重复周期和采样时间之间的关系决定脉宽调制的精度。

float    P_B_TM = 0.0 ;   //最小脉冲/断开时间[秒]

//最小脉冲或最小断开时间可以在“最小脉冲/断开时间”参数上设置。P_B_TM 在内部被限制为大于CYCLE_P。

float    TUN_DLMN = 20.0 ;  //用于过程激励的可调节变量增量

//用于控制器整定的过程激励来自于TUN_DLMN 上的设定值阶跃变化。

int    PER_MODE = 0 ;      //外围设备模式可以在这个开关上输入I/O 模块的类型。输入PV_PER 上的过程变量在PV 输出上被规格化成°C。

//. PER_MODE =0:标准

//. PER_MODE =1:气候

//. PER_MODE =2:电流/电压

unsigned char    PVPER_ON = FALSE ; //外围设备过程变量打开

//如果想从I/O 中读取过程变量,则PV_PER 输入必须连接到I/O,并且“外围设备过程变量”输入必须置位。

unsigned char    I_ITL_ON = FALSE ; //积分作用的初始化打开

//积分作用的输出可以设置为I_ITLVAL 输入。“设置积分作用”输入必须置位。

unsigned char    PULSE_ON = FALSE ; //脉冲发生器打开

//如果设置了PULSE_ON = TRUE,则脉冲发生器被激活。

unsigned char    TUN_KEEP = FALSE ; //保持整定打开

//只有当TUN_KEEP 变成FALSE时,工作模式才切换成自动。

float    ER = 0.0 ;   //偏差信号  有效的偏差在“偏差信号”输出端输出。

float    LMN_P = 0.0 ;   //比例分量 “比例分量”包含了可调节变量的比例作用。

float    LMN_I = 0.0 ;   //积分分量 “积分分量”包含了可调节变量的积分作用。

float    LMN_D = 0.0 ;   //微分分量 “微分分量”包含了可调节变量的微分作用。

int    PHASE = 0 ;      //自整定的阶段 控制器整定的当前阶段在PHASE 输出端指示(0..7)。

int    STATUS_H = 0 ;      //自整定的状态加热 在加热时,STATUS_H 指示搜索拐点的诊断值。

int    STATUS_D = 0 ;      //自整定的状态控制器设计 当加热时,STATUS_D 指示控制器设计的诊断值。

unsigned char    QTUN_RUN = FALSE ; //整定已激活(PHASE 2)

/

剩余80%未阅读, 请登录阅读

回帖加入探讨技术论坛守则

上传附件要求

1. 文件大小:上传文件的大小请限制在2M以内。

2. 文件格式:请不要上传.exe文件,系统支持的格式有:
.avi,.wmv,.mp3,.rar,.zip,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.wma,.asf,.txt,.7z

 
发分享帖
爱工控,乐分享,
分享您的经验与案例
发故事
发表您的精彩故事,
参与征文活动
技术探讨帖
阐述您的观点,
表达我的看法
西家杂谈
海侃天南地北,
闲聊工控世界
发求助帖
求道解惑,“刨根问底”
解决问题
发投票帖
邀投票,做调查,
网友帮您来作主
取消原因:
网上找到的用C语言编写的PID
编辑推荐: 关闭

请填写推广理由:

活动公告 查看全部公告>

[新年福利加码] 参与领取年度《自动化技术应用手册》

1,845,348 条
海量精彩技术内容

100,000+ 网友与你交流

助你技有所长,论有所获

热门视频,猜你喜欢

本版热门话题

SIMATIC S7-300/400

共有54716条技术帖

更多

评选标准

相关推荐

换一换

热门标签

换一换

相关帖子推荐

换一换
正在加载...
guzhang

恭喜,你发布的帖子

被评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片

下载中心

  • 首页
  • 查找文档
  • 常见问题大全
  • 精选主题
  • 全球技术资源

  • 首页
  • 知识库
  • 订阅文档

1847工业学习平台

  • 首页
  • 了解会员权益
  • 立即开通1847会员
  • 课程中心
  • 学习路线
  • 初级工程师认证
  • 高级工程师认证

培训与认证

  • 首页
  • 教室培训课
  • 取证训练营
  • 在线自学课
  • 认证证书查询
  • 培训伙伴验证

技术论坛

  • 首页
  • 发帖
  • 最新发帖
  • 精华帖
  • 高赞贴
  • 当前热门帖
  • 高端推荐帖
  • 用户荣誉榜

找答案

  • 首页
  • 提问
  • 精华问答
  • 高赞问答
  • 新解决问题
  • 待解决问题
  • 总积分排行榜

售后服务

  • 我要报修
  • 服务进度查询
  • 质保及权益查询
  • 备件商城
  • ASP工程师验证
  • ASP公司证书验证
  • 支持中心网站重要声明

西门子中国   © 西门子(中国)有限公司 1996 – 2026   企业信息    隐私政策   使用条款   京ICP备06054295号   京公网安备 11010502040638号
 
支持中心新发布“关注”功能了!实时查看彼此动态,更方便地进行技术交流。
不管是“关注”与“被关注”,相信都是一个美好的开始!
还有多重奖励派送,快快行动起来吧!

20秒帮我们优化支持中心!

欢迎您访问支持中心!

丰富的视频,全方位的文档,大量的网友交流精华……

为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!

感谢您的支持!

您收到0封站内信:
×
×
图片
立即
签到
已签到
已签到0天
累计可抽西币次数:0次抽奖机会
累计可抽惊喜实物奖次数:0次抽奖机会
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。