固原西门子S7-300PLC核心代理-SIEMENS欢迎您 介绍
西门子PLC代理商有限公司 西门子变频器代理商有限公司价格 西门子触摸屏代理商有限公司销售 西门子PLC代理商有限公司现货 西门子PLC代理商有限公司代理商 公司在经营活动中精益求精,具备如下业务优势:
SIEMENS 可编程控制器PLC
1、SIMATIC S7 系列PLC、S7-200、S7-1200、S7-1500、S7-300、S7-400、ET200
2、逻辑控制模块 LOGO!230RC、230RCO、230RCL、24RC、24RCL等
3、SITOP 系列直流电源 24V DC 1.3A、2.5A、3A、5A、10A、20A、40A
4、HMI 触摸屏TP700,TP900,TP1200,TP1500,KP400,KP700,KP900,KP1200,KP1500,KTP400,KTP1200等系列
SIEMENS 交、直流传动装置
1、 交流变频器 MICROMA,STER系列:MM、MM420、MM430、MM440、ECO
MIDASTER系列:MDV
6SE70系列(FC、VC、SC)
2、全数字直流调速装置 6RA23、6RA24、6RA28、6RA70 系列
SIEMENS 数控 伺服
1、840D、802S/C、802SL、828D 801D :6FC5210,6FC6247,6FC5357,6FC5211,6FC5200,6FC5510,
2、伺服驱动 : 6SN1123,6SN1145,6SN1146,6SN1118,6SN1110,6SN1124,6SN1125,6SN1128
【信誉为主、诚信交易】【长期销售、安全稳定】
【称心满意、服务动力】【真诚面对、沟通无限】
【服务满意、一诺千金】【质量保障、客户满意】

