感悟网 导航

大侠你好 我想请教下我用的是西门子S7-200的PLC能不能做到啊 感觉里面没有循环高速计数器啊 西门子S7-200PLC,FOR指令中,当循环次数未到,不过...

作者&投稿:威欧 (若有异议请与网页底部的电邮联系)
InTouch配合西门子S7-200执行循环操作的问题~

个人感觉你说的第二种比较好,比较可靠。(如果你用第一种情况,电脑死机了怎么办??我们单位的电脑装上后反映就比较迟钝)

还有NETR是通过指定端口从网络读取信息(最多16个字节){结合你的情况就是从PC向PLC读取信息}

还有NETW是通过指定端口向网络写信息(最多16个字节){结合你的情况就是从PLC向PC发送信息}

具体方法:
选择菜单命令工具(T) > 指令向导叄�缓笱≡?NETR/NETW;
1 指定您需要的网络操作数目
2 指定端口号和子程序名称
3 指定网络操作
4 分配 V 存储区
5 生成代码
为了便于进行连接在网络中的 PLC 之间的数据交换,S7-200支持网络读(NETR)和网络写(NETW)指令。NETR 指令从远程 PLC中的指定地址读取配置好的一定数量的数据。NETW 指令向远程PLC中的指定地址写入配置好的一定数量的数据。NETR
和 NETW 指令操作由数据表中的前七个字节控制。表中的一个数值是读取/写入数据长度,可以规定 1 至 16 个字节。因此数据表最大可达 23 个字节。

注释:在使用 HSC 向导之前,程序必须被编译,且处于符号编址模式。如果您尚未编译程序,向导在 HSC 配置过程开始时会提示您编译程序。
向导将向您询问初始化选项,然后为指定配置生成程序代码和数据块代码。从第一个屏幕选择NETR/NETW后,向导向您询问下列信息:


步骤 1 指定您需要的网络操作数目

注释:如果项目包含使用 STEP 7 Micro/WIN 3.2 版建立的现有 NETR/ NETW 配置,您必须在继续执行步骤 1 之前选择编辑其中一个现有配置或建立一个新配置。

可使用 NETR/NETW 指令向导,简化网络操作配置。向导将向您询问初始化选项,并根据您的选择生成完整的配置。向导允许您配置多达 24 项独立的网络操作,并生成代码协调这些操作。


步骤 2 指定端口号和子程序名称

注释:项目可能已经包含一个 NETR/NETW 向导配置。所有以前建立的配置均被自动载入向导。向导会提示您完成以下两个步骤之一:

?选择编辑现有配置,方法是点击“下一步>”。

?选择从项目中删除现有配置,方法是选择“删除”复选框,并点击“完成”。

如果不存在以前的配置,向导会询问以下信息:

1. PLC 必须被设为 PPI 主站模式才能进行通信。您要指定通信将通过哪一个 PLC 端口进行。

2. 向导建立一个用于执行具体网络操作的参数化子程序。向导还为子程序指定一个默认名称。您可以编辑默认名称。

步骤 3 指定网络操作

对于每项网络操作,您需要提供下列信息:


1. 指定操作是 NETR 还是 NETW。

2. 指定从远程 PLC(NETR)读取的数据字节数或向远程 PLC(NETW)写入的数据字节数。

3. 指定您希望用于通信的远程 PLC 网络地址。

4. 如果您在配置NETR,指定以下内容:

- 数据存储在本地 PLC 中的位置。有效操作数:VB、IB、QB、MB、LB。
- 从远程 PLC 读取数据的位置。有效操作数:VB、IB、QB、MB、LB。

5. 如果您在配置 NETW,指定以下内容:

- 数据存储在本地 PLC 中的位置。有效操作数:VB、IB、QB、MB、LB。

- 向远程 PLC 写入数据的位置。有效操作数:VB、IB、QB、MB、LB。

步骤 4 分配 V 存储区

对于您配置的每一项网络操作,要求有 12 个字节的 V 存储区。您指定可放置配置的 V 存储区起始地址。向导会自动为您建议一个地址,但您可以编辑该地址。请注意,如果您使用重叠地址,向导在显示一则警告后,允许您进入下一步。

注释: 在 NETR 操作中,请确认将用于存储数据的变量地址没有与分配给向导配置的存储区地址重叠。

步骤 5 生成程序代码

回答这些询问后,点击“完成”,S7-200 指令向导将为您指定的网络操作生成代码。由向导建立的子程序成为项目的一部分。要在程序中使能网络通信,需要在主程序块中调用执行子程序(NET_EXE)。每次扫描周期时,使用 SM0.0 调用该子程序。这样会启动配置网络操作执行。为每项网络操作建立的数据处理子程序会在适当时间被自动调用。

没有对应的指令,但是你可以在循环内部通过更改循环值来达到提前结束循环的目的。

可以的,s7-200不能设为循环计数器也没关系,只要到到达一定的数值程序将计数器置0就可以了,相当于循环计数器了,如果要精确可以用中断处理这个置0指令,你这个项目就不需要了,直接在循环程序中处理就可以了。
s7-200中用&来间接寻址,用vw100做指针,程序上电时将vw100清零。
比如推第一个物料时计数器为1000,输送带长度为5000脉冲,那么推一个物料时执行
+d hsc0 5000 vd88
if{
>d vd88 100000
-d vd88 100000}
movd vd88 &vw100
+i vw100 4 vw100
推第二个物料时计数器为2000,那么执行
+d hsc0 5000 vd88
if{
>d vd88 100000
-d vd88 100000}
movd vd88 &vw100
+i vw100 4 vw100

在将高速计数器加5000后要判断一次是否大于你的高速计数器清零值(我假设的是100000),如果大于要将该值减去你的最大值后再保存,否则这个值永远也达不到,就会漏推出去物料。

你可以发现上面的程序是一样的,那么就可以将这段程序编成子程序,每次推物料时执行一次这个子程序,一定只能执行一遍。
再主程序中加入一个判断程序,判断vw100,如果vw100大于80,将其清零就可以实现位置只能保存在vd0-vd80之间了,也就是保存了21个位置,如果不够你可以修改指针大小,之道满足你的要求。
主程序中比较这个区域中的数值和hsc0,计数器大于任何一个数值时动作一次第二个电磁阀就可以,这个动作也需要用到微分指令。
很久没用s7-200了,很多指令记不住了,所以程序只能表达一下意思,不正确的。你自己根据这个意思修改一下就可以了。

200系列有最高30KHz的高速计数器,如果要对高于这个频率进行计数,你需要更换你的PLC。

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网