首页 > 编程语言 >python 读写西门子PLC例子

python 读写西门子PLC例子

时间:2022-11-23 22:33:10浏览次数:47  
标签:snap7 python 读写 server arrays plc PLC byte types


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,S7AreaDB

my_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 snap7

logger = logging.getLogger(__name__)


def mainloop(tcpport: int = 1102):
server = snap7.server.Server()
size = 999999
DBdata = (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:
break
time.sleep(1)


mainloop(502)

 

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

python 读写西门子PLC例子_开发语言




 

 

标签:snap7,python,读写,server,arrays,plc,PLC,byte,types
From: https://blog.51cto.com/fangkailove/5881791

相关文章

  • python subprocess.cal调用wkhtmltohtml中遇到的问题
    最近项目中使用了wkhtmltohtml 工具,这个工具转换pdf功能非常方便。但是在python作为命令来调用时有些要注意的地方,另外还有一些和字体相关的问题要注意。一.字体问题......
  • python requests 上传文件
    起因为了测试企业微信上传临时素材接口,我写了一段python脚本,使用的是requests 库,按照官方接口说明: 要构造相应表单的栏位,才能指定上传后文件的显示名称,于是我测试脚本如下......
  • python http.server 的测试和常见问题解决方法
    一.测试准备先分别写一个简单httpserver 和一个html文件。html文件只是引入了jquery, 后面测试用<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8">......
  • python 编程技巧
     元组命名如何为元组中的每个元素命名,提高程序可读性案例:学生信息系统中数据为固定格式:(名字,年龄,性别,邮箱地址,......)学生数量很大为了减小存储开销,对每个学生信息用元......
  • python初体验
    第一句代码print("helloworld")快速切换项目栏alt+1快速运行当前文件shift+ctrl+F10关闭控制台shift+ctrl+F4 注释:单行注释:#(快捷键ctrl+/)多行注释:""......
  • 进入python的世界_day37_数据库——mysql字符编码配置、数据引擎配置、字段类型及语法
    一、字符编码与配置文件输入\s可以看到一些信息如果想要永久修改编码配置,可以在mysql的文件夹根目录下自己复制并改名一个my.ini去操作配置文件[mysqld]character-se......
  • python入门基础之数据库
    python入门基础之数据库目录python入门基础之数据库字符编码与配置文件存储引擎主要的四个存储引擎创建表的完整语法字段类型之整型严格模式字段类型之浮点型字段类型之字......
  • Python基础之数据库:5、创建表的完整语法、MySQL数据类型
    一、创建表的完整语法1、创建表的语法createtable表名(​ 字段名1字段类型(数字)约束条件,​ 字段名2字段类型(数字)约束条件,​ 字段名3字段类型(数字)......
  • python-取pop3服务器的邮件并保成为 .eml 文件
      取pop3服务器的邮件,分析出邮件标题,toccbcfrom,并保成为.eml文件1importpoplib2importStringIO,email34defdcode(str):5h=email.Header.He......
  • python贪心算法——以“修理牛棚”题目为例
    [USACO1.3]修理牛棚BarnRepair题目描述在一个月黑风高的暴风雨夜,FarmerJohn的牛棚的屋顶、门被吹飞了好在许多牛正在度假,所以牛棚没有住满。牛棚一个紧挨着另一个......