西门子一级代理商产品远销:
1.华北地区:北京、天津、河北、内蒙古(2个市,2个省)。
2.东北地区:辽宁、吉林、黑龙江、大连,齐齐哈尔(3个省、2市)。
3.华东地区:上海、江苏、浙江、安徽、福建、江西、山东、(7个省)。
4.华中地区:河南、湖北、湖南、广东、广西、海南、深圳(7个省、市)。
5.西南地区:重庆、四川、贵州、云南、西藏(5个省、市)。
6.西北地区:陕西、甘肃、青海、宁夏、新疆、山西、(6个省、区)。
PLC程序互相干扰该怎么分析解决 编写PLC程序时编写了一个简单的带参数的子程序,但是发现在调用时,*个子程序执行后,第二个子程序也会有输出,不知道是为什么?程序很简单,是我们编程程序经常会用到的一个起保停电路。程序运行中,I0.0接通后,Q0.0输出为1,Q0.1不应该为1的却也为1了。下面是我个人之见解,若有分享不当之处,望大家指正,谢谢! 为什么会出现这个情况呢? 这主要是对于子程序中变量的类型应用不正确造成的这种错误。子程序中有四种变量类型,分别为: (1)输入变量(IN):用于传递实际参数进入子程序运算 (2)输入/输出变量(IN/OUT):用于把实际参数的初始值传递到子程序中进行运算,运算完后把结果放回到该实际参数中,因此这个变量的实际参数不能使用常数。 (3)输出变量(OUT):该变量分配的实参用于存储子程序中运算完后的结果 (4) 临时变量(TEMP):用于存储子程序中运算的中间结果。 在这四种变量中,对子程序输出会有影响的主要是后面两个变量,我们主要了解后面两个变量的时候,就可以避免带参数子程序在重复调用时会出现相互干扰的问题。 首先,我们看输出变量(OUT)的使用,在上面这个朋友所发表的问题中,就是因为输出变量的问题,所以才造成了这种情况的。 我们可以来分析这个程序,在这个程序中,“启动”、“停止”这两个明显建立的是输入变量(IN)的变量类型,而“输出”这个建立的是输出变量(OUT)类型。我们要分析他为什么会出现干扰,得从PLC的扫描过程,及实操与形参的对应如下图所示,箭头方向表示数据传递方向。 众所周知PLC的扫描是从上往下周期型扫描的,所以PLC在执行程序的时候,会先执行网络1,然后在执行网络2的程序,所以当执行网络1的程序的时候,会把实参的状态传递到子程序的形参中,所以对于网络1的程序来讲,形式参数:“#启动:L0.0”=I0.0,“#停止:L0.1”=I0.1 而实参Q0.0=“#输出:L0.2” 所以在执行这个子程序时,当I0.0=1,I0.1=0的时候,即按下启动按钮I0.0时,形参“#启动:L0.0=1”, “#停止:L0.1=0”,执行程序后 “#输出:L0.2=1”因Q0.0= “#输出:L0.2”,所以Q0.0=1.。 执行网络2时,形式参数:“#启动:L0.0”=I0.2,“#停止:L0.1”=I0.3 而实参Q0.1=“#输出:L0.2”所以在执行网络2的程序时,当I0.0=0,I0.1=1时,则:“#启动:L0.0=0”,“#停止:L0.1=0”因“#输出:L0.2”在上一个网络的运行结果为1,所以当“#启动:L0.0”与“#输出:L0.2”进行逻辑或运算后,得到的结果为1,然后与“#停止:L0.1”的非做逻辑与运算,所以“#输出:L0.2”还是保持为1的结果。所以输出Q0.1=“#输出:L0.2”=1. 通过这样的分析,前面调用子程序的输出状态或在下个子程序调用中会用到,因此大家就可以理解为什么按下I0.0这个启动按钮后,Q0.0 和Q0.1都会有输出了。 若需要处理这个问题应该如何处理呢 需要处理这个问题,很简单,我们只需要把这个输出的变量改成输入/输出的变量就可以了,因为输入/输出变量,相对于输出变量来讲,他是需要把初始值给到我们的子程序对应的形参去运算,运算完后在给出,还是以刚才的方法去分析,就算前一个网络中,他的输出结果“#输出:L0.2=1”执行到下一个网络后,因为改成输入/输出,会把Q0.1的初始状态0,给到“#输出:L0.2”,所以开始运算时是以“#启动:L0.0”与“#输出:L0.2”进行逻辑或运算,因两个状态都为0,所以运算结果为0,然后跟“#停止:L0.1的非”做逻辑与运算,输出结果“#输出:L0.2=0”因此Q0.1=“#输出:L0.2”=0.所以当你把这个变量改成输入/输出变量的时候就不会产生干扰了。
方式3:请求-响应机制,1次握手 这种方式和IT系统的MQ/WEB SERVICE等消息处理机制非常类似。 如发动机上线工位,MES给PLC下发工单,过程可参考下图: PLC控制系统 具体握手过程为: PLC在PLC_MSG写入请求数据,如工位,同时将REQUEST_SENT置位。 MES扫描到REQUEST_SENT,读取PLC_MSG,然后生成工单数据,并写入MES_MSG,同时将RESPONSE_SENT置位。 PLC扫描RESPONSE_SENT,读取MES_MSG并写入本地数据块,然后将REQUEST_SENT和PLC_MSG复位。 MES将所有数据和控制位复位。 我们可以看出,整个数据交换的过程只发生了1个来回,即1-2步,而3-4步是将消息销毁的动作。 这种方式还有一个特点,就是封装性好,同样一个接口,既可以下发工单,也可以上传过站数据,区别在于PLC_MSG/MES_MSG里存储的数据内容不一样。 方式4:请求-响应机制,2次握手 同样是发动机上线的例子,过程可参考下图: PLC控制系统 具体握手过程为: PLC在PLC_MSG写入请求数据,如工位。 PLC将REQUEST_SENT置位。 MES扫描到REQUEST_SENT,读取PLC_MSG,然后发送REQUEST_RECEIVED。 MES生成工单数据,并写入MES_MSG。 MES将RESPONSE_SENT置位。 PLC扫描RESPONSE_SENT,读取MES_MSG并写入本地数据块,然后将RESPONSE_RECEIVED置位。 MES扫描RESPONSE_RECEIVED,将所有数据和控制位复位。 PLC将本地数据和控制位复位。 我们可以看出,整个过程相当于进行了2次握手,其中1-3步是第1次握手,用于接收请求;4-8步是第2次握手,用于下发数据。 我们可以看出,方式4比方式3繁琐很多,但是这种方式在实际项目中用得还非常多。这是因为完整响应时间可能多达数秒,而PLC的扫描周期只有几十毫秒,中间多出的状态位可以作为状态指示缓解工人等待的焦虑,也可以作为断点方便通信调试。 方式5:基于工位生产周期 在一些工位,会有多个关键的业务过程,比如发动机上线工位先上线,然后装配,*发送过站记录。 那么在一个完整的工位生产周期中,PLC需要和MES做2次数据交换,第1次下载工单,第2次上传过站记录,如下图所示: PLC控制系统 具体握手过程为: 发动机到达,PLC给ENGINE_ARRIVAL置位。 PLC检查托盘、设备、物料,条件具备后将STATION_READY置位。 MES将STATION_READY_RECEIVED置位。 MES将工单数据写入MES_DATA。 MES将MES_DATA_SENT置位。 PLC将MES_DATA写入本地数据块,并将MES_DATA_RECEIVED置位。 MES复位IT侧所有数据和状态位。 PLC开始本工位的装配作业,并将发动机序列号写入ENGINE_SN。 PLC装配完成后,PLC将PLC_COMPLETE置位。 MES将PLC_COMPLETE_RECEIVED置位。 MES执行过站逻辑,完成后将MES_COMPLETE置位。 PLC将MES_COMPLETE_RECEIVED置位。 MES复位IT侧所有数据和状态位。 发动机准备离开,PLC将ENGINE_LEAVE置位。 PLC复位所有数据和状态位。 我们可以看到,此方式非常繁琐,但是优点是: 生产周期中的关键状态都有体现,可以很方便地通过HMI进行监控。 PLC状态对应于实际的生产执行情况,发生问题时容易追踪。 程序出错时,可以很直观地看到通信执行到哪一步。 另外,我们还应理解,下载工单和上传过站记录都只是完整生产周期的一部分,并且有内在的逻辑联系,比如:在装配的过程上发现缸体有问题,需要换一个缸体上线,此时由于MES还没有接收到过站记录,因此即使在第2次接收到STATION_READY信号时,MES下发的仍旧是同一个工单,这样就可以有效避免工单和发动机序列号的损失。