client.py 存取 西门子PLC数据的客户端例子

#!/usr/bin/env python
# -*- coding: utf-8 -*-# Project: pi4b_aliyuniot
# File   : snap_client.py
# Author : Long.Xu <fangkailove@yeah.net>
#          http://gnolux.blog.csdn.net
#          QQ:26564303
# Time   : 2021/4/7 2:14 下午
# Copyright 2021 Long.Xu All rights Reserved. from snap7 import util, client
from snap7.types import S7AreaMK,S7AreaDBmy_plc = client.Client()
# my_plc.set_connection_type(3)# -------------------------------------------
# plc rack and slot value table
# -------------------------------------------
# plc             rack            slot
# -------------------------------------------
# s7-200smart     0               1
# s7-300          0               2
# s7-400/WIN AC   见硬件组态       见硬件组态
# s7-1200/1500    0               0/1
# -------------------------------------------my_plc.connect('127.0.0.1', rack=0, slot=1, tcpport=502)byte_arrays = my_plc.read_area(area=S7AreaMK, dbnumber=0, start=0, size=2)
print('赋值前', util.get_bool(byte_arrays, 0, 0))
util.set_bool(byte_arrays, 0, 0, False)
my_plc.write_area(S7AreaMK, 0, 0, byte_arrays)
print('赋值后', util.get_bool(byte_arrays, 0, 0))
util.set_bool(byte_arrays, 1, 1, False)
my_plc.write_area(S7AreaMK, 2, 0, byte_arrays)# DB区和200samart的V区,dbnumber 填 1, 其它填0
byte_arrays = my_plc.read_area(S7AreaDB, 1, 3222, 2)
print('赋值前', util.get_word(byte_arrays, 0))
util.set_word(byte_arrays, 0, 199)
my_plc.write_area(S7AreaDB, 1, 3222, byte_arrays)
print('赋值后', util.get_word(byte_arrays, 0))my_plc.disconnect()
my_plc.destroy()

Server.py 模拟西门子plc 的例子

#!/usr/bin/env python
# -*- coding: utf-8 -*-# Project: pi4b_aliyuniot
# File   : snap_server.py
# Author : Long.Xu <fangkailove@yeah.net>
#          http://gnolux.blog.csdn.net
#          QQ:26564303
# Time   : 2021/4/7 2:14 下午
# Copyright 2021 Long.Xu All rights Reserved. import time
import logging
import snap7logger = logging.getLogger(__name__)def mainloop(tcpport: int = 1102):server = snap7.server.Server()size = 999999DBdata = (snap7.types.wordlen_to_ctypes[snap7.types.S7WLByte] * size)()PAdata = (snap7.types.wordlen_to_ctypes[snap7.types.S7WLByte] * size)()TMdata = (snap7.types.wordlen_to_ctypes[snap7.types.S7WLByte] * size)()CTdata = (snap7.types.wordlen_to_ctypes[snap7.types.S7WLByte] * size)()MKdata = (snap7.types.wordlen_to_ctypes[snap7.types.S7WLByte] * size)()server.register_area(snap7.types.srvAreaDB, 1, DBdata)server.register_area(snap7.types.srvAreaPA, 1, PAdata)server.register_area(snap7.types.srvAreaTM, 1, TMdata)server.register_area(snap7.types.srvAreaCT, 1, CTdata)server.register_area(snap7.types.srvAreaMK, 1, MKdata)server.start(tcpport=tcpport)while True:while True:event = server.pick_event()if event:logger.info(server.event_text(event))else:breaktime.sleep(1)mainloop(502)

西门子plc的读写,可以用 snap7库,参考官网: Snap7 Homepage

												

