先简单介绍下小弟这个项目,此共12套西门子1517F的CPU,通讯采用PN通讯。废话不多说直接上干货,
关于安全IO部分的(ET200SP),
硬件部分:在IO模块和底座之间有个白色的小卡件这个东西千万千万不能丢,这个卡件丢了会导致安全地址
分配不了。这个小东西折腾我2个多小时查问题。
软件部分:安全IO成对运用,分为1oo1校验和1oo2校验1oo1校验是单通道校验。1oo2校验分为 双高电平和一高一低电平。如果接安全关栅要把短路测试的使能去掉
安全输出没啥好说的
介质冗余(MRP)这个项目我们环的比较少只把交换机环起来了。介质冗余需要分配一个管理者,其他客户端就可以了,实际接口要和设置的一样才行。需要注意的是要把远程IO的看门狗时间改为大于
200ms,因为MRP域网络重建的最大时间就是200ms,PNPN Coupler:普通用法就不在说了,想说的就是用来传输安全信号的时候,要先接收后发送,也就是要在安全的主程序的第一行写接收,最后一行写发送。
会持续更新
楼主最近还看过
前面说用python和1500通讯。一直在更新其他东西。今天把源码贴上来。
import xlwt
import time # 调用time库
import snap7 # 调用snap7库
from snap7.util import *
from snap7.snap7types import *
from threading import Timer
data=[]
plc = snap7.client.Client()
plc.connect('192.168.10.10', 0, 1) # 连接plc
def get_n_title():
plc_a=plc.read_area(0x84,1,0,2) # 长度为2读取的最小值为一个byte
plc_aa=get_int(plc_a,0) # DB1.DBW0.0
plc_b=plc.read_area(0x84,1,2,4)
plc_bb=get_dword(plc_b,0) # DB1.DBD2.0
plc_c=plc.read_area(0x84,1,6,4)
plc_cc=get_real(plc_c,0) # DB1.DBD6.0
print(plc_aa,plc_bb,plc_cc) # 打印数值
t = Timer(1, get_n_title)
t.start()
if __name__ == "__main__":
i = 0
get_n_title()