当前位置:
工控论坛
> >
产品
>
PLC
>
西门子(Siemens)PLC
我要发帖
S7-300几句话编程不信的话可以试一下。有能解释原因的就更好了
点击:
666
| 回复:
2
北环路
关注
私信
精华:1帖
求助:0帖
帖子:12帖 | 121回
年度积分:0
历史总积分:242
注册:2006年8月16日
发表于:2010-05-27 20:58:21
楼主
在FC1块里调用另一个FC2块,
FC1根据以下两种方法赋值如下内容:
CALL FC2:
AD1=DB1.DBW10
或者方法2:
OPN DB1
CALL FC2
AD1=DBW10(注意此时区别)
FC2内容:
L #AD1
L 1
+I
T #AD1
(注意此时的输入型可以用在这里的输出,实际使用表明这点)
在调用时有个IN型输入变量暂叫AD1,此时赋值有两种:方法1,DB1.DBW10送给这个AD1;
方法2或者在调用FC块之前,用语句打开OPN DB1,然后在使用DBW10送给这个AD1。此时得到的结果是不一样的。
前者DB1.DBW内容不变。后者内容+1循环。
分享到:
收藏
邀请回答
回复楼主
举报
yuanle
关注
私信
精华:0帖
求助:0帖
帖子:9帖 | 10208回
年度积分:2747
历史总积分:48332
注册:2005年4月22日
发表于:2010-05-27 21:48:05
1楼
個人認為:
OPN指令啟用DB時,實際CPU是對DB寄存器(當然,也可以OPN DI1,AD=DIW10,此時CPU對DI寄存器)進行操作,也就是傳遞給IN的不是DBW的值,而是DB寄存器的地址,相當於傳遞了ANY指針,每執行一次OPN,就要重寫一次DB。
而使用絕對地址,相當於引用了DB的值,而不是地址。
而FC的IN端,根據IEC61131,則是只讀的,因此使用絕對地址不能更改數據塊的值。
當使用FB,並將AD建立在IN_OUT上,就可以使用絕對地址,此時,背景DB相當於實現了DI寄存器的功能。
以上僅為個人的劣見,望指正。
Good Luck~
回复
引用
举报
北环路
关注
私信
精华:1帖
求助:0帖
帖子:12帖 | 121回
年度积分:0
历史总积分:242
注册:2006年8月16日
发表于:2010-05-31 19:15:32
2楼
回复内容:
对:yuanle 关于
個人認為:
OPN指令啟用DB時,實際CPU是對DB寄存器(當然,也可以OPN DI1,AD=DIW10,此時CPU對DI寄存器)進行操作,也就是傳遞給IN的不是DBW的值,而是DB寄存器的地址,相當於傳遞了ANY指針,每執行一次OPN,就要重寫一次DB。
而使用絕對地址,相當於引用了DB的值,而不是地址。
而FC的IN端,根據IEC61131,則是只讀的,因此使用絕對地址不能更改數據塊的值。
當使用FB,並將AD建立在IN_OUT上,就可以使用絕對地址,此時,背景DB相當於實現了DI寄存器的功能。
以上僅為個人的劣見,望指正。
Good Luck~
内容的回复:
谢谢你的辛苦回答:1.DB(DI)的寄存器功能如何实现,按您说的这里有两种方式:通过OPN DB,还有就是FB里建立IN_OUT类型。问还有其他常用的使用场合吗?这里有点难懂,都是自己在琢磨。恳请指导。
回复
引用
举报
热门招聘
相关主题
plc通讯原理和程序设计
[99626]
求助:OPC到底是什么东西
[21244]
编程技巧展示:为一求助帖用S...
[7172]
S7-300怎样从PLC上传程序到电...
[23406]
怎样学习PLC编程
[8131]
三菱PLC输出COM端接什么线?
[18923]
西门子S7-1200与基恩士扫码器...
[8985]
给工控初学者几点 ‘忠告‘
[7125]
我有一个电气工程要外包,谁能...
[9605]
求助简单的交通灯控制程序!!...
[18722]
官方公众号
智造工程师
客服
小程序
公众号