python連接S7-1500並讀取輸出數據測試

 先搭建1500 PLCSIM 仿真器

注意連接機制要允許來自遠程對象的PUT/GET通信訪問。

Snap7是一個開源的,支持32位和64位跨平臺的通訊包組件,可以實現與西門子系列PLC進行數據讀寫操作,目前支持的PLC包括1200/1500,S7200,LOGO等。

def connect(self, address, rack, slot, tcpport=102)

 其中address是PLC的IP地址,如果使用NetToPLCsim連接PLCsim,則IP地址應該是計算機的IP地址,rack機架號和slot插槽和NetToPLCsim設置的一樣,針對S7-1500此處應該是0和1,端口默認是102,不需要進行更改

def read_area(self, area, dbnumber, start, size)

area是PLC內各寄存區的代碼,具體參考下表 

import snap7
from snap7.snap7exceptions import Snap7Exception
from time import sleep


def connect(device, ip, rack, slot):
    while True:
        # check connection
        if device.get_connected():  # 如果
            break
        try:
            # attempt connection
            device.connect(ip, rack, slot)
        except:
            pass
        sleep(5)


def ReadOutput(dev):
    data = dev.read_area(0x82, 0, 0, 1)  # IO輸出區域地址。。。DB0開始的Q0.0的一個units長度
    binary_list = [int(x) for x in bin(data[0])[2:]]  # uint長度爲4,取第三位,高位在前即---(Q0。0-Q0.7)
    print(binary_list)


def main():
    s71500 = snap7.client.Client()
    connect(s71500, '192.168.0.122', 0, 1)
    while True:
        try:
            ReadOutput(s71500)
            sleep(5)
        except Snap7Exception as e:
            connect(s71500, '192.168.0.122', 0, 1)


if __name__ == '__main__':
    main()

查看輸出指示燈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章