news 2026/5/8 17:06:56

博图SCL+LAD之原创程序分享

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
博图SCL+LAD之原创程序分享

博图SCL+LAD之原创程序。 硬件配置S7-1214?3个CM1241 RS232?1个CB1241 RS485。 以下功能只是一部分,占总程序25%,请注意。 以下用SCL功能实现: 1:预设五组配方,包含条形码编码、光源亮度、板件厚度等信息,单个配方数量20,总共100个配方(配方数可调整)。 2:配方存入、读取扫码器数据、设置光源亮度、设置板件厚度。 3:配方读取:读取扫码器数据、在配方库查找出先前预设的光源亮度、板件厚度, 并通过RS232发送查找出来的光源。 4:配方判断功能:读取扫码器数据,自动匹配配方库数据,要是没有先前预设的条码,提示报错“未存有条码”。 5:HMI界面有“条码信息存入”界面,可以很方便的判断出是否根据条码信息判断“配方输入”和“配方读取”。 6:提供博图SCL

最近在项目中用到了博图的SCL和LAD编程,实现了一些很有意思的功能,今天就来和大家分享其中一部分,这部分功能大概占总程序的25% 。先给大家讲讲硬件配置,我们用的是S7 - 1214,搭配3个CM1241 RS232和1个CB1241 RS485 。

一、SCL实现的功能解析

1. 预设配方功能

我们需要预设五组配方,每个配方里包含条形码编码、光源亮度、板件厚度等信息,单个配方数量为20,总共100个配方(而且配方数可调整)。在SCL里,我们可以通过定义数据结构和数组来实现这个功能。

// 定义配方数据结构 TYPE RecipeType: STRUCT Barcode : STRING[50]; // 条形码编码 LightIntensity : INT; // 光源亮度 PlateThickness : REAL; // 板件厚度 END_STRUCT; END_TYPE // 定义配方数组,这里以100个配方为例,可根据需求调整 VAR Recipes : ARRAY[1..100] OF RecipeType; END_VAR

这里我们先定义了一个RecipeType的数据结构,里面包含了条形码、光源亮度和板件厚度三个属性。然后通过这个数据结构定义了一个名为Recipes的数组,用来存储100个配方。

2. 配方存入、读取扫码器数据及设置相关参数功能

配方存入和读取扫码器数据,以及设置光源亮度和板件厚度,我们可以通过编写函数来实现。

// 存入扫码器数据到配方 PROCEDURE StoreScannerDataToRecipe VAR_INPUT Index : INT; // 配方索引 ScannerBarcode : STRING[50]; ScannerLightIntensity : INT; ScannerPlateThickness : REAL; END_VAR BEGIN Recipes[Index].Barcode := ScannerBarcode; Recipes[Index].LightIntensity := ScannerLightIntensity; Recipes[Index].PlateThickness := ScannerPlateThickness; END_PROCEDURE // 读取扫码器数据 FUNCTION ReadScannerData : RecipeType VAR_OUTPUT ReadBarcode : STRING[50]; ReadLightIntensity : INT; ReadPlateThickness : REAL; END_VAR BEGIN // 这里假设扫码器数据从某个变量获取,实际项目需根据硬件接口调整 ReadBarcode := SomeScannerVariable.Barcode; ReadLightIntensity := SomeScannerVariable.LightIntensity; ReadPlateThickness := SomeScannerVariable.PlateThickness; ReadScannerData.Barcode := ReadBarcode; ReadScannerData.LightIntensity := ReadLightIntensity; ReadScannerData.PlateThickness := ReadPlateThickness; END_FUNCTION

StoreScannerDataToRecipe过程中,我们根据传入的配方索引和扫码器数据,将数据存入对应的配方中。而ReadScannerData函数则是从扫码器获取数据并返回一个包含这些数据的配方结构。

3. 配方读取及发送功能

配方读取需要读取扫码器数据,在配方库查找出先前预设的光源亮度、板件厚度,并通过RS232发送查找出来的光源。

// 配方读取 FUNCTION ReadRecipeByBarcode : RecipeType VAR_INPUT BarcodeToFind : STRING[50]; END_VAR VAR i : INT; BEGIN FOR i := 1 TO 100 DO IF Recipes[i].Barcode = BarcodeToFind THEN ReadRecipeByBarcode := Recipes[i]; EXIT; END_IF; END_FOR; END_FUNCTION // 通过RS232发送光源亮度 PROCEDURE SendLightIntensityByRS232 VAR_INPUT LightIntensityToSend : INT; END_VAR BEGIN // 这里是通过RS232发送数据的代码,实际需根据硬件配置调整 // 假设使用串口通信功能块FB2,参数为串口ID和要发送的数据 CALL "FB2" (COM_ID := 1, DATA := LightIntensityToSend); END_PROCEDURE