python 读写西门子PLC例子相关推荐

  1. s7 200 java_java android 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC...

    本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 gi ...

  2. 如何使用 Python 构建 西门子PLC Snap7通信

    如何使用 Python 构建西门子 PLC Snap7通信 PLC(Programmable Logic Controller)即可编程逻辑控制器,可以理解为一个微型计算机,广泛应用于工业控制领域中, ...

  3. python与西门子PLC通讯

    python与西门子PLC通讯 安装Python-snap7 win+R打开"运行",输入cmd,确定后,进入DOS命令行终端,输入下面的命令: pip install pytho ...

  4. 用python编写西门子plc程序_snap7读写西门子plc1200步骤(python)

    本文是利用snap7进行对plc1200进行读写,所用语言是python3,windows7下,plc具体型号为S7-1212DC/DC/DC 1.snap7安装 win+R打开运行串口,输入cmd, ...

  5. .net通过S7.net读写西门子PLC中,字符串,bool,整数,小数及byte型

    注:.net中通过TCP/IP方式通过S7.net.dll动态库,连接到西门子PLC,西门子程序中许勾选优化块,程序读取需要 db块号+偏移量 一.使用VS项目,在项目中添加S7.net动态库 代码中 ...

  6. plc编程和python的联系_通过Python与西门子PLC通信

    供大家想要与西门子PLC通信的朋友使用 1.该程序是通过python snap7连接西门子1200.1500系列PLC并按照I.Q.M区采集打印信息: 2.用户打开应用程序之前,要将目录下的snap7 ...

  7. C#读写西门子PLC中英文字符串数据的学习笔记

    最近由于需要对西门子PLC进行字符串类型数据的读写,才专门了解了一下西门子PLC字符串类型的数据的使用及存储形式.在PLC中: 一.String数据类型包含总字符数和当前字符数. String 类型提 ...

  8. java 读取kepserver_记kepServer读写西门子PLC

    在程序开发过程中为了测试方法或者验证某个属性的值是否正确 经常通过Kepserver 的 OPC Quick Client来手动置点或者读取点位 例如 这里显示的值都是经过转化后得到的十进制值,那我们 ...

  9. s7.net 写数据到plc_三个C#读写西门子PLC的类库

    HslCommunication dathlin/HslCommunication​github.com 这个功能是最丰富的,M,Q,I,DB块随便读写,而且不仅是西门子,各家PLC都有,还附带各种d ...

  10. python plc_基于python的西门子plc数据采集系统

    这个是网络上别人写的,采用的opc获取数据,然后通过tcp传回,采集器以tcp服务端存在,自己再写一个tcp客户端接收数据进行处理就好了. 技术环境: (1)采用python开发环境(32位),支持W ...

最新文章

  1. VS Code 安装插件、自定义模板、自定义配置参数、自定义主题、配置参数说明、常用的扩展插件
  2. 向下滚动页面导航悬浮
  3. [转]设计模式(22)-Strategy Pattern
  4. malloc动态分配多维数组
  5. 大白话 + 13 张图解 Kafka
  6. Java不确定参数个数的函数方法,实现求多个数最小值
  7. USB的八个问题和答案(转)
  8. 大咖微课 | 直面Angular2系列课第二期开讲
  9. 元素周期表排列的规律_中考化学:金属活动性顺序表和元素周期表规律总结
  10. JDeveloper中的Java反编译器
  11. matlab单自由度系统,【Matlab代码】外力单自由度阻尼系统的数值解
  12. 修改disk驱动监控文件系统的IO特征
  13. windows 7 安装 db2 v11.1 下载 安装教程
  14. C#(0x8007000B)
  15. 吴军《数学之美》-读书笔记
  16. 深信服三面/hr面 总结
  17. 热修复——Bugly让热修复变得如此简单
  18. stlink-opencd-gdb调试程序
  19. python 使用twilio进行发短信
  20. 如何实行互联网企业PMO项目管理体系建设和推广落地

热门文章

  1. 在html css中加粗显示,css字体怎么加粗?
  2. 【Bye-Bye】MMD镜头+动作打包下载.zip
  3. android smb windows,Android使用SMB协议共享电脑内文件方法
  4. 一些生物信息学常用的分析法的介绍
  5. 社会工程学:关于一些信息收集的网站
  6. 5G系统中BBU与RRU之间前传接口(CPRI)带宽计算
  7. 图像处理系列——直方图之灰度直方图(Image Histogram)
  8. 油田生产数据选取进展22.3.12 观察实验
  9. mysql经纬度 微信_微信获取用户的经纬度
  10. 【微服务】微服务架构图