LM3108与仪表485自由口通讯解析与PLC程序示例
需积分: 49 172 浏览量
更新于2024-08-09
收藏 3.44MB PDF 举报
"自由口通讯使用举例-optimal control (3rd edition)."
在本文中,我们将深入探讨自由口通讯(Freeport Communication)的应用,特别是在与LM3108模块的交互中。自由口通讯允许用户自定义串行通信的协议,以适应特定的设备或系统需求。这里以一个检测仪表与LM3108模块之间进行485自由口通讯的实例进行讲解。
首先,我们要了解仪表的协议格式。这是一个18字节的自由协议格式,包含起始符STX(02H)、状态字ABC、重量、皮重、回车以及校验位CKS。状态字A的三位(Bit0、Bit1、Bit2)决定了重量数据的小数点位置,具体如下:
- Bit2 Bit1 Bit0 | 小数点位置
- 0 0 0 | XXXX00 (0小数位)
- 0 0 1 | XXXXX0 (1小数位)
- 0 1 0 | XXXXXX (2小数位)
- 0 1 1 | XXXXX.X (3小数位)
- 1 0 0 | XXXX.XX (4小数位)
- 1 0 1 | XXX.XXX (5小数位)
- 1 1 0 | XX.XXXX (6小数位)
- 1 1 1 | X.XXXXX (7小数位)
LM3108模块需要解析状态字A的这三位,以及后续的重量数值。仪表发送的数值范围在0到10之间,LM3108会将其解析并转换成0到10V的模拟量信号输出。
通讯参数设置为9600波特率(Bps),8位数据位,无校验。这是标准的RS485通信配置。
在编程实现这个通讯过程时,我们使用的是CodeSys编程环境。以下是一段示例程序,展示了如何处理从仪表接收的数据:
```plc
PROGRAM PLC_PRG
VAR
RecFin: BOOL; // 接收完成标志
Set485: Set_COMM2_PRMT; // 设置485通信参数
RecData: ARRAY [1..18] OF BYTE; // 接收数据缓冲区
RightData: ARRAY [1..18] OF BYTE; // 正确格式化数据缓冲区
Set485Sw: BOOL; // 开启485通信标志
Set485Fin: BOOL; // 485通信完成标志
SetRecSw: BOOL; // 接收数据标志
RecM: COMM2_RECEIVE; // 接收任务
StartQ: BOOL; // 启动接收标志
EndQ: BOOL; // 结束接收标志
copyArr: copy_Arr; // 数据复制结构体
L5Dot: BOOL; // 小数点位置标志
L4Dot: BOOL;
L3Dot: BOOL;
L2Dot: BOOL;
L1Dot: BOOL;
L0Dot: BOOL;
R1Dot: BOOL;
R2Dot: BOOL;
ResNum: DWORD; // 解析后的数值
AddAllNum: AddNum; // 计算数值
ResNumTemp: DWORD; // 解析过程中临时数值
DIVNUM: DWORD; // 分母
OUTNUMH: WORD AT %MW202; // 输出高位数值
OUTNUML: WORD AT %MW200; // 输出低位数值
END_VAR
```
在这个程序中,定义了各种变量来处理接收到的数据。例如,`RecData`用于存储原始接收到的18字节数据,`RightData`则用于存储格式化后的数据。`ResNum`用来保存解析出的数值,最后通过`OUTNUMH`和`OUTNUML`寄存器输出到模拟量接口,转换成0~10V的电压信号。
此外,我们注意到这个程序可能是在HOLLiAS-LEC G3小型一体化PLC上运行,使用的编程工具是PowerPro,它提供了丰富的指令与功能块。虽然手册中并未提供具体的编程细节,但可以推断程序会包含解析状态字A的位操作,以及根据状态字计算小数点位置,从而正确解析重量数据。
需要注意的是,实际应用中,由于软件版本更新和应用需求变化,手册提供的信息可能存在误差或不完全一致。因此,开发者应根据具体设备的规格和当前的软件版本进行适配和调试。在使用手册内容时,务必遵循相关法律法规,尊重知识产权,未经授权不得复制或传播。
2020-10-25 上传
2022-07-14 上传
2022-07-14 上传
2021-08-11 上传
106 浏览量
2023-08-08 上传
2020-05-25 上传
jiyulishang
- 粉丝: 25
- 资源: 3813
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