西门子控制单元6SL3055-0AA00-3PA1
在用户程序中,不可以同时编程SEND作业和FETCH作业。
即:
只要SEND作业(SFB 63)没有*终止(DONE或ERROR),就不能调用FETCH作业(SFB 64)
(甚至在REQ=0的时候)。
只要FETCH作业(SFB 64)没有*终止(DONE或ERROR),就不能调用SEND作业(SFB 63)
(甚至在REQ=0的时候)。
在处理一个主动作业(SEND作业、SFB 63或FETCH作业、SFB 64)时,同时可以处理一个被动作业
(SERVE作业、SFB 65)。
14:可以将MICR.master420到440作为组态轴(位置外部检测)和CPU 317T一起运行吗?
可以,但在动力和精度方面,对组态轴的要求差别非常大。在高要求情况下,伺服驱动SIMODRIVE 611U、MASTERDRIVES MC或SINAMICS S必须和CPU 317T一起运行。在低要求情况下,MICROMASTER系列也能满足动力和精度要求。
15:如何在已配置为DP从站的两个CPU模块间组态直接数据交换(节点间通信)?
两个CPU站配置为DP从站,而且由同一个DP主站操作,它们之间的通信通过配置交换模式为DX可以完成直接数据交换。
16:如何使用SFC65,SFC66,SFC67 和 SFC68 进行通信?
对于单向基本通信,使用系统功能 SFC67 (X_GET)从一个被动站读取数据,使用系统功能SFC68(X_PUT)将数据写入一个被动站(服务器)。这些块只有在主动站中才调用。对于一个双向基本通信,调用站中的系统功能SFC65 (X_SEND),在该站中想将数据发送到另一个主动站。在同样为主动的主动接收站中,数据将通过系统功能SFC66 (X_RCV)记录。
什么是自由分配 I/O 地址?
地址的自由分配意味着您可对每种模块(SM/FM/CP)自由的分配一个地址。地址分配在 STEP 7 里进行。先定义起始地址,该模块的其它地址以它为基准。
自由分配地址的优点:因为模块之间没有地址间隙,就可以优化地使用可用地址空间。在创建标准软件时,分配地址过程中可以不考虑所涉及的 S7-300 的组态。
18:诊断缓冲器能够干什么?
更快地识别故障源,因而提高系统的可用性。评估STOP之前的后事件,并寻找引起STOP的原因。
诊断缓冲器是一个带有单个诊断条目的循环缓冲器,这些诊断条目显示在事件发生序列中;一个条目显示的是近发生的事件。如果缓冲器已满, 早发生的事件就会被新的条目所覆盖。根据不同的CPU,诊断缓冲器的大小或者固定,或者可以通过HW Config中通过参数进行设置。
19:诊断缓冲器中的条目包括哪些?
1) 故障事件
2) 操作模式转变以及其它对用户重要的操作事件
3) 用户定义的诊断事件(用SFC52 WR_USMSG)
在操作模式STOP下,在诊断缓冲器中尽量少的存储事件,以便用户能够很容易在缓冲器中找到引起STOP的原因。因此,只有当事件要求用户产生一个响应(如计划系统内存复位,电池需要充电)或必须注册重要信息(如固件更新,站故障)时,才将条目存储在诊断缓冲器中
用户使用CPU315-2DP的CPU实现一个很复杂的工艺控制,时间要求很严格,有很多时间序列,例如A点信号为1后触发定时器1,定时5秒钟,时间到后,输出一电平给B点,触发定时器2,延迟3秒后,采集C传感器的值,触发定时器3,并每隔10秒计算一下(有个公式)等等,类似这样的工艺有很多段,每段都不太一样,使用定时器数量也不一样,用户程序编了,但还没完成,因为定时器不够用了,超过了plc能提供的定时器数量256个,所以就有了上面的那些报怨。 总结一下,用户报怨西门子plc能提供的定时器数量太少不够用,不能满足用户的需求(终于听明白了)。 听完用户的问题,用户也平静了许多,我心里也有底了。首先我没有给用户直接的答案,而是先关心一下用户调试程序的困难,我只是说了句:“您调试程序是不是不太方便啊?”我的话音刚落,用户的话匣子又打开了,诉苦啊,调试不方便,定时器走乱了,互相条件依存太多, ……总之没有好用的地方,快被折磨死了。听完用户所言后提醒自己,别再往用户“伤口” 上撒盐了,还是开药方吧,先把病看好了,接下来再聊别的。 不够用可以使用IEC定时器(SFB3-SFB5),只要CPU容量够用,数量没有限制,显然用户不知道此信息,否则他就不会报怨定时器不够用了,如果真的使用了IEC定时器编程,估计用户的程序会有一半是定时器的程序了,所以我先没有告诉他,免得又引出很多话,用户也不容易啊。 那给用户开了什么药方了呢? 方子很简单:定时器一个,加法指令一个(MW0=MW0+1)。 使用方法:因为用户所有定时器使用的时间单位都是秒,于是就将T1设定成1秒的定时器,程序运行后启动定时器,然后在定时时间到后执行MW0=MW0+1,即每定时到1秒钟MW0就加1,这样通过判断MW0的值就会得出相应的计时时间(秒),并能判断出时间过了多少秒,例如MW0=10,就是10秒,当MW0数值达到*大定时时间值后可以清零。这样就很好的满足了用户的需求,解决了问题,同时程序结构比较清晰,不容易乱 |
DECO译码指令本人感觉蛮难理解。*近有网友说对难懂的指令,可以编一小段指令进行试验,然后看结果,比较好理解。
我用三菱的仿真软件进行仿真运行。
我用M8013的上升沿去触发MOV K0 D0,用M8013的下降沿去触发INCP D0,
然后用译码指令DECO D0 Y100 K3去译码,本意是让Y00~Y07循环输出。可结果是只有Y00和Y01交替输出。后来分析的结果可能是下降沿过后D0马上又让上升沿置0了,下一个脉冲无法执行“加一”指令所造成。于是删掉MOV K0 D0,结果正确。
进一步仿真发现,当K=1时,只有1个输出;K=2时,有4个输出;K=3时,有
8个输出,K=4时,有16个输出。本例中DECO D0 Y100 K3 ,因K=3,置位情况如下:
D=0 Y00=1
D=1 Y01=1
D=2 Y02=1
D=3 Y03=1
D=4 Y04=1
D=5 Y05=1
D=6 Y06=1
D=7 Y07=1
感觉有趣,记录于此。望同行指正。
西门子plc特殊标志继电器(SM)
|