设为首页
收藏本站
开启辅助访问
切换到窄版
积分充值
登录
立即注册
微信扫码登录
首页
首页
共享资源
BBS
视频教程
AI机器人
VIP充值
论坛
搜索
搜索
程序分享
文库分享
软件下载
变频手册
干货教程
成套课件
新版AI机器人
老版GPT
最新提现记录
恭喜
admin
于 2023-6-6 15:17 成功提现
500元
恭喜
admin
于 2023-5-3 09:45 成功提现
400元
本版
用户
智控联盟
»
共享资源
›
精选专区
›
ChatGPT专区
›
编程序专区
›
如下
返回列表
发新帖
如下
[复制链接]
1935
|
7
|
2023-4-5 00:11:49
|
显示全部楼层
|
阅读模式
[align=left][font=宋体]帮我写[/font][font=Calibri]1[/font][font=宋体]个西门子[/font][font=Calibri]TIA[/font][font=宋体]博图[/font][font=Calibri]SCL[/font][font=宋体]语言的[/font][font=Calibri]FB[/font][font=宋体]功能块,具体要求如下[/font][font=Calibri]:[/font][/align][align=left][font=宋体]1、流量控制开关阀添加物料程序[/font][/align][align=left][font=宋体]2、可以设置添加物料的体积[/font][/align][align=left][font=宋体]3、可以设置开关阀开关周期[/font][/align][align=left][font=宋体]4、[/font][font=宋体]西门子[/font][font=Calibri]TIA[/font][font=宋体]博图版本是[/font][font=Calibri]V16[/font][font=宋体],[/font][font=Calibri]PLC[/font][font=宋体]型号是[/font][font=Calibri]S7-1200[/font][font=宋体]。[/font][/align]
回复
使用道具
举报
chatGPT_小柔
|
2023-4-5 00:12:32
|
显示全部楼层
请参考以下代码,实现一个名为“AddMaterial”的FB功能块。
[code]
FUNCTION_BLOCK AddMaterial
TITLE = \'Flow control switch valve for adding material\'
VERSION : INT := 1; (* 版本号 *)
(* 输入输出参数 *)
VAR_INPUT
Start: BOOL; (* 开始标志 *)
Stop: BOOL; (* 停止标志 *)
Volume: REAL; (* 添加物料的体积,单位为m3 *)
Period: TIME; (* 阀门开关周期,单位为ms *)
END_VAR
VAR_OUTPUT
ValveOpen: BOOL; (* 阀门开启标志 *)
ValveClose: BOOL; (* 阀门关闭标志 *)
MaterialAdded: BOOL; (* 物料添加完成标志 *)
END_VAR
VAR
OpenTime: TIME; (* 阀门打开时间 *)
CloseTime: TIME; (* 阀门关闭时间 *)
StartTime: TIME; (* 开始时间 *)
State: INT; (* 状态 *)
VolumeLeft: REAL; (* 剩余待添加体积 *)
Counter: INT; (* 计数器 *)
END_VAR
(* FB实现代码 *)
BEGIN
CASE State OF
0: (* 初始状态 *)
IF Start THEN
StartTime := T#0s; (* 记录开始时间 *)
OpenTime := T#0s; (* 清零阀门打开时间 *)
CloseTime := T#0s; (* 清零阀门关闭时间 *)
ValveOpen := FALSE; (* 设置阀门关闭标志 *)
ValveClose := TRUE; (* 设置阀门打开标志 *)
MaterialAdded := FALSE;
VolumeLeft := Volume; (* 设置待添加体积 *)
State := 1; (* 进入下一状态 *)
END_IF
1: (* 阀门关闭状态 *)
Counter := Counter + 1; (* 计数器加1 *)
IF Counter >= (Period * 10) THEN (* 达到周期 *)
Counter := 0; (* 重置计数器 *)
OpenTime := T#0s; (* 清零阀门打开时间 *)
CloseTime := T#0s; (* 清零阀门关闭时间 *)
ValveOpen := TRUE; (* 设置阀门打开标志 *)
ValveClose := FALSE; (* 设置阀门关闭标志 *)
State := 2; (* 进入下一状态 *)
END_IF
2: (* 阀门打开状态 *)
OpenTime := OpenTime + CycleTime(); (* 更新阀门打开时间 *)
IF OpenTime >= T#300ms THEN (* 阀门打开时间达到300ms,即打开时间到达设定的最大值 *)
OpenTime := T#0s; (* 清零阀门打开时间 *)
CloseTime := T#0s; (* 清零阀门关闭时间 *)
ValveOpen := FALSE; (* 设置阀门关闭标志 *)
ValveClose := TRUE; (* 设置阀门打开标志 *)
VolumeLeft := VolumeLeft - (OpenTime / CycleTime() * 0.001); (* 更新剩余待添加体积 *)
IF VolumeLeft <= 0 THEN (* 待添加体积已经添加完毕 *)
MaterialAdded := TRUE;
State := 3; (* 进入下一状态 *)
ELSE
State := 1; (* 进入下一周期,返回阀门关闭状态 *)
END_IF
END_IF
3: (* 物料添加完成状态 *)
IF Stop THEN (* 收到停止标志 *)
State := 0; (* 返回初始状态 *)
END_IF
END_CASE
END_FUNCTION_BLOCK
[/code]
请注意,此代码仅为参考,具体实现可能会受到PLC硬件和用户要求的影响。在使用前,需要仔细检查代码并进行必要的修改。
回复
使用道具
举报
ASD向前
|
2023-4-5 00:15:23
|
显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2449&ptid=1185][color=#999999]chatGPT_小柔 发表于 2023-4-5 00:12[/color][/url][/size]
请参考以下代码,实现一个名为“AddMaterial”的FB功能块。
[/quote]
可以设置物料添加速率
回复
使用道具
举报
chatGPT_小柔
|
2023-4-5 00:16:16
|
显示全部楼层
请参考以下代码,对上述的AddMaterial函数块进行修改,增加物料添加速率的输入参数。
FUNCTION_BLOCK AddMaterial
TITLE = \'Flow control switch valve for adding material with flow rate\'
VERSION : INT := 1; (* 版本号 *)
(* 输入输出参数 *)
VAR_INPUT
Start: BOOL; (* 开始标志 *)
Stop: BOOL; (* 停止标志 *)
Volume: REAL; (* 添加物料的体积,单位为m3 *)
FlowRate: REAL; (* 物料添加速率,单位为m3/s *)
Period: TIME; (* 阀门开关周期,单位为ms *)
END_VAR
VAR_OUTPUT
ValveOpen: BOOL; (* 阀门开启标志 *)
ValveClose: BOOL; (* 阀门关闭标志 *)
MaterialAdded: BOOL; (* 物料添加完成标志 *)
END_VAR
VAR
OpenTime: TIME; (* 阀门打开时间 *)
CloseTime: TIME; (* 阀门关闭时间 *)
StartTime: TIME; (* 开始时间 *)
State: INT; (* 状态 *)
VolumeLeft: REAL; (* 剩余待添加体积 *)
Counter: INT; (* 计数器 *)
LastVolumeLeft: REAL; (* 上一周期剩余待添加体积 *)
END_VAR
(* FB实现代码 *)
BEGIN
CASE State OF
0: (* 初始状态 *)
IF Start THEN
StartTime := T#0s; (* 记录开始时间 *)
OpenTime := T#0s; (* 清零阀门打开时间 *)
CloseTime := T#0s; (* 清零阀门关闭时间 *)
ValveOpen := FALSE; (* 设置阀门关闭标志 *)
ValveClose := TRUE; (* 设置阀门打开标志 *)
MaterialAdded := FALSE;
VolumeLeft := Volume; (* 设置待添加体积 *)
LastVolumeLeft := VolumeLeft;
State := 1; (* 进入下一状态 *)
END_IF
1: (* 阀门关闭状态 *)
Counter := Counter + 1; (* 计数器加1 *)
IF Counter >= (Period * 10) THEN (* 达到周期 *)
Counter := 0; (* 重置计数器 *)
OpenTime := T#0s; (* 清零阀门打开时间 *)
CloseTime := T#0s; (* 清零阀门关闭时间 *)
ValveOpen := TRUE; (* 设置阀门打开标志 *)
ValveClose := FALSE; (* 设置阀门关闭标志 *)
State := 2; (* 进入下一状态 *)
END_IF
2: (* 阀门打开状态 *)
OpenTime := OpenTime + CycleTime(); (* 更新阀门打开时间 *)
IF OpenTime >= T#300ms THEN (* 阀门打开时间达到300ms,即打开时间到达设定的最大值 *)
OpenTime := T#0s; (* 清零阀门打开时间 *)
CloseTime := T#0s; (* 清零阀门关闭时间 *)
ValveOpen := FALSE; (* 设置阀门关闭标志 *)
ValveClose := TRUE; (* 设置阀门打开标志 *)
(* 根据物料添加速率计算待添加体积 *)
VolumeLeft := LastVolumeLeft - FlowRate * OpenTime / CycleTime() * 0.001;
(* 更新剩余待添加体积 *)
IF VolumeLeft <= 0 THEN (* 待添加体积已经添加完毕 *)
MaterialAdded := TRUE;
State := 3; (* 进入下一状态 *)
ELSE
State := 1; (* 进入下一周期,返回阀门关闭状态 *)
END_IF
LastVolumeLeft := VolumeLeft;
END_IF
3: (* 物料添加完成状态 *)
IF Stop THEN (* 收到停止标志 *)
State := 0; (* 返回初始状态 *)
END_IF
END_CASE
END_FUNCTION_BLOCK
在上面的代码中,增加了一个名为FlowRate的输入参数。在每个周期内,根据物料添加速率计算待添加体积,并更新剩余待添加体积。
请根据实际情况修改FlowRate参数的数据类型和单位。
回复
使用道具
举报
ASD向前
|
2023-4-5 00:19:54
|
显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2451&ptid=1185][color=#999999]chatGPT_小柔 发表于 2023-4-5 00:16[/color][/url][/size]
请参考以下代码,对上述的AddMaterial函数块进行修改,增加物料添加速率的输入参数。
FUNCTION_BLOCK AddM ...[/quote]
输入有物料流量计
回复
使用道具
举报
chatGPT_小柔
|
2023-4-5 00:20:00
|
显示全部楼层
请参考以下代码,修改上述的AddMaterial函数块,增加物料流量计输入参数。同时,根据实际情况修改流量计参数的数据类型和单位。FUNCTION_BLOCK
回复
使用道具
举报
ASD向前
|
2023-4-5 00:22:58
|
显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2453&ptid=1185][color=#999999]chatGPT_小柔 发表于 2023-4-5 00:20[/color][/url][/size]
请参考以下代码,修改上述的AddMaterial函数块,增加物料流量计输入参数。同时,根据实际情况修改流量计参 ...[/quote]
物料由流量计累计流量
回复
使用道具
举报
chatGPT_小柔
|
2023-4-5 00:23:46
|
显示全部楼层
请参考以下代码,修改上述的AddMaterial函数块,增加流量计输入参数,并根据流量计参数计算剩余待添加体积。同时,根据实际情况修改流量计参数的数据类型和单位。FUNCTION_BLOCK AddMaterial
TITLE = \\\'Flow control switch valve for adding material\\\'
VERSION : INT := 1; (* 版本号 *)
(* 输入输出参数 *)
VAR_INPUT
Start: BOOL; (* 开始标志 *)
Stop: BOOL; (* 停止标志 *)
Volume: REAL; (* 添加物料的体积,单位为m3 *)
Period: TIME; (* 阀门开关周期,单位为ms *)
FlowRate: REAL; (* 物料流量计读数,单位为m3/min *)
END_VAR
VAR_OUTPUT
ValveOpen: BOOL; (* 阀门开启标志 *)
ValveClose: BOOL; (* 阀门关闭标志 *)
MaterialAdded: BOOL; (* 物料添加完成标志 *)
END_VAR
VAR
OpenTime: TIME; (* 阀门打开时间 *)
CloseTime: TIME; (* 阀门关闭时间 *)
StartTime: TIME; (* 开始时间 *)
State: INT; (* 状态 *)
VolumeLeft: REAL; (* 剩余待添加体积 *)
Counter: INT; (* 计数器 *)
END_VAR
(* FB实现代码 *)
BEGIN
CASE State OF
0: (* 初始状态 *)
IF Start THEN
StartTime := T#0s; (* 记录开始时间 *)
OpenTime := T#0s; (* 清零阀门打开时间 *)
CloseTime := T#0s; (* 清零阀门关闭时间 *)
ValveOpen := FALSE; (* 设置阀门关闭标志 *)
ValveClose := TRUE; (* 设置阀门打开标志 *)
MaterialAdded := FALSE;
VolumeLeft := Volume; (* 设置待添加体积 *)
State := 1; (* 进入下一状态 *)
END_IF
1: (* 阀门关闭状态 *)
Counter := Counter + 1; (* 计数器加1 *)
IF Counter >= (Period * 10) THEN (* 达到周期 *)
Counter := 0; (* 重置计数器 *)
OpenTime := T#0s; (* 清零阀门打开时间 *)
CloseTime := T#0s; (* 清零阀门关闭时间 *)
ValveOpen := TRUE; (* 设置阀门打开标志 *)
ValveClose := FALSE; (* 设置阀门关闭标志 *)
State := 2; (* 进入下一状态 *)
END_IF
2: (* 阀门打开状态 *)
OpenTime := OpenTime + CycleTime(); (* 更新阀门打开时间 *)
IF OpenTime >= T#300ms THEN (* 阀门打开时间达到300ms,即打开时间到达设定的最大值 *)
OpenTime := T#0s; (* 清零阀门打开时间 *)
CloseTime := T#0s; (* 清零阀门关闭时间 *)
ValveOpen := FALSE; (* 设置阀门关闭标志 *)
ValveClose := TRUE; (* 设置阀门打开标志 *)
VolumeLeft := VolumeLeft - (OpenTime / CycleTime() * FlowRate * 0.001); (* 更新剩余待添加体积 *)
IF VolumeLeft <= 0 THEN (* 待添加体积已经添加完毕 *)
MaterialAdded := TRUE;
State := 3; (* 进入下一状态 *)
ELSE
State := 1; (* 进入下一周期,返回阀门关闭状态 *)
END_IF
END_IF
3: (* 物料添加完成状态 *)
IF Stop THEN (* 收到停止标志 *)
State := 0; (* 返回初始状态 *)
END_IF
END_CASE
END_FUNCTION_BLOCK
请注意,此代码仅为参考,具体实现可能会受到PLC硬件和用户要求的影响。在使用前,需要仔细检查代码并进行必要的修改。
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
ASD向前
2
主题
8
帖子
38
积分
新手上路
新手上路, 积分 38, 距离下一级还需 12 积分
新手上路, 积分 38, 距离下一级还需 12 积分
积分
38
加好友
发消息
回复楼主
返回列表
用户使用心得及帮助
GPT3.5免费体验版
GPT3.5完整版(VIP免费)
自控工程师3.5(VIP免费)
伺服变频维修工程师(VIP免费)
GPT4.0-完整版-线路1(VIP免费)
GPT4.0-完整版-线路2(VIP免费)
GPT4.0-完整版-线路3(VIP免费)
自控工程师4.0版-线路1(VIP免费)
自控工程师4.0版-线路2(VIP免费)
自控工程师4.0版-线路3(VIP免费)
WinCC脚本编程机器人(VIP免费)
万能程序翻译
编程序专区