搜索
bottom↓
回复: 22

LDP指令的实现

[复制链接]

出0入0汤圆

发表于 2009-5-3 15:23:29 | 显示全部楼层 |阅读模式
想请教高手,LDP指令怎样来实现呢?
我想这样做:设置两个位变量,一个记录第N次的状态,另一个记录第N+1次的状态,在每次程序结束前,将N+1次状态传给N次,同时读入状态到N+1次.则LDP可解释为N次为0&N+1次为1.
但是为所有的元件(X,M,Y)都建立两个变量,占用了很多的SRAM,这又如何解决?高手如何解决,有好办法么?

出0入0汤圆

发表于 2009-5-3 19:53:34 | 显示全部楼层
【楼主位】 junmadianzi
所有的元件(X,M,Y)都建立两个变量

出0入0汤圆

发表于 2009-5-3 21:16:44 | 显示全部楼层
以上理论均繁琐:

只需bit 与 bit_bak

ldp执行流程如下:

if(bit == 1 && bit_bak==0)
{
   执行成立
}
bit_bak=bit;

而且此 bit_bak 非bit之一一对应关系,可以与PLC的步相关。8K步,则8K 个bit_bak.ldp等指令与脉冲执行均可以使用。

出0入0汤圆

发表于 2009-5-6 23:41:57 | 显示全部楼层
就像脉冲指令是PLC设计的精华,但是好像关注的人比较少。我一开始的理念和1-3的想法一致。但是PLC就是个设计精巧的东西,难度不高,思路很重要。

出0入0汤圆

发表于 2009-5-16 21:09:39 | 显示全部楼层
【5楼】 heky
就像脉冲指令是PLC设计的精华,但是好像关注的人比较少。我一开始的理念和1-3的想法一致。但是PLC就是个设计精巧的东西,难度不高,思路很重要。

去年我讲过交流争论算法很重要,一个思路沟通交流成熟了,哪个型号的MCU都可实行同一个算法,功能同,只是性能有差异,坛里的写程序高手有的是,那真才叫百花齐放.

如能以交流算法为主,改变几个人很辛苦,多数人闲着旁观说风话的状态,把多数人调动起来,脑子动起来,少数几个人就把舵,掌握方向,这样人气就更旺.阿莫要辛苦些了,要多备几组套件.

出0入0汤圆

发表于 2009-5-17 08:11:23 | 显示全部楼层
问题就在这里,

【7楼】 yy888 许意义
老前辈,没用的,现在的人“浮躁”的很,不想好好学习,只想拿现成的东东发财,把多数人调动起来搞技术是不能的,搞消费倒希望很大,哈哈!

到那时形成的状态是无良似懂非懂的人抄了去骗钱,又没有技术力量研发,在质量技术上更新,只能进行恶性的价格竞争,把PLC市场做烂,那时OURDEV对中国的民族PLC工业是功臣还是罪人?!

所以,开源的宗旨应是普及与提高,heky等在相关机构工作的人受约束,是不能多讲的,开源的基点应放在思想碰撞,大脑革_命上.

出0入0汤圆

 楼主| 发表于 2009-5-17 08:22:49 | 显示全部楼层
heky的程序即描述了我的想法,但是假如PLC存在输入(以日系FX来说) X有256点,这样就存在512个位变量.占用64字节,Y也有256点,M有数千点,真去定义这么多变量么?我本来想定成char的数组,并且如heky所述存在一个bak的变量.我是用ATMEGA168来规划这个控制器,感觉SRAM(1KB)吃紧.

另外,我一直在应用PLC,用MCU是业余的.老想MCU是怎么来得及工作的.假定MCU以20M工作,并且达到20MIPS.
1,假定PLC开了二个通讯口,都以9600bps(一般PLC可以支持到115200bps),这样约每个通讯口隔约1ms就产生一次中断.假定两个通讯口正好错开,哪MCU在0.5ms产生一次中断,0.5msMCU仅可执行10K条指令.如通讯波特率提高到115200,则每次中断之间约能执行1K条指令.
2,FX PLC有6点高速计数器,PLC的高速计数器分软件中断和硬件两种,软件中断高速计数器可达到10KHz,假定6路高速脉冲无冲突的情况下,每两次计数脉冲间能执行1.6K条指令.
3,如以上说的中断同时发生,MCU又当如何工作?
4,PLC还有高速脉冲或PWM输出功能,我想也会遇到中断的问题?
5,PLC还得较实时的完成控制任务.

基于以上考虑,怎样强大的MCU才能完成一台强大的PLC?据我所知,台达的PLC仅采用了H8 MCU,一些台湾产中型PLC采用RDC(类似80186),来得及么?

出0入0汤圆

发表于 2009-5-17 08:29:56 | 显示全部楼层
我不在台达上班,在无锡。不过做的都是跟台达差不多的东西。做plc 差不多4年。

出0入0汤圆

发表于 2009-5-17 08:39:53 | 显示全部楼层
heky讲得很清楚了,实际PLC程序中使用P指令不可能访问每一个软元件,不可能每步都是P指令,基于两个不可能,P指令就以程序步来back,以8K步为例,也就8K位.这是需back的max数,是否可进一步压缩,就须大家探讨了.

这是我对【4楼】 heky 的理解.

出0入0汤圆

发表于 2009-5-17 08:51:35 | 显示全部楼层
是的,p指令与程序步相关。扫描时可以根据当前步数来访问。

出0入0汤圆

