设为首页
收藏本站
开启辅助访问
切换到窄版
积分充值
登录
立即注册
微信扫码登录
首页
首页
共享资源
BBS
视频教程
AI机器人
VIP充值
论坛
搜索
搜索
程序分享
文库分享
软件下载
变频手册
干货教程
成套课件
新版AI机器人
老版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免费)
万能程序翻译
编程序专区