CA88

首页 新闻中心 行业动态 【手把手教程】用Python衔接Modbus通讯 ,工业自动化其实很单一!

【手把手教程】用Python衔接Modbus通讯 ,工业自动化其实很单一!

分类:行业动态
起源:CA88科技
颁布功夫:2024-05-10
浏览:3967

在当今急剧发展的工业自动化和智能造作领域 ,对高效、靠得住的通讯和谈的需要日益增长。Modbus ,作为一个汗青悠久且宽泛选取的工业通讯和谈 ,表演着至关沉要的角色。结合Python的壮大编程能力 ,我们能够越发矫捷和高效地实现工业自动化解决规划。

 

本篇文章将通过教程介绍若何利用Python与Modbus和谈进行通讯 ,以及若何在现实的工业环境中利用这些技术。


Python衔接Modbus通讯


什么是Modbus ?


Modbus 是一种宽泛使用的工业通讯和谈 ,由 Modicon Systems 开发。它选取主从架构 ,允许一个主设备(Master)与多达 247 个从设备(Slaves)进行通讯。

 

Modbus的类型


Modbus重要分为两种类型:


Modbus串行:使用串行线(如 RS232 或 RS485)进行通讯。


Modbus TCP/IP:基于以太网 ,克服了串行通讯的限度。

 

Modbus串行是使用串行电缆传输信号 ,若是以点对点方式衔接(一主一从) ,则将使用 RS232或RS422 电缆 , 但若是以点对多点方式衔接。 (一主多从)使用RS485电缆 ,但由于串行电缆的很多限度 ,蕴含距离、设置和数量 ,它此刻已经发展到可能支持使用Modbus TCP/IP通过以太网衔接。


Python衔接Modbus通讯


在本次教程中 ,我们选择使用Modbus TCP ,但是Modbus Serial也能够使用一样的代码进行测试。

 

筹备工作


为了起头使用Python与Modbus通讯 ,你必要:


1.装置pymodbus(能够使用pip或下载)


2.下载并设置Modbus从设备法式以进行测试。

 

尝试起头


使用 Python 作为服务器 ,modbus sim 作为客户端 ,你能够实现 Modbus 和谈的通讯。以下是尝试步骤:


from pymodbus.client.sync import (
    ModbusSerialClient,
    ModbusTcpClient,
    ModbusTlsClient,
    ModbusUdpClient,
)
from pymodbus.transaction import (
    ModbusAsciiFramer,
    ModbusBinaryFramer,
    ModbusRtuFramer,
    ModbusSocketFramer,
    ModbusTlsFramer,
)

client = ModbusTcpClient(host='localhost',port=502,framer=ModbusSocketFramer)

def WriteData(slave_id,address,count,value):
    client.write_registers(address,[value]*count,unit=slave_id)

def ReadData(slave_id,address,count):
    x = client.read_holding_registers(address,count,unit = slave_id)
    print(x.registers)

def ReadCoil(slave_id,address,count):
    x = client.read_coils(address,count,unit=slave_id).bits
    print(x)

def WriteCoil(slave_id,address,count,value):
    if value == "ON":
        status = True
    else:
        status = False
    x = client.write_coils(address,[status]*count,unit=slave_id)
    # print(x)

def WriteString(slave_id,address,count,value):
    client.write_registers(address,[0]*count,unit=slave_id)
    if len(value)%2 > 0:
        value = value + " "
    c = len(value)//2
    for i in range(c):
        y = value[0 + (2*i):2 + (2*i)]
        print(y)
        q = [ hex(ord(r))[2:4] for r in y]
        print(q)
        k = int(q[0]+q[1],16)
        client.write_registers(address+i,k,unit=slave_id)

print(client.connect())

# WriteData(1,0,2,555)
# WriteCoil(1,0,8,"ON")

# ReadData(1,0,8)
# ReadCoil(1,0,8)

# WriteString(1,0,8,"banana")


从代码中能够看出 ,能够通过更改客户端和成帧器来更改为使用串行或 TCP。

 

打开modbus从站法式并进入设置并选择Modbus TCP/IP。


选择模式为 Modbus TCP

选择模式为 Modbus TCP

 

 

Slavev id 和地址类型能够从 setup -> Slavev 界说中设置

Slavev id 和地址类型能够从 setup -> Slavev 界说中设置

 

尝试使用WriteData (2,0,2,555)号令 ,其中前2个数字是slave_id ,0是默认数据 ,2是要使用的数字 ,555是按运行后将发送的数据。


从机 ID 2 在地址 1 和 2 处的值为 555

从机 ID 2 在地址 1 和 2 处的值为 555

 

若是使用 WriteCoil(3,0,3,”ON”) ,将在线圈输出存储器中号令一个打开或关关位 ,其中0是初始位 ,3是要使用的编号 ,on是要打开的号令。


从机 ID 3 的线圈位于地址 1,2,3</span></p>

从机 ID 3 的线圈位于地址 1,2,3

 

能够使用其他读取地址号令尝试使用已写入的函数。


读取从站3的值

尝试读取从站3的值

 

通过测试 ,我们能够看到 ,仅仅通过这段代码就可能通过Modbus和谈进行通讯。你应该已经对Modbus和谈及其在工业自动化中的利用有了更清澈的理解。


Python与Modbus的通讯技术


Python作为一种高效矫捷的编程说话 ,与Modbus和谈结合 ,为工业节造系统的设计和执行提供了无限可能。无论你是工业自动化领域的新手 ,还是经验丰硕的专业人士 ,把握Python与Modbus的通讯技术都将极大提升工作效能和系统的智能化水平 ,助你在工业自动化的路路上走得更远。



