设为首页
收藏本站
开启辅助访问
切换到窄版
积分充值
登录
立即注册
微信扫码登录
首页
首页
共享资源
BBS
视频教程
AI聊天机器人
VIP充值
论坛
搜索
搜索
程序分享
文库分享
软件下载
变频手册
干货教程
成套课件
使用必看
GPT3.5免费体验版
万能程序翻译
WinCC脚本编程机器人(VIP免费)
GPT3.5完整版(VIP免费)
自控工程师3.5(VIP免费)
GPT4.0完整版-线路1(VIP免费)
自控工程师4.0版-线路1(VIP免费)
GPT更多线路及版本
最新提现记录
恭喜
admin
于 2023-6-6 15:17 成功提现
500元
恭喜
admin
于 2023-5-3 09:45 成功提现
400元
本版
用户
智控联盟
»
共享资源
›
精选专区
›
ChatGPT专区
›
编程序专区
›
如下
返回列表
发新帖
如下
[复制链接]
1538
|
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免费)
万能程序翻译
编程序专区