利用python直接读取西门子变频器参数,省去变频器与PLC的连接,代码如下。
硬件连接:一根网线连接电脑与变频器,变频器必须要有PN口。
电脑的网络需与变频器的网络ip在同一个网段。如变频器为192.168.0.2,电脑ip可以设置成192.168.0.20
import snap7 import struct def plc_connect(ip, rack=0, slot=1): client = snap7.client.Client() client.connect(ip, rack, slot) return client def plc_con_close(client): client.disconnect() def rd_value(client,parameter_num,start,size,datatype): # wr_value--十进制,datatype:i为整型int;数据类型: Unsigned32 area = snap7.types.Areas.DB rd_value_bytearray= client.read_area(area, parameter_num, start,size)#size:数据类型,float: size=4 rd_value=struct.unpack('!' + datatype, rd_value_bytearray) return rd_value,rd_value_bytearray
if __name__ == "__main__":
ip='192.168.0.2'
client=plc_connect(ip)
print(rd_value(client,752,0,4,'f'))
代码中的‘f’是怎么来的:
查手册,数据类型为floatingpoit32,在根据下表查询得到,4个字节,格式符为‘f’。