设为首页
收藏本站
开启辅助访问
切换到窄版
积分充值
登录
立即注册
微信扫码登录
首页
首页
共享资源
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:08:24
|
显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2111&ptid=1122][color=#999999]chatGPT_小控 发表于 2023-3-31 17:03[/color][/url][/size]
好的,以下是一份完整的程序,包括模拟量转换以及工程量上下限报警设定和输出。该程序适用于西门子1500PLC ...[/quote]
rawValue := MAX(MIN(inPara, 32767), -32768);这里的MAX,MIN是什么
回复
使用道具
举报
chatGPT_小控
|
2023-3-31 21:08:39
|
显示全部楼层
MAX和MIN是SCL语言中的两个内置函数,用于返回一组数中的最大值和最小值。在上面的程序中,MAX函数比较inPara和32767,返回其中的最大值;MIN函数则返回其中的最小值和-32768之间的最大值。这两个函数的作用是确保输入的值在PLC可以处理的范围内,避免数值溢出或其他错误的结果。
回复
使用道具
举报
19995171010
|
2023-3-31 21:10:45
|
显示全部楼层
可是博图软件编译到MAX,MIN出错了
回复
使用道具
举报
chatGPT_小控
|
2023-3-31 21:11:04
|
显示全部楼层
很抱歉,最初的代码在使用了MAX和MIN函数之后,可能会出现语法错误。在博图编程规则中,并没有MAX和MIN内置函数。可以替换为以下代码实现同样的功能:
[code]
IF inPara > 32767 THEN
rawValue := 32767;
ELSEIF inPara < -32768 THEN
rawValue := -32768;
ELSE
rawValue := inPara;
END_IF;
[/code]
这段代码实现的功能与之前的代码是一样的,即将输入参数inPara的值限制在-32768和32767之间。
回复
使用道具
举报
19995171010
|
2023-3-31 21:26:55
|
显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2128&ptid=1122][color=#999999]chatGPT_小控 发表于 2023-3-31 21:11[/color][/url][/size]
很抱歉,最初的代码在使用了MAX和MIN函数之后,可能会出现语法错误。在博图编程规则中,并没有MAX和MIN内置 ...[/quote]
西门子博图现在模拟量输入4-20ma对应的值是0-27648
回复
使用道具
举报
chatGPT_小控
|
2023-3-31 21:27:50
|
显示全部楼层
如果您的模拟量输入范围是 4-20mA,那么将其转换到 0-27648 的范围,可以使用以下的公式进行计算:
[code]
Out = (In - 4) / 0.000732422
[/code]
其中 In 是模拟量输入信号的电流值(单位为 mA),Out 是对应的输出值(单位为数值)。
例如,如果模拟量输入信号是 10mA,则转换后的输出值为
[code]
Out = (10 - 4) / 0.000732422 = 8208.04 ≈ 8208
[/code]
因此,在你的博图程序中,你可以先对输入信号进行归一化处理,然后再根据需要进行进一步的转换。下面是一个示例代码,演示如何将模拟量输入信号 4-20mA 转换为 0-27648 数值范围内的浮点数值。
[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; // 浮点数工程量
END_STRUCT;
VAR_INPUT
IN_PARA : IN_PARA;
END_VAR
VAR_OUTPUT
OUT_PARA : OUT_PARA;
END_VAR
VAR_TEMP
Temp : REAL; // 临时变量
END_VAR
// FB实现
BEGIN
// 将IW数值进行归一化处理到0-27648范围内
Temp := IN_PARA.AI * 0.085;
// 根据范围计算浮点数工程量
OUT_PARA.AO := IN_PARA.LOWER_LIMIT + (Temp * (IN_PARA.UPPER_LIMIT - IN_PARA.LOWER_LIMIT));
END_FUNCTION_BLOCK
[/code]
这个 FB 块使用了一个常量 0.085,这个常量是用来将 32767(2 的 15 次方 - 1)转换为 27648(0.85 * 32767)的。在 FB 块中,我们首先将输入 IW 数值归一化为 0-27648 范围内的值,然后将其转换为浮点数工程量。
回复
使用道具
举报
19995171010
|
2023-3-31 21:36:28
|
显示全部楼层
在10#楼层的程序缺少了工程量的输入值
回复
使用道具
举报
chatGPT_小控
|
2023-3-31 21:37:27
|
显示全部楼层
非常抱歉,您是正确的。以下是修正后的程序,包括模拟量转换以及工程量上下限报警设定和输出,且包含工程量输入值变量: FUNCTION_BLOCK AnalogConversion
TITLE = \\\\\\\"Analog Conversion\\\\\\\"
VERSION : INT := 1;
AUTHOR : \\\\\\\"Your Name\\\\\\\"
FAMILY : \\\"Your Family\\\"
INTERFACE
IN_PARA : INT; // 模拟量通道IW数值,需进行转换
ENG_MAX : REAL; // 工程量最大值
ENG_MIN : REAL; // 工程量最小值
RAW_MAX : INT; // 模拟量最大值
RAW_MIN : INT; // 模拟量最小值
END_INTERFACE
VAR_INPUT
END_VAR
VAR_OUTPUT
OUT_PARA : REAL; // 转换后的工程量
ALARM_HIGH_LIMIT : BOOL; // 高限报警输出信号
ALARM_LOW_LIMIT : BOOL; // 低限报警输出信号
END_VAR
VAR
rawValue : INT; // 经过限幅处理的原始值
engValue : REAL; // 转换后的工程量值
delta : REAL; // 工程量范围内极差
highLimit : REAL; // 高限值
lowLimit : REAL; // 低限值
END_VAR
```
METHODS
// 转换模拟量通道IW数值为工程量值
ConvertAnalogToEng : METHOD ConvertAnalogToEng() FOR AnalogConversion
BEGIN
// 限幅处理模拟量输入值,确保其在范围内
rawValue := MAX(MIN(IN_PARA, RAW_MAX), RAW_MIN);
// 计算极差及上下限值
delta := ENG_MAX - ENG_MIN;
highLimit := ENG_MAX - delta * 0.05;
lowLimit := ENG_MIN + delta * 0.05;
// 转换为工程量值并输出
engValue := (rawValue - RAW_MIN) * delta / (RAW_MAX - RAW_MIN) + ENG_MIN;
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_IF
END_METHOD
END_FUNCTION_BLOCK
回复
使用道具
举报
19995171010
|
2023-3-31 21:39:49
|
显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=2140&ptid=1122][color=#999999]chatGPT_小控 发表于 2023-3-31 21:37[/color][/url][/size]
非常抱歉,您是正确的。以下是修正后的程序,包括模拟量转换以及工程量上下限报警设定和输出,且包含工程量 ...[/quote]
请给我10楼那样的写法,这种的我看不懂
回复
使用道具
举报
chatGPT_小控
|
2023-3-31 21:40:49
|
显示全部楼层
好的,以下是一个采用LAD语言编写的西门子1500 PLC模拟量转化程序,包括工程量的输入值、范围报警和转换后工程量值的输出。请注意,在使用该程序之前,需要先定义您的模拟量信号采集卡所测量的信号量程范围,并与下面程序中的量程范围参数进行匹配。[code]
AnalogConversionTITLE = \\\\\\\\\\\\\\\"Analog Conversion\\\\\\\\\\\\\\\"VERSION : INT := 1;AUTHOR : \\\\\\\\\\\\\\\"Your Name\\\\\\\\\\\\\\\"FAMILY : \\\\\\\"Your Family\\\\\\\"INTERFACE IN_PARA : INT; // 模拟量通道IW数值,需进行转换 ENG_MAX : REAL; // 工程量最大值 ENG_MIN : REAL; // 工程量最小值END_INTERFACEVAR_INPUT IN_PARA : INT; // 模拟量通道IW数值,需进行转换END_VARVAR_OUTPUT OUT_PARA : REAL; // 转换后的工程量 ALARM_HIGH_LIMIT : BOOL; // 高限报警输出信号 ALARM_LOW_LIMIT : BOOL; // 低限报警输出信号END_VARVAR_TEMP rawValue : INT; // 原始模拟量值 engValue : REAL; // 转换后的工程量值 delta : REAL; // 工程量范围内极差 highLimit : REAL; // 高限值 lowLimit : REAL; // 低限值END_VAR// *****************************MAIN PROGRAM****************************// 限幅处理模拟量输入值,确保其在范围内rawValue := MAX(MIN(IN_PARA, 32767), 0); // 假设量程范围为0~32767// 计算极差及上下限值delta := ENG_MAX - ENG_MIN;highLimit := ENG_MAX - delta * 0.05;lowLimit := ENG_MIN + delta * 0.05;// 转换为工程量值并输出engValue := (rawValue - 0) * delta / (32767 - 0) + ENG_MIN;OUT_PARA := engValue;// 检测是否超出上下限,并输出报警信号IF engValue >= highLimit THEN ALARM_HIGH_LIMIT := TRUE; // 超出高限值,输出高限报警信号ELSE ALARM_HIGH_LIMIT := FALSE;ENDIFIF engValue <= lowLimit THEN ALARM_LOW_LIMIT := TRUE; // 低于低限值,输出低限报警信号ELSE ALARM_LOW_LIMIT := FALSE;ENDIFEND_ORGANIZATION_BLOCK
[/code]在使用此程序之前,您需要根据您的实际情况修改参数 ENG_MAX、ENG_MIN 和 量程范围。
回复
使用道具
举报
下一页 »
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免费)
万能程序翻译
编程序专区