- END -
热点推荐
热点资讯
热点话题
CA88Licos系列产品
PLC过控:EC200系列CPU

EC200系列CPU是一款高机能幼型PLC ,充分阐扬幼型机的单体优势 ,以超值的性价比为用户幼型节造系统提供解决规划。

PLC过控:EC300系列CPU

EC300系列CPU是一款中型PLC ,通讯接口丰硕且拓展性强 ,为过程节造领域的中幼型设备和系统提供不变、靠得住和高性价比的解决规划。

PLC过控:EC400系列CPU

EC400系列CPU是一款大型PLC ,拥有丰硕的通讯接口和壮大的拓展性 ,支持双CPU和双PLC冗余 ,为过程节造领域的大型系统提供不变、靠得住和高性价比的解决规划。

PAC运控:MC500系列CPU

LicOS MC500是一款幼型活动节造器 ,支持总线轴和脉冲轴 ,在16轴以内或者总线+脉冲混合活动节造场景中 ,MC500提供不变靠得住、高性价比的混合式活动节造解决规划。

PAC运控:MC600系列CPU

LicOS MC600系列是一款中型活动节造器 ,它提供不变靠得住、机能壮大的混合式活动节造解决规划。

PAC运控:MC700系列CPU

LicOS MC700是专门针对高难度、高精度要求的复杂活动节造系统或设备打造的一款产品 ,它占有极强的算力和实时性保障。

I/O系统:GL200系列

GL200系列IO系统以其丰硕的 ?橹掷唷⒂浊煞奖愕牡镀缴杓啤⒏叻直媛市藕挪杉褪凳狈蠢∧芰 ,为自动化行业提供不变靠得住的解决规划。

I/O系统:GR200系列

GR200系列远程通讯扩大 ? ,支持EtherCAT与Profinet ,实现远程机架扩大 ,建设24V冗余电源和16通路数字I/O ,简化工控自动化集成。

I/O系统:GL100系列

GL100系列IO系统以全面覆盖的 ?槔嘈汀⒏叻直媛市藕糯χ煤徒媒莸墓こ套樘芰 ,为用户提供定造化解决规划 ,满足多样化的工业自动化需要。

I/O系统:GR100系列

LicOS GR100系列扩大 ?橹С諩therCAT和PROFINET双和谈 ,兼容主流设备 ,适配GL100系列IO ? ,提供全面的通路级诊断职能 ,实现高效系统构建与故障响应。

伺服驱动:S2系列伺服驱动器

S2系列伺服驱动器 ,以全新设计和精彩表观 ,结合LSM系列伺服电机 ,提供全面的驱动节造解决规划 ,实现地位、速度和扭矩的精确切换 ,确保机能卓越和用户履历的便捷与矫捷。

伺服驱动:S3系列伺服驱动器

S3系列伺服驱动器以其比S2更紧凑的体积 ,专为狭幼空间设计 ,与LSM系列伺服电机的无缝共同 ,提供合用于各类驱动利用的高机能解决规划 ,实现矫捷的地位、速度和扭矩节造 ,确保用户享有卓越机能和不变靠得住的操作履历。

伺服驱动:T3系列脉冲型伺服驱动器

LicOS T3系列脉冲型伺服是新一代高机能伺服驱动器 ,可实现亚微米级此外地位节造精度 ,可大幅提升工业自动化设备的精座 ,速度、效能和不变性。具备通用化和平台化两大特点 ,支持RS485通讯 ,功率领域涵盖200W~1000VV。

伺服驱动:U系列尺度型伺服驱动器

LicOS U系列新一代高机能AC伺服驱动器。拥有高响应 ,高精度、高速度的特点 ,同时选取先进底层算法 ,占有多种高级职能 ,可能适应多行业场景 ,功率领域涵盖100W~7500W

远程RTU:RZ系列油气款RTU

LicOS RZ系列向油气款RTU ,面向油气工控的高机能远程数据采集、节造与传输终端 ,集成数据采集、和谈转换、冗余通讯及本地边缘处置于一体

远程RTU:RC系列轨交款RTU

LicOS RC系列向轨交款RTU ,面向轨交工控的高机能远程数据采集、节造与传输终端 ,集成数据采集、和谈转换及本地边缘处置于一体

远程RTU:NC系列电网款RTU

LicOS NC系列向电网款RTU ,面向电网工控的高机能远程数据采集、节造与传输终端 ,集成数据采集、和谈转换、冗余通讯及本地边缘处置于一体

散布式DCS:DCS 5.0 边缘节造数据中心

LicOS DCS 5.0 边缘节造数据中心 ,实现软件界说节造的主题,集成过程节造、安全联锁、工艺优化等所有主题职能。

散布式DCS:DCS 5.0 智能现场终端

LicOS DCS 5.0 智能现场终端 ,直接与出产过程交互 ,掌管数据采集、感知和节造指令的执行。

工业互换机:LC3000系列互换机

LC3000系列工业以太网互换机 ,可满足工厂自动化、轨路交通、能源等严苛工业场景需要 ,为大型系统提供不变、靠得住和高性价比的解决规划。

CA88科技 ,助您开启工业数字化和智能化之路

在线留言
企微客服
CA88科技在线客服

官方企微客服

扫码关注
关注CA88科技

CA88科技公家号

在线客服
返回顶部

申请产品试用

感激您关注CA88科技 ,为了更好的为您服务 ,请填写并提交以下信息 ,我们将尽快与您联系!

基础信息

需要信息

*
CA88PLC征询
【网站地图】