0

我的代码:

import snap7.client as s7

ip = '192.168.0.7'
rack = 0
slot = 1
data_blok = 100
start_adress = 0
size = 260
try:
    plc = s7.Client()
    plc.connect(ip, rack, slot)
    con = plc.get_connected()
    print(f"Bağlantı Durumu: {con}")

    db = plc.db_read(data_blok, start_adress, size) //read

    name = db[0:256].decode('UTF-8').strip('\x00')
    print(f'Data AA: {name}')
    value = int.from_bytes(db[256:258], byteorder='big')
    print(f'Data BB: {value}')
    boll = bool(db[258])
    print(f'Data CC: {boll}')
except:
    print("hata")

输出:

Bağlantı Drumu: True
Data AA: HELLO WORD //string
Data BB: 55 //int
Data CC:True //bool
过程结束,退出代码 0 ...

////////////////////////////////////

如何在这里更改整数值?
plc.db_write(?????????)

4

2 回答 2

2

我知道它迟到了,但这个讨论可能帮助了我()它对其他人有帮助。

您应该首先使用 snap7.util 中的 set_int() 函数将字节数组中的整数值更改为:

 your_int_value = 219
  
 snap7.util.set_int(db, 256, your_int_value)

这将获取您的字节数组“db”,并从索引为 256 的字节开始写入整数值“your_int_value”。

其次,您应该将修改后的字节数组“db”发送回 plc,如下所示:

plc.db_write(data_blok, start_addres, db)

这样做是将字节数组“db”写入编号为“data_blok”的数据块,从索引为“start_addres”的字节开始

这里还有我用于向 plc 写入特定数据类型的函数:

plc = snap7.client.Client()

#PLC'ye yazma fonksiyonları
def write_bool(db_num,start_byte,boolean_index,bool_value): #Bool yazma 
    data = bytearray(1)
    snap7.util.set_bool(data,0,boolean_index,bool_value)
    plc.db_write(db_num,start_byte,data)

def write_byte(db_num,start_byte,byte_value): #Byte yazma 
    data = bytearray(1)
    snap7.util.set_byte(data,0,byte_value)
    plc.db_write(db_num,start_byte,data)

def write_int(db_num,start_byte,int_value): #Integer yazma 
    data = bytearray(2)
    snap7.util.set_int(data,0,int_value)
    plc.db_write(db_num,start_byte,data)  

def write_real(db_num,start_byte,real_value): #Real yazma 
    data = bytearray(4)
    snap7.util.set_real(data,0,real_value)
    plc.db_write(db_num,start_byte,data)

只需将数据块编号赋予“db_num”,写入“start_byte”的起始字节的字节索引,以及相应函数的实数、字节、整数或布尔值。

于 2021-08-18T14:38:47.217 回答
0

首先,您需要操作缓冲区。(数据库命名变量)。

client.db_write(data_blok, start_adress, size, db)

https://github.com/gijzelaerr/python-snap7/blob/master/example/example.py

于 2021-02-02T08:31:06.730 回答