| 注册| 产品展厅| 收藏该商铺

行业产品

当前位置:
上海卓曙自动化设备有限公司>>西门子PLC模块>>西门子S7-1200模块>> 西门子S7-1200PLC模块吉林代理商

西门子S7-1200PLC模块吉林代理商

返回列表页
  • 西门子S7-1200PLC模块吉林代理商
  • 西门子S7-1200PLC模块吉林代理商
  • 西门子S7-1200PLC模块吉林代理商
  • 西门子S7-1200PLC模块吉林代理商
  • 西门子S7-1200PLC模块吉林代理商
收藏
举报
参考价 433
订货量 1
具体成交价以合同协议为准
  • 型号
  • 品牌 Siemens/西门子
  • 厂商性质 经销商
  • 所在地 上海市
在线询价 收藏产品

更新时间:2019-06-18 10:44:29浏览次数:189

联系我们时请说明是化工仪器网上看到的信息,谢谢!

同类优质产品

更多产品

产品简介

电动机功率 4kW 外形尺寸 6mm
应用领域 环保,食品/农产品,地矿,包装/造纸/印刷,纺织/印染 重量 2kg
西门子S7-1200PLC模块吉林代理商
西门子S7-1200PLC系统有五种不同模块,分别为 CPU 1211C、CPU 1212C 、 CPU 1214C、CPU1215C和CPU1217C。其中的每一种模块都可以进行扩展,以*您的系统需要。可在任何 CPU 的前方加入一个信号板,轻松扩展数字或模拟量 I/O,同时不影响控制器的实际大小。

详细介绍

西门子S7-1200PLC模块吉林代理商

 

西门子S7-300/400参数类型Pointer的应用

    1.参数类型Pointer

    使用参数类型Pointer(指针),可以在调用逻辑块时,将变量的地址作为实参传送给声明的形参。Pointer可以直接指向一个数据块中的变量,例如P#DB2. DBX4.0Pointer只能用于形参中的INOUT(不能用于FB)、IN_OUT变量。

    Pointer6个字节(见图4-26),字节0和字节1中的数值用来存放数据块的编号。如果指针不是用于数据块,DB编号为0。字节2~5与图4-25中的寄存器间接寻址的双字指针的的格式相同。

参数类型POINTER

    4-26    参数类型POINTER

    Pointer的实参可以采用指针形式,例如P#M50.0P#DB2. DBX4.0,也可以采用地址形式,例如将P#M50.0简写为M50.0,编译时STEP 7会将它自动地转换为指针格式。

    ANYPointer分别为10B6B,不能用32位的累加器1直接访问它们,因此在OB1中调用块时,CPUANYPointer的实参暂时保存在OB1的临时局部数据区中。

    2FC1的程序设计

    【例】  将同一地址区中相邻的若干个字累加。地址区的起始地址由参数类型为Pointer的输入参数Start_Addr提供。在项目“寄存器间接寻址”(见随书光盘的同名例程)中生成FC1,其局部变量如表4-5所示。

    4-5    FC1的局部变量

