浔之漫智控技术-西门子PLC代理商
西门子PLC模块 , 变频器 , 触摸屏 , 交换机
西门子中央处理单元6ES7288-1CR60-0AA0

西门子中央处理单元6ES7288-1CR60-0AA0

第二个部分是主站 CTRL功能块的使用

 

 

第三部分是MSG指令的使用

 


CTRL和MSG指令时通过Done这个完成位来实现程序的轮询的这个没错吧”。
于是忙对客户说:“您说的都没错”
客户说:“那我就有一个疑问了。如果是使用Done问来触发下一个网络进行轮询触发,那么是不是CTRL的Done位来触发个 MSG指令。然后个MSG指令触发第二个MSG…….”
我说:“没错”
客户说:“但是你们样例程序的网络顺序可不是这样的啊。你们样例的个网络是初始化复位操作,但是第二个网络不是CTRL指令,而是CTRL指令的Done位通过上升沿触发MSG使能端,第三个网络才是CTRL指令”

 


按照你刚才给我描述的顺序关系不是应该先写CTRL指令。再编写CRTL指令的Done位触发MSG使能端。然后编写MSG指令……”
(咋一听客户的描述没有问题。似乎按照他说的可能更符合Modbus指令执行的逻辑关系,于是我就打开了Modbus通信的样例程序看了起来,但是看了一会问题出现了)
  我对客户说:“您按照您说的逻辑关系编过程序吗?程序能正确执行吗?”
客户说:“我还真的按照我自己的想法编写了一段程序,但是确实没有成功完成数据的发送”
我对客户说:“问题就出现在这个Done位触发下一个指令的方式上。这个程序里是通过上升沿来触发下一个指令的

                            

        如果是按照您的那种方式编程,这个上升沿是不能被捕捉到的。换句话说按照您说的那种方式编程,程序是不能顺序执行的,执行到M0.0之后就停止了。单纯的查看程序不直观,您可以按照我说的稍微修改一下这段程序。在上升沿语句后面加上一个置位Q0.0的操作。这样方便您在CPU上和状态表中监控执行结果。对比一下这两种编程的结果您就清楚了。”


      

        之所以会出现运行结果的不同都是由于上升沿造成的,按照客户描述的编程逻辑M0.0位会在第二个网络中被置位为1当程序执行到第三个网络的时候需要有上升沿才会触发M0.1和Q0.0的置位操作,但是由于M0.0已经变为了1无法再捕捉到上升沿所以程序也就无法继续执行。相反如果是按照样例程序中编写的那样。在第二个网络执行的时候M0.0还是0.当执行到第三个网络的时候M0.0变为1,捕捉到上升沿。因此程序可以继续顺序执行

   12位二进制数的大值为4095(212–1),对于单极性输入信号(例如DC 0~10V、0~20mA或4~20mA),为了计算方便,三菱的FX系列plc额定输入范围对应的输出值为0~4000,数据放在一个字的右侧(低位),称为右对齐。0~4000与12位二进制数可表示的范围0~4095基本上相同。
       S7-200和GE的90-30的12位模拟量输入模块的输出值范围为0~32000。A/D转换后的数据的高位为符号位,正数的符号位为0,负数的符号位为1。有效位数加符号位一共13位,它们被左移3位后,放在16位字的高13位,低3位添零,相当于实际的有效值被乘以8。因此32000实际上相当于右对齐的转换值4000,这种处理方法称为左对齐。
       对于双极性的模拟量(例如-10V ~ +10V),FX系列的额定输入范围对应于数据值–2000~+2 000(右对齐)。S7-200和GE的90-30对应于–32000~+32000,仍然为左对齐,右边空出来的位添0。
       S7-300/400的模拟量输入模块的位数是可以设置的(9~14位),不管转换后的实际位数是多少位,单极性模拟量转换后的输出值均为0~27648,双极性为–27648 ~ 27648(对应的十六进制数为9400H~7C00H)。模拟量输入值即使超过额定值18.5%,也不会产生溢出。
       如果不是采用左对齐,而采用右对齐(转换值放在一个字的右侧),模拟量满量程时A/D转换器不同的位数得到的转换值的位数不同,给后续的处理带来困难,采用左对齐则可以解决这一问题

发布时间:2024-05-08
展开全文
优质商家推荐 拨打电话