S7-300的RLO上升沿检测指令 -(P)- 的作用是不是会受程序扫描时间影响? (1)我在FC块里面用到-(P)- ,发现程序比较长的时候就出现下图中情况,根本不能用来检测上升沿; (2)当我把OB1其他的程序都删掉时,只调用这个FC块时,就可以检测上升沿,不会有问题。 (3)另一个是我尝试-(P)-指令要是不在FC块,直接在OB1中,也是不会有问题。  下面是廖常初老师的回帖:P线圈(上升沿检测指令)上面的地址用来保存上一扫描周期的RLO的值,不能使用FB、FC的临时局部变量。改为全局变量或FB的静态变量就可以了。因为调用程序时同一级FB、FC的临时变量公用同一片地址区,前面调用的块的临时变量被后面调用的块的临时变量覆盖,上升沿检测指令不能正常运行。在OB1中只调用一个FC,公用的地址区变成该FC独用,没有问题。OB1的临时变量的地址区是OB1单独使用的,程序放在OB1里也没有问题。 |
TITLE=子程序注释 //CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位,在*高位(MSB)的位置补零,而*低位(LSB),移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码(16#A001)进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为*终的CRC值。 // 下面为CRC的计算过程: // 1.设置CRC寄存器,并给其赋值FFFF(hex)。 // 2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。 // 3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。 // 4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。 // 5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。 // 6.重复第2至第5步直到所有数据全部处理完成。 // 7.*终CRC寄存器的内容即为CRC值。 |
优势

SIRIUS 3RW55 Keyvisual 软起动器
产品特性/功能 | 性能/优点 |
自动参数设置 | 调试极为方便,甚至在变化的负载条件下也具有高可靠性 |
混合开关技术与三相电机控制 | 极低功耗以及*优/对称电机控制 |
TIA 集成 – 可选配通信模块 | 在自动化工程中实现高效组态和灵活应用 |
可拆卸 HMI 带有彩色显示屏、本地接口和微型 SD 卡插槽 | 灵活的用户界面和直观的菜单引导操作 |
泵停止功能和转矩控制功能 | 低机械载荷和*优停泵控制 |
根据 ATEX/IECEx 指令进行了认证 | 适合起动防爆型电机 |
系统冗余 S2 | 可以简便、直观地集成到容错自动化系统中 |
通过 OPC UA 服务器直接集成到 MindSphere | 全球数据可用性,优化工厂运行 |