FC1的局部变量

    下面是FC1中的程序,*条指令中的P##Start_AddrOB1的局部数据区中保存参数Start_Addr的实参的地址,指令中的P#表示指针,第2#号表示局部变量。

    L    P##Start_Addr    //输入的地址指针送累加器1

    LAR1    //累加器1的指针值送地址寄存器AR1

    L    0

    L    W[AR1P#0.0]    //取指针第1个字内的数据块编号(见图4-26

    =I

    JC    _001    //不是数据块(编号为0)则跳转

    T    #DB_No    //保存数据块的编号

    OPN  DB[ #DB_No]    //用间接寻址打开指针的数据块

    _001L    D[AR1P#2.0]    //取指针内数据区的起始地址(图4-26中的第2~5个字节)

    LAR1    //保存到AR1AR1指向要累加的数据的起始地址

    L    L#0    //32位整数0装入累加器1

    T    #Result    //累加和清零

    L    #Number    //循环次数装入累加器1的低字

    BACK T    #Sycle_C    //暂存循环计数值

    L    W[ AR1P#0.0]    //取数据

    ITD    //转换为双整数

    L    #Result    //取累加和

    +D    //累加

    T    #Result    //保存累加和

    + AR1   P#2.0    //地址值增加两个字节,指到下一个字

    L    #Sycle_C    //循环计数器值装累加器

    LOOP BACK    //若循环计数器值的内容减1后非0,跳转到标号BACK

    3OB1的程序设计

    生成共享数据块DB2,在DB2中生成用于保存累加和的双整数Sum(见图4-29),以及有5个整数元素的数组Aray。下面是OB1调用FC1的程序,分别累加DB2M区中的5个字:

    CALL FC    1

    Start_Addr  =DB2DBX4.0    //数据区起始地址

    Number    =5    //需要累加的字数

    Result    I_DB2DBD0    //保存运算结果的双整数

    CALL FC

    Start_Addr  =P#M 10 0    //数据区起始地址

    Number    =5    //需要累加的字数

    Result    =MD20    //保存运算结果的双整数

    4.程序状态监控

    CPU运行时打开FC1,启动程序状态监控(见图4-27),监控累加器1(STAND-ARD)AR1和间接寻址(INDIRECT)的地址值。累加器1中的数字用十六进制格式显示。

    *次调用FC1时,执行完*条指令后,累加器1中为16#870000a8,即2#1000 0111 0000 0000 0000 0000 1010 1000,由图4-26和表4-3可知,这是地址P#V21.0,即*次调用FC1OB1的局部变量LB21的地址。

    4条指令读取Pointer的实参的*个字(数据块编号),判别是不是数据块。如果非零(表示是数据块)则用16位存储器间接寻址(DB[#DB_No])打开该数据块。用指令“L D[AR1P#2.0]”来读取Pointer实参的25个字节(数据区的起始地址DBX4.0)。将该地址送入AR1后,AR1指向DB2. DBX4.0,监控区中的AR1列显示DB4.0FC1中标号BACK下面的第2条“L  W[AR1P#0.0]”指令取出的是DB2. DBW4的值。

    为了验证V区是调用FC1OB1的局部数据区,在FC1的第2条指令处设置一个断点。执行完第2条指令后,CPU进入HOLD(保持)模式。

    此时打开CPU模块信息对话框的“堆栈”选项卡,选中B堆栈中的OB1,点击“L堆栈”按钮,打开OB1的局部数据堆栈对话框(见图4-28)。此时可以看到指针常数P#DB2. DBX4.0的值16#0002 8400 0020存放在从OB1的局部数据字节LB21开始的6个字节中。

L堆栈中的局部变量

    4-28    L堆栈中的局部变量

DB2中的数据与运算结果

    4-29    DB2中的数据与运算结果

变量表中的数据与运算结果

    4-30    变量表中的数据与运算结果

    5.程序运行的监控

    生成和打开名为“VAT累加”的变量表,在变量表中生成6个变量。图4-29和图4-30给出了两次调用FC1被累加的5个字和累加的结果(双整数)。

 参数类型是为逻辑块的形参定义的数据类型,用于在调用逻辑块时传递参数。除了简单数据类型和复杂数据类型之外,还可以使用下列参数类型:

    (1) TimerCounter

    使用参数类型Timer(定时器)和Counter(计数器),可以在调用逻辑块时,分别将定时器和计数器的编号(例如T3C21)作为实参传递给块的形参(见图4-16)。

 

    (2) Block

    使用参数类型Block_FCBlock_FBBlock_DBBlock_SDB,可以在调用逻辑块时,分别将FCFBDBSDB(系统数据块)作为实参传送给块的形参。块参数类型的实参应为同类型的块的地址编号(例如FB 2)或块的符号名。

    参数类型TimerCounterBlock只能用于块的输入参数(IN)的形参。


西门子S7-1200PLC模块吉林代理商

收藏该商铺

登录 后再收藏

提示

您的留言已提交成功!我们将在第一时间回复您~
二维码 意见反馈
在线留言