发表于 2009-5-17 13:08:12 | 显示全部楼层
【9楼】 junmadianzi
基于以上考虑,怎样强大的MCU才能完成一台强大的PLC?据我所知,台达的PLC仅采用了H8 MCU,一些台湾产中型PLC采用RDC(类似80186),来得及么?
FX PLC有6点高速计数器,PLC的高速计数器分软件中断和硬件两种,软件中断高速计数器可达到10KHz,假定6路高速脉冲无冲突的情况下,每两次计数脉冲间能执行1.6K条指令.

FX2N CPU单元是双16位MCU,RAM是16位宽,其硬件结构应是能满足高速要求,猜想应是使用实时操作系统协调双MCU工作.
对于高速计数器,FX PLC采用专用计数芯片.


我几乎把瑞萨三菱16位MCU资料找遍,这篇对上一部分,那篇对上一部分,最后确认FX2N CPU单元的16位MCU是定制的.
FX2N CPU单元的测绘就卡在双16位MCU间总线上,4层板线条走向看不见摸不着着,没有资料参考,花下去的时间无法估量;我从事的维修工作身不由己,只得放下.

出0入0汤圆

发表于 2009-5-17 13:13:58 | 显示全部楼层
LDP指令的实现
到【12楼】为止,应该可以创建LDP,LDF指令相关的数据结构和程序流程图.

出0入0汤圆

 楼主| 发表于 2009-5-17 15:38:28 | 显示全部楼层
感谢各位,LDP,LDF我明白了

出0入0汤圆

发表于 2009-5-17 17:50:44 | 显示全部楼层
LDP,LDF
//-----------
      每种PLC都会有类似这样的指令,用“好象按制的指令”这样去理解这个指令就比较容易明白的了。
      还有就是,这个类指令“它是工作于一个扫描周期的上升沿与下降沿检测”,也就是说要两个扫描周期
      才可以表现到这类指令。在下觉得,要软件模拟这类指令是要建立两个变量,一个去记忆之前状态,一个作输出状态。
     
      大厂的PLC,在下觉得会是硬件去完成,象3菱这样的实力公司,估计很多复杂的指令都用硬件去实现。
      逻辑解释,象单片机本身就是一个逻辑系统,可能用硬件就能够完成所有逻辑指令的解析了。而不需要去再编写程序,这样运算速度才可以那么快。   

      以上,在下愚见。

出0入0汤圆

发表于 2009-5-17 19:54:24 | 显示全部楼层
【16楼】 foshan_lcy 允
有些牛尖的味了.

以【4楼】 heky

if(bit == 1 && bit_bak==0)
{
   执行成立
}
bit_bak=bit;

有两个操作
1.bit == 1 && bit_bak==0成立,也就是一个上升沿事件成立,执行P指令.
2.不管执行不执行P指令,均把bit赋给bit_bak;假如执行了P指令,下一个扫描周期的bit_bak必定是1,此时不管bit何值,上升沿事件均不会成立.因此,边沿事件只与t,t-1量有关。

这个算法是动态的,P指令的输出只能存在一个扫描周期.

至此,还需建立两个变量吗?

出0入0汤圆

发表于 2009-5-17 20:09:25 | 显示全部楼层
【16楼】 foshan_lcy 允
    大厂的PLC,在下觉得会是硬件去完成,象3菱这样的实力公司,估计很多复杂的指令都用硬件去实现。
      逻辑解释,象单片机本身就是一个逻辑系统,可能用硬件就能够完成所有逻辑指令的解析了。而不需要去再编写程序,这样运算速度才可以那么快。


假如去看看七、八十年代的有关PDP-11经典教材,就会发现机器指令下面还有一级---微命令组成机器指令,微命令下面才是硬件层。

PLC指令不管用什么软件,最终要以机器指令形式由MCU去执行,所以现在MCU机器指令对PLC指令而言,相当于组成PLC指令的微命令。

出0入0汤圆

发表于 2010-9-14 21:59:11 | 显示全部楼层
回复【4楼】heky
-----------------------------------------------------------------------

精彩! 完全没想到这么干!呵呵!我真的是备份了所有的。

出0入0汤圆

发表于 2010-9-14 22:09:00 | 显示全部楼层
回复【5楼】heky
就像脉冲指令是plc设计的精华,但是好像关注的人比较少。我一开始的理念和1-3的想法一致。但是plc就是个设计精巧的东西,难度不高,思路很重要。
-----------------------------------------------------------------------

脉冲输出真的是好难!到现在还没入门!如何入门呢?
用STM32已经搞定了高速计数,还算容易,脉冲输出思路上就有点混乱了!

出0入0汤圆

发表于 2010-9-17 12:48:03 | 显示全部楼层
这些东西讨论一下才有长进,呵呵,stm32在脉冲执行方面是很出色的,用2个定时器做路高速脉冲。

200k的频率还比较轻松,其他的cpu没看见有这么出色的。cpld除外

出0入0汤圆

发表于 2011-1-12 19:50:29 | 显示全部楼层
Network 1
LD     M0.0
EU
S      Q0.0, 1
Network 2
LD     M1.0
JMP    0
Network 3
LD     M0.1
EU
S      Q0.1, 1
Network 4
LBL    0
Network 5
LD     M0.1
EU
S      Q0.2, 1
Network 6
LD     M0.2
EU
S      Q0.3, 1
这是西门子200PLC上的程序,我看过西门子200PLC处理这条指令需要8US,...
试过上面的语句后,得出一个结论,西门子200PLC的EU和ED(上升沿,下降沿)的总数是256条。在PLC上初始化的时候就已经记录EU或ED的指令的指针地址存放在一个数组里,程序在执行的时候就取出EU或ED指令的指针与保存在数组里的指针比较后得出数组的地址后再去对应的EU或ED标致位数组里比较对应的位是否为真。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 05:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表