python连接西门子plc_python 连接PLC 接收数据(一)

python 连接PLC 接收数据

这是今年工作中做的一个项目,我的项目主要是通过Python 开发的

在这里面需要接收到PLC的信号 才能运行逻辑

这个连接PLC的库是 通过PLC那方提供的的 一个库 HslCommunication.py

# 从PLC获取数据

定义数组接收数据

# 连接PLC@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

from HslCommunication import SiemensS7Net

from HslCommunication import SiemensPLCS

# PLC

def printReadResult(result):

if result.IsSuccess:

# print(result.Content)

return result.Content

else:

print("failed " + result.Message)

siemens = SiemensS7Net(SiemensPLCS.S300, "176.16.11.20")

if siemens.ConnectServer().IsSuccess == False:

print("connect falied")

# # 从PLC获取数据

datas = ['False', 0, 0, 0, 0, 0, 0, 0, 0, 0]

def TG():

while True:

time.sleep(1)

#一号 --------------------------------------------------------------------------------------------------

datas = [

printReadResult(siemens.ReadString("DB551.12.0", 8)),

printReadResult(siemens.ReadInt16("DB551.4", 2))[0]/100,

printReadResult(siemens.ReadInt16("DB551.44", 2))[0],

printReadResult(siemens.ReadBool("DB551.3.0")),

printReadResult(siemens.ReadBool("DB551.42.2")),

printReadResult(siemens.ReadBool("DB551.42.0")),

printReadResult(siemens.ReadString("DB551.22.0", 6)),

printReadResult(siemens.ReadBool("DB551.3.1")),

printReadResult(siemens.ReadInt16("DB551.20", 3))[0] / 10

]

print(data1)

if __name__ == '__main__':

TG()

这里就是连接了一个PLC的IP 接收数据 他不同的数据有不同的 DB块

可以设置长连接 短连接

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值