西门子模块-授权代理商-2023
1.引言 CPU寄存器状态字的各位给出了有关指令状态或结果的信息以及所出现的错误,我们可以将二进制逻辑操作状态位信号状态直接集成到程序中,以控制程序执行的流程。 2.状态字寄存器 先简单介绍一下CPU中状态字。 CC1 CC0 检查完成后,如果: 0 0 A == 0 结果 =0 1 0 A > 0 结果 > 0 0 1 A < 0 结果 < 0 ● BR位:状态字的第8位称为二进制结果位。它将字处理程序与位处理联系起来,在一段既有位操 作又有字操作的程序中,用于表示字逻辑是否正确。将BR位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。在梯形图的方块指令中,BR位与ENO位有对应关系,用于表明方块指令是否被正确执行:如果执行出现了错误,BR位为0,ENO位也为0;如果功能被正确执行,BR位为1, ENO位也为1。在用户编写的FB/FC程序中,应该对BR位进行管理,功能块正确执行后,使BR位为1,否则使其为0。使用SAVE指令将RLO存入BR中,从而达到管理BR位目的。 状态字的9-15位未使用。 3.具体使用 下面我们结合STEP7中的指针编程来具体介绍条件码CC0/CC0的用法。 不同的指令在CPU中执行时间是不同的。浮点数比定点数执行时间要长;字逻辑指令比位逻辑指令执行时间要长;在某些程序中适当使用状态字来进行编程可以减少CPU程序的执行时间。 例1:比如说要比较一个DB中块的DBBO-DBB99这100个字节是正数是负数还是0,正数用1来表示;负数用-1来表示;0用0来表示。并且将对应结果存入MB200开始的100个字节中。我们通常的做法可能为: 如果利用条件码来进行编程,既可以减少程序的大小还会减少一定的指令执行时间,我们只需要将 中间的比较程序加以优化,即可以达到目的。 例2:根据状态位C0和CC1的状态而跳转的跳转功能指令JZ不改变任何状态位的状态,而且逻辑操作结果RLO值也会“随着”该跳转功能带到跳转程序段中,供用户程序其它逻辑操作之用(不改变/FC状态)。 例3:我们实际应用中可能要利用某些协议转换网关(比如说Hilscher公司的NTTAP系列网关)来和某些串口协议的仪表进行通信时,会遇到CRC校验的问题,关于CRC校验时需要判断溢出位是否为1的问题来进行程序的进一步计算。我们以EURO2408的MODBUS通信时需要的CRC校验为例说明CRC校验的步骤: 1、装载16#FFFF到一个16位CRC寄存器; 2、将CRC寄存器的高8位字节与信息中的个8位字节相异或,结果返回到CRC寄存器中; 3、将CRC寄存器数据向右移动一位; 4、如果溢出的位等于1,则将CRC寄存器与16#A001相异或,结果返回到CRC寄存器中; 4、如果溢出的位等于0,则重复第3步; 5、重复第3、4步骤,直到已经移位了8次; 6、将CRC寄存器的高8位字节与信息中的下一个8位字节相异或,结果返回到CRC寄存器中; 7、重复第3步到第6步,直到信息中所有字节都与CRC寄存器相异或,并都移位了8次; 8、后的CRC寄存器中的结果即为CRC校验码,后被添加到信息(数据)的末尾(交换!低8位 在前,高8位在后;) 在第4步中需要判断溢出的位是否为1,如何判断对于整个程序有着重要的影响。我们可以用A>0指令来判断这个条件,具体代码的编写,有兴趣时大家可以根据上面的步骤编写一个自己的CRC程序。 4.结束语 在一般情况下,我们不必考虑这些状态位,但在某些情况下,利用这些状态位并结合一定的指令,可以给我们的编程带来更大的灵活性,同时对于进一步提高自己的编程水平也有一定的作用。 5.参考文献 [1].SIEMENS AG.STL编程手册V5.3。 [2].SIEMENS AG.S7-300指令及执行时间。 [3].廖常初.S7-300/400PLC应用技术。 |
结构文本列入plc编程语言相比其它的VB,C语言相比,它的优点在哪? 是出于什么明显的特性? 答:结构文本是遵循IEEE标准的编程语言,PLC的运行原理决定了编程语言不可能和PC的编程语言一样的。 1、PLC的CPU是单片机,与电脑不同 2、PLC的CPU架构与电脑不同 3、PLC语言编译原理与电脑不同 西门子plc语言编程SCL是类似于Pascal语言的,使用这种已经化的文本语言。 |
联系方式
- 地址:上海杨浦 上海市松江区广富林路4855弄88号3楼
- 邮编:200093
- 电话:15821971992
- 经理:聂聪
- 手机:15821971992
- 传真:021-33556143
- QQ:2724917714
- Email:2724917714@qq.com