回复:简单实现办法有没有?

Zaxife

  • 帖子

    2450
  • 精华

    31
  • 被关注

    78

论坛等级:至圣

注册时间:2008-07-24

普通 普通 如何晋级?

发布于 2014-10-03 12:43:28

16楼

展开查看
以下是引用glenxu在2014-09-29 09:30:25的发言 >9楼:这种编程方法叫状态表,恒河的DCS和部分进口的DCS有这样的编程方法,西门子没有。
但不是说不能实现,例如用状态加权,得到的数字用开关语句执行响应的“操作”程序,应该能完成简单的逻辑,如果状态复杂有3位的交叉逻辑,这不是PLC的强项,请不要考虑,否则容易造成逻辑的二意性、不稳定甚至出现自锁的奇怪显现,主要是我们的水平不能正确理解CPU的“时序”和以及程序“时序”的相关性。例如很多DCS或PLC中的PID的D甚至单独D功能都“不好用”,就是这个问题引起的。
像你说的"否则容易造成逻辑的二意性、不稳定甚至出现自锁的奇怪显现"这种情况,对于PLC来说可能性不大,除非你用了不安全的控制逻辑或者是更高层的操作(用户)导致的问题。

关于更高层的操作,举例例子。比如PLC作为PPI从站,然后不同地方的两个触摸屏都可以改变Q0.0的状态来开、关机。当客户触摸屏1要开机时理所当然的设Q0.0为1,但是现场人员刚好在触摸屏2边上需要关机维护,肯定要设Q0.0为0进行设备维护,然后他们又没有事先沟通,一个在开机一个在关机,一直在这样打架。 这样就导致了不是PLC能够判断更高层操作带来的问题,所以就像你说的增加紧急停机按钮权限来区分权限。

关于不安全的控制逻辑比较简单,比人PLC编程时,用本身输入输出用的是映像寄存器完全没问题,用直接输入输出就出问题了,根本的原因就是PLC在程序扫描最前面一次性采集所有输入到映像寄存器,然后在用户程序中能够完全保证用户的程序逻辑不会因为执行用户程序时因为输入的改变而使得用户程序混乱。简单点说就是如果你程序中用了直接输入指令,就会导致你的程序已经执行的部分程序跟未执行部分的输入值不同,导致后面的程序出现所谓的二意性。说到底是程序员导致的不安全问题。

所以,就像DCS这种庞大的数据组织单元,所以要么用加权逻辑,要么不使用非PLC的顺序执行逻辑,而是采用并行执行逻辑来解决二意性的问题了。

最后,我没发现楼主的题目会存在二意性问题。
因为每个数据帧都是独立的一个卡编号,比如00 01代表1#卡,00 02代表1#卡,00 03代表1#卡;而不是想象中的每个二进制位对应一个卡。他的编程思路很简单,定时发送广播出去,然后直到超时前都一直处于接收卡的信号状态,当接收到一个卡时就把这卡编号信息发给PLC。
这种广播应答方式曾经在国内某款温湿度记录仪上用到过,这种通讯方式有点好处就是写程序时不需要知道有多少个从站,而是在运行时由广播指令查询,根据从站响应来确定数量,然后就为新增的从站分配内存,清理不存在的从站所分配的内存。说白了跟多主站PPI的令牌环方式差不多的。

好了,不知不觉发现废话很多了。。手抽了。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33298条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。