17838383235
新闻中心
西门子S7-300,计数器模块 350-2现货西门子代理
发布时间:2024-05-14        浏览次数:7        返回列表
西门子S7-300,计数器模块 350-2现货西门子代理

GE fanuc PLC R寄存器的拆分使用


    在TBA/22灌装机上角度编码器使用中,厂家连接了一块解码板来显示夹爪的角度值,极端情况下解码板损坏给现场维修工程师带来一定的不便 同时带来一定的维护成本还增加了故障几率,先前一直想修改这个方案,后来在抓取TBA/22故障数据时在维纶HMI编程中得到实践,把这个方案整理一下 方便同类型问题参考。



    在开始之前先打开Proficy Macine Edition软件看一下程序源代码描述。


    在此不再讨论角度编码器的原理以及接线等等……请自动忽略

    回到t1T0001梯形图程序界面,开发人员已经算好了角度值对应的二进制bit值,只是没有赋值给寄存器 没有做到TPOP上去,其对应的关系是:










BIN_1 == %M00001//bit 0BIN_2 == %M00002//bit 1BIN_3 == %M00003//bit 2BIN_4 == %M00004//bit 3BIN_5 == %M00005//bit 4BIN_6 == %M00006//bit 5BIN_7 == %M00007//bit 6BIN_8 == %M00008//bit 7


    关于TBA/22灌装机的程序源代码就说到这里,下面主要说明如何将角度值放到寄存器并以原来的八进制(8#)数据来显示。

    


 在开始之前剖析下R寄存器的数据结构和真正意义上的内存地址,这里用%R00000来举例(注意!%R00000该地址在GEplc系统中不存在,这里只是为了说明问题),我们经常见到的%R00001,%R00002,%R00003……只是PLC厂家提前定义好的指向内存地址的用户地址,下面用C代码简单演示一下











#include <cstdio>int main(void){    unsigned char R00001=32,R00002=64,R00003=128;//声明3个连续的无符号字节型变量    printf("\n R00001,R00002,R00003对应的内存地址是%p,%p,%p",&R00001,&R00002,&R00003);//输出地址    printf("\n R00001,R00002,R00003对应的数据是%d,%d,%d",R00001,R00002,R00003);//输出相应内存中的数据    char();    return 0;}



运行后的结果:


从结果来看,R00001等等只是一个变量标签而已,但其背后是指向内存的特定的物理空间的起始地址,而数据类型则解释了从起始地址向后再延续多少个单位的内存空间分配给该变量,通俗地说就是变量的尺寸,有了地址和尺寸 一个变量才能成为一个信息容器,才可以被用来处理和存储宝贵的数据。从这个例子你可以看到在PLC中提前定义用户地址是多么的方便开发人员。

    下来解释变量的数据类型,在此只针对GE fanuc PLC 的WORD型数据举例,先看GE手册上的解释。其他类型PLC自行参考相应的手册。


    资料上的解释太过官方,我在excel中做个模型,模型中分解了%R00001和%R00002这两个WORD类型数据的内部空间,就是手册上说的“16个连续位”,这16个连续的位通过0、1的变化来处理用户想要表达的数据,对于计算机来说一切都是二进制,而人类通常习惯十进制来做计算,再经过一些简单的转换,普通的用户就能得到相对直观的十进制数,这里不再赘述。


    PLC本身就是一套小型的计算机系统,只不过用于工业控制,写到这里距离我要表达的标题内容很接近了,在此之前原谅我说了很多,因为计算机科学中的一些概念通常是建立在其他的概念之上的,这些概念就像脚手架。

    

    下来进入核心部分(R寄存器拆开是啥样?R寄存器如何拆开?)

直接回答个问题 用%R00001 word型数据举例



















//GE plc寄存器%R00001 word型数据 拆分为位 其对应的位地址如下%R00001.X[00]%R00001.X[01]%R00001.X[02]%R00001.X[03]%R00001.X[04]%R00001.X[05]%R00001.X[06]%R00001.X[07]%R00001.X[08]%R00001.X[09]%R00001.X[10]%R00001.X[11]%R00001.X[12]%R00001.X[13]%R00001.X[14]%R00001.X[15]


第二个问题;如何在软件中使用拆分的地址  打开PME软件,绘一段图,当你看到标签名是粗体的时候表示未给该标签分配地址。


下面是具体的操作步骤,用标签BIT0举例









1、鼠标左键点击BIT0在程序中的标签2、在Inspector窗口中点击 Ref Address 后面的方形按钮 3、在弹出的Reference Address wizard窗口的 MemoryArea栏选择R-Register4、在Reference Address wizard窗口的Index 栏中填入数字8 //表示 %R000085、在Reference Address wizard窗口的 Bit Reference栏中填入数字0 //表示 %R00008的第0位====> %R00008.X[00] 6、点击OK完成


完成以上的操作之后 将鼠标移动到程序中该标签位置,系统会显示拆分后的位地址 同时标签名变成正常字体,如果操作熟练的话直接将%R00008.X[00],%R00008.X[01],…………,%R00008.X[15]复制到相应的位置。


后来讲解如何将TBA/22角度值(2进制)进行处理,并转换成现场工程师需要的八进制来显示。

     部分:将角度值传递给寄存器%R00001  直接上梯形图程序。












//对应的关系表达如下:%R00001.X[00] = %M00001%R00001.X[01] = %M00002%R00001.X[02] = %M00003%R00001.X[03] = %M00004%R00001.X[04] = %M00005%R00001.X[05] = %M00006%R00001.X[06] = %M00007%R00001.X[07] = %M00008


第二部分:将%R00001寄存器接收到的角度值转换成现场工程师需要的8进制,  见图:将%R00001的角度值传递给%R00002 然后设置一下显示格式


角度显示格式的设置:在Inspection 窗口的Default Display Format栏选择Octal (设置数据以8进制显示)。


然后就可以在online状态时看到角度的变化了 当然也可以做到TPOP上去


    终于写完了,这是我的篇原创。搞内容创作的确很累,还消耗时间 但是今年的目标是输出,将平时学到的点滴知识通过小型的工程项目或是内容进行输出,以此保持自己对于技术的敏感度。


核心提示:西门子PLC代理,西门子变频器代理,西门子伺服电机代,西门子工控机代理,西门子触摸屏代理
刚发布的文章
联系方式
  • 地址:中国(湖南)自由贸易试验区长沙片区开元东路1306号开阳智能制造产业园(一期)4#栋301
  • 手机:17838383235
  • 联系人:徐嘉泉
新闻分类
最新发布
企业新闻
站内搜索