分享

Python-snap7与S7-1500的通讯

 沈峰dcmjx7q995 2020-07-22
一、Python与pip的安装

Python安装略,pip是Python包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。Python 3.4+ 以上版本都自带 pip 工具。

查看python及pip的版本号。

python --versionpip --version

二、安装Python-snap7

pip在线安装python-snap7的命令如下:

pip install python-snap7

下载并解压snap7-full-1.4.2,找到release\windows\win64下的的snap7.dll和snap7.lib,分别拷贝到Python的安装目录和系统windows下的SysWOW64下。

三、PyCharm中引用第三方模块

PyCharm编辑Python时,发现无法引用snap7等第三方模块,因此无法获得代码智能提示。

事实上,在cmd中通过pip安装的第三方模块,只是加载到了Python本体解释器,并未加载到PyCharm对Python的解释器中。

进入PyCharm中,点击下方的Terminal,进入PyCharm自带的类似cmd的命令行窗口,按照cmd的安装步骤再来一遍即可解决。

四、S7-1500项目设置

这是工控人的强项,简单说明如下:

1、CPU:rack=0,slot=1

2、IP地址设置

3、访问级别,选择“完全访问权限”

4、连接机制,勾选“允许来自远程对象的PUT/GET通讯访问”

5、DB数据块属性,去除“优化的块访问”的勾选

6、DB数据块中数据的属性,勾选“可从HMI/OPC UA访问”

五、连接测试

通讯测试非常顺利,读写数据时,格式转换是一个难点,另篇详述。

import snap7import structplc = snap7.client.Client()plc.connect('192.168.0.12', 0, 1)print('连接状态:', plc.get_connected())IB0_str = plc.read_area(0x81, 0, 0, 1)IB0_tuple = struct.unpack('!B', IB0_str)IB0_int = struct.unpack('!B', IB0_str)[0]QB0 = plc.read_area(0x82, 0, 0, 1)MW2 = plc.read_area(0x83, 0, 2, 2)DB1_DBD4_str = plc.read_area(0x84, 1, 4, 4)DB1_DBD4_tuple = struct.unpack('!f', DB1_DBD4_str)DB1_DBD4_float = DB1_DBD4_tuple[0]print('IB0 =', IB0_str)print('IB0 tuple =', IB0_tuple)print('IB0 int =', IB0_int)print('DB1_DBW4 =', DB1_DBD4_float)
MD4 = b'\x1A\x2B\x3C\x4D'plc.write_area(0x83, 0, 4, MD4)

一汽铸造有限公司无锡分公司
江苏省无锡市惠山区北惠路55号

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多