news 2026/5/1 8:59:50

博图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/1 3:05:15

STM32H743 SOEM EtherCAT基于STM32H743芯片和SOEM的Ether...

STM32H743 SOEM EtherCAT基于STM32H743芯片和SOEM的EtherCAT主站源码 提供配套CUBE工程。 SOEM协议栈使用1.3.1版本。 可配套NUCLEO-H743ZI开发板使用。 支持DC同步。 可配合汇川IS620N、三洋RS3、赛孚德ASD620B、埃斯顿ProNet、迈信EP3E、台达A2-E、伟创SD700、松下A5B/A6B和欧…

作者头像 李华
网站建设 2026/5/1 3:03:09

海南椰子鸡和宁夏滩羊的拼多多“漂流”:透视地域特产的数字进化论

在中国人的餐桌上,特产既代表着地域风味,也是带有“时空局限性”的符号。宁夏盐池的滩羊,长期停留在“清水一把盐”的西北记忆里;海南的椰子鸡,一度被圈定在深圳餐饮街或琼海旅游景点的“围墙”内。 地域特产“出圈难”…

作者头像 李华
网站建设 2026/5/1 4:08:24

《解锁未来!AI提示系统智能化发展未来,提示工程架构师解锁》

解锁未来!AI提示系统智能化发展未来,提示工程架构师解锁关键词:AI提示系统, 提示工程, 提示工程架构师, 大语言模型, 智能化提示设计, 反馈优化, 多模态提示 摘要:本文用"给AI写’任务说明书’“的通俗比喻,拆解A…

作者头像 李华
网站建设 2026/5/1 4:03:59

使用 OpenCV 实现银行卡卡号识别

文章目录一、流程概述二、环境配置与参数设置三、命令行参数配置四、银行卡类型定义五、辅助函数定义六、模板图像预处理6.1 模板加载与初步处理6.2 轮廓提取与数字模板建立七、银行卡图像处理流程7.1 图像加载与初步调整7.2 形态学处理突出数字区域7.3 数字区域定位与提取7.4 …

作者头像 李华