[物联网网关教程]Modbus-RTU通讯驱动

本驱动构件用于通过ModbusRTU协议读写Modicon PLC设备的各种寄存器的数据;

同时也可用于对支持ModbusRTU标准协议的各类PLC、仪表、控制器数据的读写。

本驱动支持01、02、03、04、05、16常用功能码,对功能码支持请参见附录1。

驱动类型

串口设备

通讯协议

采用莫迪康ModbusRTU协议

通讯方式

一主一从、一主多从方式。驱动构件为主,设备为从。

硬件连接

与设备通讯之前,必须保证通讯连接正确。

通讯连接方式:与设备之间采用标准的RS485或RS232通讯。

Modicon TSX系列和Twido系列PLC的编程通讯口(Terminal Port)的通讯电缆图如下:

其他设备的通讯连接,具体请参考对应设备手册。

设备通讯参数

“ModbusRTU”端口参数设置如下:

串口通讯参数设置如下:

设置项

参数项

通讯波特率

9600 (默认值)、19200、38400

数据位位数

7、8(默认值)

停止位位数

1(默认值)、2

奇偶校验位

奇校验、偶校验(默认值)、无校验

其中通讯参数设置应与设备的通讯参数相同,否则无法正常通讯。

设备通讯参数的具体设置请参见对应设备手册。

通道变量属性

本驱动构件可支持ModbusRTU寄存器类型及对应功能码如下:

寄存器

数据类型

读取功能码

写入功能码

操作方式

[0]输出继电器

BIT

01

05

读写

[1]输入继电器

BIT

02

只读

[3]输入寄存器

SHORT,LONG,FLOAT

04

只读

[4]输出寄存器

SHORT,LONG,FLOAT

03

16

读写

说明:

功能码:[1]、[3]区不支持写操作;[4] 区在双字(32位)时,使用16功能码进行数据写操作。

数据类型:

16位整数解码顺序:调整字元件的解码顺序,对于Modicon PLC及标准PLC设备,使用默认值即可。

0—12:表示字元件高低字节不颠倒(默认值)。

例如:解码0x0001  表示1

1—21:表示字元件高低字节颠倒。

例如:表示0x0100 (即256)

32位整数解码顺序:调整双字元件的解码顺序,对于Modicon PLC,请设置为“0-3412”顺序解码。

0—3412:表示双字元件高低字颠倒,但字内高低字节不颠倒。

例如:解码0x0000 0001     表示 0x0001 0000 (即65536)

1—1234:表示双字元件不做处理直接解码(默认值)。

例如:解码0x0000 0001  表示 1

2—2143:表示双字元件高低字不颠倒,但字内高低字节颠倒。

例如:解码0x0000 0001  表示 0x0000 0100 (即256)

3—4321:表示双字元件内4个字节全部颠倒。

例如:解码0x0000 0001     表示 0x0100 0000 (即1677 7216)

32位浮点数解码顺序:调整双字元件的解码顺序,对于Modicon PLC,请设置为“0-3412”顺序解码。

0—3412:表示双字元件高低字颠倒,但字内高低字节不颠倒。

例如:解码 0x3F80 0000 表示 2.27795e-041

1—1234:表示双字元件不做处理直接解码(默认值)。

例如:解码 0x3F80 0000 表示 1.0

2—2143:表示双字元件高低字不颠倒,但字内高低字节颠倒。

例如:解码 0x3F80 0000 表示 -5.78564e-039

3—4321:表示双字元件内4个字节全部颠倒。

例如:解码 0x3F80 0000 表示 4.60060e-041

 

注释:1. 对于PLC及控制器等可编程设备,在需要读取大量数据的时候,请在设计下位程序时,尽量将要采集的数据放在相同寄存器的连续地址中,这样即可以提高每次采集的效率,又可以避免因地址不连续而导致的采集分块过多,通讯速度慢的问题,从而有效的提高采集速度。

     2. 对于32未解码顺序,需要设置内存变量MODBUSTYPECOM1(代表COM1),在系统启动时设置脚本置内存变量为0,1,2,3即可,默认为0,可以不设置。

特殊应用的开发

       本设备构件目前只实现部分通讯功能,如需要用作其它用途或本构件不能满足要求时,可自行进行开发,也可以提出具体的技术要求,由我们亲自为您定制。

 

附表:

附录1

本驱动构件支持的寄存器及功能码说明如下:

寄存器

读取功能码

写入功能码

功能码说明

[1区]输入继电器

02

02: 读取输入状态

[0区]输出继电器

01

05

01: 读取线圈状态

05: 强制单个线圈

[3区]输入寄存器

04

04: 读输入寄存器

[4区]输出寄存器

03

16

03: 读保持寄存器

16: 预置多个寄存器

说明:

1.本驱动构件支持01、02、03、04、05、16等常用功能码,对于其它非数据通讯用功能码暂不支持。

2.以上功能码均以10进制标注。功能码15和16分别对应16进制的0x0F和0x10。

注意:添加寄存器通道时,起始地址均为1,这是遵从Modbus协议的,即所谓的“协议地址”,对于部分寄存器起始地址为0的设备,通道添加时,地址应加1处理。

### 部署 Stable Diffusion 的准备工作 为了成功部署 Stable Diffusion,在本地环境中需完成几个关键准备事项。确保安装了 Python 和 Git 工具,因为这些对于获取源码和管理依赖项至关重要。 #### 安装必要的软件包和支持库 建议创建一个新的虚拟环境来隔离项目的依赖关系。这可以通过 Anaconda 或者 venv 实现: ```bash conda create -n sd python=3.9 conda activate sd ``` 或者使用 `venv`: ```bash python -m venv sd-env source sd-env/bin/activate # Unix or macOS sd-env\Scripts\activate # Windows ``` ### 下载预训练模型 Stable Diffusion 要求有预先训练好的模型权重文件以便能够正常工作。可以从官方资源或者其他可信赖的地方获得这些权重文件[^2]。 ### 获取并配置项目代码 接着要做的就是把最新的 Stable Diffusion WebUI 版本拉取下来。在命令行工具里执行如下指令可以实现这一点;这里假设目标路径为桌面下的特定位置[^3]: ```bash git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git ~/Desktop/stable-diffusion-webui cd ~/Desktop/stable-diffusion-webui ``` ### 设置 GPU 支持 (如果适用) 当打算利用 NVIDIA 显卡加速推理速度时,则需要确认 PyTorch 及 CUDA 是否已经正确设置好。下面这段简单的测试脚本可以帮助验证这一情况[^4]: ```python import torch print(f"Torch version: {torch.__version__}") if torch.cuda.is_available(): print("CUDA is available!") else: print("No CUDA detected.") ``` 一旦上述步骤都顺利完成之后,就可以按照具体文档中的指导进一步操作,比如调整参数、启动服务端口等等。整个过程中遇到任何疑问都可以查阅相关资料或社区支持寻求帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值