ReadRecipeByBarcode函数根据传入的条形码在配方库中查找对应的配方。SendLightIntensityByRS232过程则是负责将找到的光源亮度通过RS232发送出去,这里调用了一个假设的串口通信功能块FB2,实际使用时要根据硬件的串口配置和通信协议来调整。

4. 配方判断功能

读取扫码器数据,自动匹配配方库数据,要是没有先前预设的条码,提示报错“未存有条码”。

// 配方判断 FUNCTION CheckRecipeExists : BOOL VAR_INPUT BarcodeToCheck : STRING[50]; END_VAR VAR i : INT; RecipeExists : BOOL := FALSE; BEGIN FOR i := 1 TO 100 DO IF Recipes[i].Barcode = BarcodeToCheck THEN RecipeExists := TRUE; EXIT; END_IF; END_FOR; IF NOT RecipeExists THEN // 假设这里有个变量用于存储错误信息,在HMI中显示 ErrorMessage := '未存有条码'; END_IF; CheckRecipeExists := RecipeExists; END_FUNCTION

CheckRecipeExists函数通过遍历配方库,检查传入的条形码是否存在。如果不存在,就设置错误信息,这里假设了一个ErrorMessage变量用于在HMI中显示错误提示。

5. HMI界面交互相关

HMI界面有“条码信息存入”界面,可以很方便的判断出是否根据条码信息判断“配方输入”和“配方读取”。虽然在SCL代码里没有直接体现HMI的设计,但在程序逻辑上,我们可以通过变量来与HMI进行交互。

// 假设两个变量用于HMI判断 VAR IsRecipeInput : BOOL; IsRecipeRead : BOOL; END_VAR

在HMI界面,我们可以通过按钮或输入框等控件来改变这两个变量的值,从而触发相应的配方输入或读取操作。

二、总结

以上就是博图SCL实现的部分功能,通过合理利用SCL的编程特性,我们可以高效地实现复杂的逻辑功能。当然,实际项目中还会结合LAD等其他编程方式以及硬件的具体配置进行更完善的开发。希望这篇分享能给大家在类似项目中带来一些启发和帮助。后续有更多有趣的功能实现,我会继续和大家分享。

博图SCL+LAD之原创程序。 硬件配置S7-1214?3个CM1241 RS232?1个CB1241 RS485。 以下功能只是一部分,占总程序25%,请注意。 以下用SCL功能实现: 1:预设五组配方,包含条形码编码、光源亮度、板件厚度等信息,单个配方数量20,总共100个配方(配方数可调整)。 2:配方存入、读取扫码器数据、设置光源亮度、设置板件厚度。 3:配方读取:读取扫码器数据、在配方库查找出先前预设的光源亮度、板件厚度, 并通过RS232发送查找出来的光源。 4:配方判断功能:读取扫码器数据,自动匹配配方库数据,要是没有先前预设的条码,提示报错“未存有条码”。 5:HMI界面有“条码信息存入”界面,可以很方便的判断出是否根据条码信息判断“配方输入”和“配方读取”。 6:提供博图SCL

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 20:57:15

知网AIGC检测不通过?毕业生必看的3步自救攻略

知网AIGC检测不通过?毕业生必看的3步自救攻略 TL;DR:知网AIGC检测不通过别慌,按「定位问题段落 → 工具批量处理 → 人工精修」三步走,可以把AI率从80%降到10%以下。推荐用嘎嘎降AI处理(达标率99.26%)&…

作者头像 李华
网站建设 2026/5/1 10:33:57

Comsol超声管道导波模拟探索

comsol超声管道导波 利用侧面等效力源激励,对外直径40mm,壁厚3mm的钢管进行200kHz下的导波检测,在x200mm位置处设置裂纹缺陷,在x120mm位置处设置点探针 遇到裂纹前后的声场图如图1和2所示,点探针接收波形如图3所示&…

作者头像 李华
网站建设 2026/5/7 13:00:14

锌枝晶 Comsol 仿真:三次电流分布建模探秘

锌枝晶comsol仿真 三次电流分布建模 两个模型,两种沉积方式 模型可跑通 结果正确 学习锌枝晶必备学习案例在电化学领域,锌枝晶的研究一直是个热门话题,它关乎着电池的性能与安全。今天就来分享一下锌枝晶 Comsol 仿真中三次电流分布建模&…

作者头像 李华
网站建设 2026/5/2 0:07:27

微信小程序毕设项目:基于django+微信小程序的考研信息查询系统(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华