python 读写西门子PLC例子

软件: 西门子
全方位数据报表
许可分析

许可分析

免费体验
识别闲置、及时回收
许可优化

许可优化

免费体验
多维度智能分析
许可分析

许可分析

免费体验
减少成本、盘活许可
许可优化

许可优化

免费体验

```python


!/usr/bin/env python


coding: utf8


Project: pi4b_aliyuniot

欢迎浏览: python 读写西门子PLC例子


File : snap_client.py


Author : Long.Xu


http://gnolux.blog.csdn.net


Time : 2021/4/7 2:14 下午

Copyright 2021 Long.Xu All rights reserved.

from snap7 import util, client

from snap7.types import S7AreaMK, S7AreaDB

client_object = client.Client()

client_object.connect('127.0.0.1', rack=0, slot=1, tcpport=502)

访问机架、槽位和数据间隔


那里存储 PLC 架、槽位值表:


架 槽


s7200smart 0 1


s7300 0 2


s7400 见硬件组态


s71200/1500 0 0/1


访问机架和槽位的数据

byte_arrays = client_object.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)             设置二进制值

client_object.write_area(S7AreaMK, 0, 0, byte_arrays)

print('赋值后:', util.get_bool(byte_arrays, 0, 0))   输出写后的二进制值

访问 DB 区域和 200smart 的起始位点的数据

util.set_bool(byte_arrays, 1, 1, False)              设置 DB 区的值

client_object.write_area(S7AreaMK, 2, 0, byte_arrays)

访问数据块和 DB 区

byte_arrays = client_object.read_area(S7AreaDB, 1, 3222, 2)

print('赋值前:', util.get_word(byte_arrays, 0))       获取有符号短整数值

util.set_word(byte_arrays, 0, 199)                   设置有符号短整数值

client_object.write_area(S7AreaDB, 1, 3222, byte_arrays)

print('赋值后:', util.get_word(byte_arrays, 0))       输出改动后的值

断开连接并销毁客户端对象


client_object.disconnect()


client_object.destroy()


```


服务器脚本部分的改写保持了原文的逻辑:


```python


!/usr/bin/env python


coding: utf8


Project: pi4b_aliyuniot


File : snap_server.py


Author : Long.Xu


http://gnolux.blog.csdn.net


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()


buffer_size = 999999

db_data = (snap7.types.wordlen_to_ctypes[snap7.types.S7WLByte]  buffer_size)()

pa_data = (snap7.types.wordlen_to_ctypes[snap7.types.S7WLByte]  buffer_size)()

tm_data = (snap7.types.wordlen_to_ctypes[snap7.types.S7WLByte]  buffer_size)()

ct_data = (snap7.types.wordlen_to_ctypes[snap7.types.S7WLByte]  buffer_size)()

mk_data = (snap7.types.wordlen_to_ctypes[snap7.types.S7WLByte]  buffer_size)()

注册数据区域

server.register_area(snap7.types.srvAreaDB, 1, db_data)

server.register_area(snap7.types.srvAreaPA, 1, pa_data)

server.register_area(snap7.types.srvAreaTM, 1, tm_data)

server.register_area(snap7.types.srvAreaCT, 1, ct_data)

server.register_area(snap7.types.srvAreaMK, 1, mk_data)

启动服务器


server.start(tcpport=tcpport)


for _ in range(60):


try:


检查并处理来自客户端的事件


event = server.pick_event()


if event:


logger.info(server.event_text(event))

except snap7.snap7types.S7Exception as error:

处理异常

logger.error(f"Server failed to send: \n {error}")

time.sleep(1)


开始服务器循环


mainloop(502)


```

请注意,对于 COVID19 相关内容的部分,在提交代码时需要慎审查清理个人健康数据和敏感信息的法律和道德考虑。在将来的应用中,应确保遵循所有适用的数据保护法律和法规。

相关推荐

UMLChina公众号文章精选(20220227更新精选)
西门子200SMART(九)库
西门子plc几种常见的通讯协议分享
西门子plc S7-300出现通讯故障及远程维护办法
plc 400 与plc300和 300与300 以太网通讯的问题-工业支持中心-西门子中国
研究人员发现西门子工业控制器中的命令执行漏洞
西门子精智面板6AV2124-0GC01-0AX0详细概述
西门子低代码客户案例|旧貌换新颜,低代码激活老牌制衣企业创新力
C#上位机与西门子S7-200 Smart 网口通讯
python 读写西门子plc 包含S7协议和Fetch/Write协议,s7支持200smart,300plc,1200plc,1500plc...
西门子S7-1200系列plc Modbus通讯资料
西门子plc1200自由口通信
西门子plc配KUKA机器人程序
西门子S7-1200F或1500F系列安全plc的组态步骤和基础编程(一)
西门子博途v16系统要求_西门子博途之所以不如三菱plc直观易懂,就是因为你被它表象迷惑...
西门子触摸屏VBScript编程系列教程(3)——变量
Intouch2014无法自动启动西门子驱动DASSIDIRECT.EXE的原因及解决办法
西门子1200与变频器Modbus RTU通讯 西门子1200与变频器通讯
西门子200plc软件的安装和使用
浅谈西门子840d主轴速度控制_从化区西门子676611AA104BS0维修型号齐全

最近推荐

catia界面设置区别
catia中文怎么读
catia中国读音
catia的正确读音
catia读音
catia全称
catia中文名
catia 中文翻译
catia中文名叫什么
catia树字体大小调整
index-foot-banner-pc index-foot-banner-phone

点击一下 免费体验万千客户信任的许可优化平台

与100+大型企业一起,将本增效

与100+大型企业一起,将本增效

申请免费体验 申请免费体验