技术论坛

200smart编程自定义Q输出

作者 主题
侠士

经验值: 1534
发帖数: 217
精华帖: 0
主题:【探讨】200smart编程自定义Q输出


只看楼主 楼主 2022-10-04 12:17:40

如题,我想用smart做个程序,假设有ABCDE等5个功能普通Q点输出,打算分配在Q0.0---Q0.4这5个输出口上,现想要在屏幕上自由定义Q点输出功能,就是说每个Q点都可以是ABCDE这几个功能中一种,不用考虑是否功能重复的冲突,冲突就2个输出点同时输出相同功能就好。大家有什么好建议吗?主要想尽量用最少的程序步实现这个功能。


 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1787357&b_id=64&s_id=0&num=10

至圣

经验值: 17408
发帖数: 6225
精华帖: 18
回复:200smart编程自定义Q输出


只看楼主 1楼 2022-10-04 14:01:49

位寻址。我发过一个例子。


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 4873
发帖数: 741
精华帖: 10
回复:200smart编程自定义Q输出


只看楼主 2楼 2022-10-04 21:29:59

说的太精简了,不能全面了解你的需求。

做个子程序,接口是功能编号,里面实现ABCDE五个功能,根据功能编号来输出。

至于5个Q点就调用5次就好了。

甚于可以十个Q点也不是问题。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67550
发帖数: 14784
精华帖: 100
回复:200smart编程自定义Q输出


只看楼主 3楼 2022-10-04 23:02:08

我只觉得每周期都算一次这推寻址就太浪费时间了。不过我也没有好办法。


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1534
发帖数: 217
精华帖: 0
回复:200smart编程自定义Q输出


只看楼主 楼主 4楼 2022-10-05 12:01:46
以下是引用芳季在2022-10-04 23:02:08的发言 >3楼

我只觉得每周期都算一次这推寻址就太浪费时间了。不过我也没有好办法。

感觉简简单单,实则无从下手


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1534
发帖数: 217
精华帖: 0
回复:200smart编程自定义Q输出


只看楼主 楼主 5楼 2022-10-05 13:28:58
以下是引用Laohuai在2022-10-04 14:01:49的发言 >1楼

位寻址。我发过一个例子。

能否直接在这里说一说思路


 
以下网友喜欢您的帖子:

  
侠客

经验值: 979
发帖数: 82
精华帖: 1
回复:200smart编程自定义Q输出


只看楼主 6楼 2022-10-23 10:04:48
第1种办法,输入多选一复值到单个输出:
块左边输入:多个布尔量输入;外加一个选择字节输入,用来选择到底使用哪个布尔量。
块右边输出:一个布尔量输出,用来输出选择的布尔量。



第2种办法,输入多选一,输出多选一,赋值:
块左边输入:跟上面相同。
块右边输出:第一个选择字节用来选择QB编号,第二个选择字节用来选择QB的位;例如想要Q3.4输出,则第一个字节填入3,第二个字节填入4。程序内部通过指针实现

两种办法,前者简单,后者灵活
 
以下网友喜欢您的帖子:

  
至圣

经验值: 67550
发帖数: 14784
精华帖: 100
回复:200smart编程自定义Q输出


只看楼主 7楼 2022-10-23 13:14:57

输出重定向。不止一个人发过程序。


找。


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1534
发帖数: 217
精华帖: 0
回复:200smart编程自定义Q输出


只看楼主 楼主 8楼 2022-10-26 14:07:13
以下是引用tingal_cai在2022-10-23 10:04:48的发言 >6楼:第1种办法,输入多选一复值到单个输出: 块左边输入:多个布尔量输入;外加一个选择字节输入,用来选择到底使用哪个布尔量。 块右边输出:一个布尔量输出,用来输出选择的布尔量。 第2种办法,输入多选一,输出多选一,赋值: 块左边输入:跟上面相同。 块右边输出:第一个选择字节用来选择QB编号,第二个选择字节用来选择QB的位;例如想要Q3.4输出,则第一个字节填入3,第二个字节填入4。程序内部通过指针实现 两种办法,前者简单,后者灵活

不理解。Q怎么用指针寻?


 
以下网友喜欢您的帖子:

  
游士

经验值: 215
发帖数: 18
精华帖: 0
回复:200smart编程自定义Q输出


只看楼主 9楼 2022-10-29 10:31:42
以下是引用一世天蓝在2022-10-26 14:07:13的发言 >8楼

不理解。Q怎么用指针寻?

以下是引用tingal_cai在2022-10-23 10:04:48的发言 >6楼:第1种办法,输入多选...

引用6楼详细内容:

第1种办法,输入多选一复值到单个输出: 块左边输入:多个布尔量输入;外加一个选择字节输入,用来选择到底使用哪个布尔量。 块右边输出:一个布尔量输出,用来输出选择的布尔量。 第2种办法,输入多选一,输出多选一,赋值: 块左边输入:跟上面相同。 块右边输出:第一个选择字节用来选择QB编号,第二个选择字节用来选择QB的位;例如想要Q3.4输出,则第一个字节填入3,第二个字节填入4。程序内部通过指针实现 两种办法,前者简单,后者灵活

https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1790426&b_id=64&s_id=0&num=2#anch
这里有你要的


请大家多多指教
以下网友喜欢您的帖子:

  
版主

经验值: 25998
发帖数: 11809
精华帖: 43
回复:200smart编程自定义Q输出


只看楼主 10楼 2022-10-29 13:04:22

给一个思路吧,程序自己实现。

1、假设条件:

Q点的分布是无规律的,但可以通过中间变量,让中间变量的排列变得有规律。

中间变量与实际Q点就是一一对应关系,简单COPY就是了。

M0.4,M0.3,M0.2,M0.1,M0.0

分别对应5个Q点

2、实现任意操作某一Q点,5个Q点,相同工作做5次,也可以制成子程序调用5次。

3、设

VB0为Q点序号,0对应M0.0,1对应M0.1,以此类推

M2.0表示该Q点的状态,需要复制到指定M0.x上

4、定位M0.x点

用到一个指令DECO,解码指令

设VB=2,即操作第三个Q点,对应为M0.2

DECO VB0,VW2 // 执行后,VB3=0000,0100

VW分VB2和VB3两个字节,因为只有5个Q点,只用到VB3

执行DECO后,V3.2=1,其余位为0:0000,0100

5、复制M2.0状态到M0.2上

分两种情况:

如果M2.0为1,则执行OR或操作

OR VB3, MB0 // 执行后,M0.2=1,其余位不变

如果M2.0为0,则执行AND与操作

INVB VB3 // 执行后VB3=1111,1011

ANDB VB3,MB0 // 执行后MB0.2=0,其余位不变

6、实验程序,在STL模式下复制到MicroWin Smart

LD     Always_On:SM0.0

LPS                                // 兼容LAD

DECO   VB0, VW2                    // 解码

A      M2.0

ORB    VB3, MB0                    // 置位

LPP                                // 兼容LAD

AN     M2.0

INVB   VB3                         // 取反

ANDB   VB3, MB0                    // 复位

上面是单网络兼容LAD的程序,有多余的指令

双网络程序,精简如下

网络1

LD     Always_On:SM0.0

DECO   VB0, VW2                    // 解码

网络2

LD     M2.0

ORB    VB3, MB0                    // 置位

NOT

INVB   VB3                         // 取反

ANDB   VB3, MB0                    // 复位



 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
200smart编程自定义Q输出
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。