设为首页
收藏本站
开启辅助访问
切换到窄版
积分充值
登录
立即注册
微信扫码登录
首页
首页
共享资源
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专区
›
编程序专区
›
编写一个西门子1500PLC的模拟量转化程序
1
2
3
/ 3 页
返回列表
发新帖
编写一个西门子1500PLC的模拟量转化程序
[复制链接]
19995171010
|
2023-3-31 21:42:32
|
显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2143&ptid=1122][color=#999999]chatGPT_小控 发表于 2023-3-31 21:40[/color][/url][/size]
好的,以下是一个采用LAD语言编写的西门子1500 PLC模拟量转化程序,包括工程量的输入值、范围报警和转换后 ...[/quote]
请转化成SCL的语言并且在Input,Output等输入变量,方便多次调用
回复
使用道具
举报
chatGPT_小控
|
2023-3-31 21:44:04
|
显示全部楼层
好的,以下是使用SCL语言编写的西门子1500 PLC模拟量转换程序,包括工程量的输入值、范围报警和转换后工程量值的输出。在主程序中可以多次调用该函数,方便实现模拟量的转换。FUNCTION_BLOCK AnalogConversionTITLE = \\\'Analog Conversion\\\'VERSION : INT := 1; // 版本号// 输入参数IN_PARA : REAL; // 实际的模拟量值LOW_LIMIT : REAL; // 工程量下限HIGH_LIMIT : REAL; // 工程量上限END_STRUCT;// 输出参数OUT_PARA : REAL; // 转化后的工程量值ALARM_HIGH_LIMIT : BOOL; // 若超出上限,则为真ALARM_LOW_LIMIT : BOOL; // 若低于下限,则为真END_FUNCTION_BLOCK// FB实现BEGIN // 限幅处理模拟量输入值,确保其在范围内 VAR_INPUT.rawValue := MAX(MIN(IN_PARA, 32767), 0); // 计算极差及上下限值 delta := HIGH_LIMIT - LOW_LIMIT; highLimit := HIGH_LIMIT - delta * 0.05; lowLimit := LOW_LIMIT + delta * 0.05; // 转换为工程量值并输出 engValue := (rawValue - 0) * delta / (32767 - 0) + LOW_LIMIT; OUT_PARA := engValue; // 检测是否超出上下限,并输出报警信号 IF engValue >= highLimit THEN ALARM_HIGH_LIMIT := TRUE; // 超出高限值,输出高限报警信号 ELSE ALARM_HIGH_LIMIT := FALSE; END_IF IF engValue <= lowLimit THEN ALARM_LOW_LIMIT := TRUE; // 低于低限值,输出低限报警信号 ELSE ALARM_LOW_LIMIT := FALSE; END_IFEND_FUNCTION_BLOCK在使用此程序之前,您需要根据您的实际情况修改参数 LOW_LIMIT、HIGH_LIMIT 和 量程范围。
回复
使用道具
举报
19995171010
|
2023-3-31 21:46:05
|
显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2146&ptid=1122][color=#999999]chatGPT_小控 发表于 2023-3-31 21:44[/color][/url][/size]
好的,以下是使用SCL语言编写的西门子1500 PLC模拟量转换程序,包括工程量的输入值、范围报警和转换后工程 ...[/quote]
请在10#的程序中加入工程量的上下限值
回复
使用道具
举报
chatGPT_小控
|
2023-3-31 21:47:06
|
显示全部楼层
好的,以下是在10#程序中加入工程量上下限值的修改。请注意,输入参数中新增了LOWER_LIMIT和UPPER_LIMIT,用于设定工程量的上下限;输出参数中新增了ALARM_HIGH_LIMIT和ALARM_LOW_LIMIT,用于在工程量超出上下限时输出报警信号。同时,请根据实际情况修改相关参数值。FUNCTION_BLOCK AnalogConversion
TITLE = \'Analog Conversion\'
VERSION : INT := 1; // 版本号
// 输入参数
IN_PARA : STRUCT
AI : INT; // 模拟量通道IW数值
LOWER_LIMIT : REAL; // 工程量下限
UPPER_LIMIT : REAL; // 工程量上限
END_STRUCT;
// 输出参数
OUT_PARA : STRUCT
AO : REAL; // 浮点数工程量
ALARM_HIGH_LIMIT : BOOL; // 若超出上限,则为真
ALARM_LOW_LIMIT : BOOL; // 若低于下限,则为真
END_STRUCT;
VAR_INPUT
IN_PARA : IN_PARA;
END_VAR
VAR_OUTPUT
OUT_PARA : OUT_PARA;
END_VAR
VAR_TEMP
Temp : REAL; // 临时变量
END_VAR
VAR
delta : REAL; // 上下限差值
highLimit : REAL; // 工程量上限(考虑5%余量)
lowLimit : REAL; // 工程量下限(考虑5%余量)
engValue : REAL; // 工程量值
END_VAR
// FB实现
BEGIN
// 将IW数值进行归一化处理到0-1范围内
Temp := ((IN_PARA.AI - 0) / (32767 - 0));
// 计算极差及上下限值
delta := IN_PARA.UPPER_LIMIT - IN_PARA.LOWER_LIMIT;
highLimit := IN_PARA.UPPER_LIMIT - delta * 0.05;
lowLimit := IN_PARA.LOWER_LIMIT + delta * 0.05;
// 根据范围计算浮点数工程量
engValue := IN_PARA.LOWER_LIMIT + (Temp * delta);
OUT_PARA.AO := engValue;
// 检测是否超出上下限,并输出报警信号
IF engValue >= highLimit THEN
OUT_PARA.ALARM_HIGH_LIMIT := TRUE; // 超出高限值,输出高限报警信号
ELSE
OUT_PARA.ALARM_HIGH_LIMIT := FALSE;
END_IF
IF engValue <= lowLimit THEN
OUT_PARA.ALARM_LOW_LIMIT := TRUE; // 低于低限值,输出低限报警信号
ELSE
OUT_PARA.ALARM_LOW_LIMIT := FALSE;
END_IF
END_FUNCTION_BLOCK
回复
使用道具
举报
19995171010
|
2023-3-31 21:49:28
|
显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2148&ptid=1122][color=#999999]chatGPT_小控 发表于 2023-3-31 21:47[/color][/url][/size]
好的,以下是在10#程序中加入工程量上下限值的修改。请注意,输入参数中新增了LOWER_LIMIT和UPPER_LIMIT, ...[/quote]
把这个程序写在FB块中,不需要在DB块中建立变量,并且符合西门子博图SCL编程规范
回复
使用道具
举报
chatGPT_小控
|
2023-3-31 21:50:22
|
显示全部楼层
好的,以下是符合西门子博图SCL编程规范的模拟量转化程序,直接写在FB块中,不需要在DB块中建立变量。请根据实际情况修改相关参数值。
[code]
FUNCTION_BLOCK AnalogConversion
TITLE = \'Analog Conversion\'
VERSION : INT := 1; // 版本号
// 输入参数
IN_PARA : STRUCT
AI : INT; // 模拟量通道IW数值
LOWER_LIMIT : REAL; // 工程量下限
UPPER_LIMIT : REAL; // 工程量上限
END_STRUCT;
// 输出参数
OUT_PARA : STRUCT
AO : REAL; // 浮点数工程量
ALARM_HIGH_LIMIT : BOOL; // 若超出上限,则为真
ALARM_LOW_LIMIT : BOOL; // 若低于下限,则为真
END_STRUCT;
VAR_TEMP
Temp : REAL; // 临时变量
delta : REAL; // 上下限差值
highLimit : REAL; // 工程量上限(考虑5%余量)
lowLimit : REAL; // 工程量下限(考虑5%余量)
engValue : REAL; // 工程量值
END_VAR
// FB实现
BEGIN
// 将IW数值进行归一化处理到0-1范围内
Temp := ((IN_PARA.AI - 0) / (32767 - 0));
// 计算极差及上下限值
delta := IN_PARA.UPPER_LIMIT - IN_PARA.LOWER_LIMIT;
highLimit := IN_PARA.UPPER_LIMIT - delta * 0.05;
lowLimit := IN_PARA.LOWER_LIMIT + delta * 0.05;
// 根据范围计算浮点数工程量
engValue := IN_PARA.LOWER_LIMIT + (Temp * delta);
OUT_PARA.AO := engValue;
// 检测是否超出上下限,并输出报警信号
IF engValue >= highLimit THEN
OUT_PARA.ALARM_HIGH_LIMIT := TRUE; // 超出高限值,输出高限报警信号
ELSE
OUT_PARA.ALARM_HIGH_LIMIT := FALSE;
END_IF
IF engValue <= lowLimit THEN
OUT_PARA.ALARM_LOW_LIMIT := TRUE; // 低于低限值,输出低限报警信号
ELSE
OUT_PARA.ALARM_LOW_LIMIT := FALSE;
END_IF
END_FUNCTION_BLOCK
[/code]
回复
使用道具
举报
1
2
3
/ 3 页
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
回复楼主
返回列表
用户使用心得及帮助
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免费)
万能程序翻译
编程序专区