脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - python snap7读写PLC的操作方法

python snap7读写PLC的操作方法

2023-02-26 14:44苏坡爱豆的笑容都没你的 Python

这篇文章主要介绍了python snap7读写PLC的操作方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

主要在DB块里操作

读DB块

?
1
2
3
4
5
6
7
8
9
import snap7
import struct
 
def plc_connection():
    PLC_IP = '192.168.10.10'
    PLC = snap7.client.Client()
    PLC.connect(PLC_IP, rack=0, slot=1)
    return PLC
PLC = plc_connection()

PLC.read_area()方法从PLC中读取指定区域的数据。
1200表示DB块的编号,90表示DB块内的偏移地址,4表示要读取的字节数。 

?
1
2
data2=PLC.db_read(db_number=1200, start=90, size=4)
print(data2)

data2是个bytearray(b'\x00\x00\x00\x05'),struct.unpack()方法将读取到的4个字节数据按照大端字节序("!"表示大端字节序)解包为一个整数。解包的结果以元组的形式返回

?
1
2
3
data3 = struct.unpack('!i', data2)
print(data3)
#data3 = 5

'!i''!h'都是Python中struct库中的格式化字符串,用于指定要解析的二进制数据的格式和字节顺序。

其中:

  • '!'表示使用网络字节顺序(big-endian)。
  • 'i'表示要解析的数据类型是4字节的整数,也就是int类型。
  • 'h'表示要解析的数据类型是2字节的有符号整数,也就是short类型。

因此,'!i'用于解析4字节的大端整数,'!h'用于解析2字节的大端有符号整数。

当解析不同类型的数据时,需要使用相应的格式化字符串。在这里,根据PLC中数据类型的不同,可以选择不同的格式化字符串来解析数据。通常需要根据PLC的数据类型和大小来选择正确的格式化字符串,否则解析出来的数据将会是错误的。

写DB块

已经知道这个要写入的DB块是DINT类型的。要把数字1写进去

?
1
a=struct.pack('!i', 1)

a= b'\x00\x00\x00\x01'

?
1
PLC.db_write(1200, 90, a)

在这个例子中,1200表示要写入的DB块的编号,90表示从该块的偏移地址90处开始写入数据,b'\x00\x00\x00\x01'表示要写入的四个字节的数据。

到此这篇关于python snap7读写PLC的文章就介绍到这了,更多相关python snap7读写PLC内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_44656422/article/details/129129482

延伸 · 阅读

精彩推荐
  • PythonPython聊天室程序(基础版)

    Python聊天室程序(基础版)

    这篇文章主要为大家详细介绍了Python聊天室程序的基础版,包含客户端和服务器端两部分,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    tom555cat10432021-01-26
  • Python在Django中进行用户注册和邮箱验证的方法

    在Django中进行用户注册和邮箱验证的方法

    这篇文章主要介绍了在Django中进行用户注册和邮箱验证的方法的相关资料,需要的朋友可以参考下 ...

    hbnn9622020-08-22
  • PythonDjango中更改默认数据库为mysql的方法示例

    Django中更改默认数据库为mysql的方法示例

    这篇文章主要介绍了Django中更改默认数据库为mysql的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    飘在云层的念想6592021-04-25
  • PythonPython实现最大子序和的方法示例

    Python实现最大子序和的方法示例

    这篇文章主要介绍了Python实现最大子序和的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    神不烦4682021-08-01
  • Python关于Python 3中print函数的换行详解

    关于Python 3中print函数的换行详解

    最近在学习python3,发现了一个问题想着总结出来,所以下面这篇文章主要给大家介绍了关于Python 3中print函数换行的相关资料,文中通过示例代码介绍的非...

    xhuihuigo3692020-12-01
  • Pythonpython实现经典排序算法的示例代码

    python实现经典排序算法的示例代码

    这篇文章主要介绍了python实现经典排序算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

    Xlgd5362021-09-03
  • Pythontensorflow实现逻辑回归模型

    tensorflow实现逻辑回归模型

    这篇文章主要为大家详细介绍了tensorflow实现逻辑回归模型的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ...

    Missayaa10652021-04-01
  • Pythonpython基于openpyxl生成excel文件

    python基于openpyxl生成excel文件

    这篇文章主要介绍了python基于openpyxl生成excel文件的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下...

    Zoe_yan10992021-08-18