西门子模块6ES7307-1KA02-0AA0性能参数
BCD码用于PLC的输入、输出,例如数码管显示,拨码开关输入,日期、时间的输入、输出。
应该是当时的临时解决方案,现在的应用越来越少了,未来估计会更少。
答:拨码开关用得越来越少了,电梯的数码管显示还是需要BCD码的,时间日期的显示、输入要要用BCD码,BCD码是二进制编码的十进制数,PLC用十进制数和用户交流就需要BCD码。BCD码不会消亡。
8段码数字显示管都是用BCD码显示的。PLC中有相应的转换程序,非常方便。
现在用屏非常多,一般不用数码显示管了。需要占PLC 4个输出点。
电梯的楼层就是用数码管显示的,谁见过用屏显示楼层的吗?所以还是有不一般的情况。
使用BCD码比整数的优势在哪呢?
以电梯的楼层显示为例,需要用指令将PLC内部的二进制整数转换为两位BCD码(一个字节),然后将这两位BCD码(每一位用4位二进制数表示)分别送给两个数码管的译码驱动芯片。没BCD码就干不了这件事。
lsy9202:BCD码用于操作硬件,而硬件就是电路,电路是只能识别0和1的二进制数的,所以整数123想让电路认识就要转换为BCD码W#16#123=2#0000_0001_0010_0011
这是什么理论?电路只能识别0和1,那关BCD码*事?难道你的显示器和显卡通信时也都是BCD码?
答:“BCD码用于操作硬件”这个说法不准确,准确一点说,BCD码用于输入(例如拨码开关)、输出设备(例如数码管),它们是和人打交道的,输入的和显示的都是十进制数。但是通过这些设备不能直接输入和显示十进制数,所以要用BCD码。BCD码就是每一位用4位二进制数表示的十进制数,例如要输入十进制数123,拨码开关提供给PLC的BCD码为W#16#123=2#0001_0010_0011,PLC就可以用12个数字量输入点来接收了。可以用指令将BCD码转换为整数西门子S7-300冗余系统,现在测量总磷的数据A(比如测得的是4,范围0-10,总磷单位),然后在屏上设置一个可输入的控制值B(比如说5,总磷单位),控制加药泵加药量(带4-20ma)C(量程为单位),使水里的浓度靠近控制值B,就是说用PID,那么如何用?是不是用FB41?FB41上的所有参数都要设置吗?哪些可以不用设?自动创建的DB块应该要在OB100里定义的吧?(其实就好比根据压力PID调节变频器的频率一般,两个单位不是统一的,如何做)
答:A、冗余如何PID调节?
与单机系统一样。
B、是不是用FB41?FB41上的所有参数都要设置吗?哪些可以不用设?
转帖:
FB41的PID:
一、在ob35里面插入FB41,方框顶上会有红字,输入一个类似“DB120”的,系统会问你要不要生成这个Db,yes就可以
二、大部分参数不要填,默认就行,下面是常用参数,用变量连接:
1、MAN_ON:用一个bool量,如m0.0,为true则手动,为false则自动;
2、cycle:T#100MS,这个值与ob35默认的100ms一致;
3、SP_INT:MD2,是hmi发下来的设定值,0-100.0的范围,real型;
4、PV_IN:md6,实际测量值,比如压力,要从piw×××转换为0-100.0的量程;
5、MAN:MD10,op值,也就是手动状态下的阀门输出,real型,0-100.0的范围;
6、GAIN:md14,Pid的P啊,默认写1-2吧(系统默认是2),调试的时候再改
7、TI:MW20,pid的i啊.默认写T#30S吧,调试的时候改;
8、DEAD_W:md22,死区,就是sp和pv的偏差死区,0-100.0的范围,默认0,调试的时候改;
输出:
9、LMN:MD26,0-100。0,*终再用fc106转换为word型move到pqw×××,如果pid运算结果不再有工艺条件其他限制可以用LMN_PER更简单就不用fc106了。
三、用plcsim模拟
1、手动
man_on=true,看输出是否等于man;
2、自动
man_on=false,调整pv或者sp,使得有偏差大于死区,看输出变化,这里的模拟只能说明pid工作了,不能测试实际调节效果啊。
3、如果需要反作用,有三种方法:
a、pv和sp颠倒输入
b、p值用负的
c、输出用100减
C、.......两个单位不是统一的,如何做?
在PID中有不同的物理量,例如温度、压力及阀门开度等,它们的量纲单位均不同,所以要进行规格化工作。
规格化概念及方法:
PID参数中重要的几个变量,给定值,反馈值和输出值都是用0.0~1.0之间的实数表示,
而这几个变量在实际中都是来自与模拟输入,或者输出控制模拟量的
因此,需要将模拟输入转换为0.0~1.0的数据,或将0.0~1.0的数据转换为模拟输出,这个过程称为规格化
规格化的方法:(即变量相对所占整个值域范围内的百分比 对应与27648数字量范围内的量)
对于输入和反馈,执行:变量*100/27648,然后将结果传送到PV-IN和SP-INT
对于输出变量 ,执行:LMN*27648/100,然后将结果取整传送给PQW即可;西门子SIMATIC S7家族中的控制器按照应用场合、性能等分为S7-1200、S7-200、S7-300、S7-400等各种不同的系列。而每一系列中又细分不同的型号,例如,S7-400系列中有S7-412、S7-414、S7-416、S7-417等型号。不同系列、不同型号的控制器对应不同的控制性能(运算速度、内存容量等)。本文基于S7-400系列控制器,详细介绍内存的类型、分配情况及实际使用过程中可能的内存优化方法。
1.内存类型
S7-400型控制器的内存按照功能的不同,可以分为:
√ 系统内存(System Memory)--- 控制器的自身功能(M、T、C等)
√ 工作内存(work Memory)--- 用于运行程序;
√ 装载内存(Load Memory)--- 用于装载程序;
其中,工作内存部分又可以细分为:
√ 代码工作内存(Code Memory)--- 用于运行程序的代码部分;
√ 数据工作内存(Data Memory)--- 用于运行程序的数据部分;
S7-400型控制器的内存按照集成方式的不同,可以分为:
√ 集成内存(Integrated)--- 直接集成在控制器内部随控制器一起提供,无需额外订购;
√ 扩展内存(Expanded)--- 通过扩展存储卡的方式扩展提供,需要额外订购;
一般情况下,控制器的工作内存不可扩展,而装载内存则可以通过FEPROM或RAM的方式进行扩展。如果希望和集成的RAM装载内存无缝扩展使用,则扩展的装载内存必须选用RAM类型。下图为CPU 412的性能参数示例。
图 1 CPU 412的性能参数示例
A站和B站分别通过2个IM153-2控制DP从站上的IO,不明白2个接口是如何协调控制输出(输出都在DP从站上)
e.g.Q0.0~Q0.3设定为FC 100 'SWR_START'中的冗余映射,A站为主站
1.如果A站写Q0.0为1,B站在冗余程序FB 101‘SWR_ZYK’外(不被跳过),写Q0.0为0,实际输出为啥?
2.如果A站写Q0.5为1,B站在冗余程序FB 101‘SWR_ZYK’外(不被跳过),写Q0.5为0,实际输出为啥?
答:原理:
在软冗余系统进行工作时,主、备控制系统(处理器,通讯、I/O)独立运行,由主系统的PLC掌握对冗余部分ET200M从站中的I/O控制权,主、备系统通过软冗余专用程序进行数据同步。PLC程序由非冗余(non-duplicated)用户程序段和冗余(redundant backup)用户程序段组成,主系统PLC执行全部的用户程序,备用系统PLC通过判断冗余状态跳过冗余程序,只执行非冗余用户程序。当主系统中的组件发生故障,备用系统会自动切换为主系统,执行冗余程序,控制任务不会出现中断。
1.如果A站写Q0.0为1,B站在冗余程序FB 101‘SWR_ZYK’外(不被跳过),写Q0.0为0,实际输出为啥?
B系统冗余程序不被跳过,只有在A系统组件发生故障时,备用系统会自动切换为主系统,执行冗余程序,如果A系统正常,则B系统PLC通过判断冗余状态跳过冗余程序。
所以,实际输出为0。
2.如果A站写Q0.5为1,B站在冗余程序FB 101‘SWR_ZYK’外(不被跳过),写Q0.5为0,实际输出为啥?
B系统冗余程序不被跳过,只有在A系统组件发生故障时,备用系统会自动切换为主系统,执行冗余程序,如果A系统正常,则B系统PLC通过判断冗余状态跳过冗余程序。
所以,实际输出为0。
我现在用S7200cpu,组态软件用WINCC7.0,其中有个变量控制变频器频率,要求在(0.0-50.0)HZ之间可调,我想在WINCC画面上设两个按钮,其中一个为“增加”,一个为“减少”,当按“增加”一次时,对应变量数据加0.1,当按“减少”一次时,对应变量数据减0.1,请问在WINCC画面面上该如何实现,对应S7200又该如何编程。
答:wincc用vbs做:
按钮加脚本:
dim mytag
mytag=hmiruntime.tags("tag1").read
mytag=mytag+0.1
hmiruntime.tags("tag1").write mytag
点一次加按钮tag1的值加0.1
按钮减脚本:
dim mytag
mytag=hmiruntime.tags("tag1").read
mytag=mytag-0.1
hmiruntime.tags("tag1").write mytag
点一次减按钮tag1减0.1
用pc access 连接200plc,tag1对应200的地址。
上面的方法可行,不过西门子的计数器不好用。
我提个其他的建议,我曾经看过一个程序,具体怎么编程我忘了,*后的功能是检测你按按钮的时间,如果你按的按钮在一个规定的时间之内,那么值加减一个单位,如果持续按住按钮超过某一个时间,那么持续累加一个单位(即,每个PLC扫描周期就加一个单位),其实通过计时器来实现。
因为我们也要考虑到实际操作上的方便,总归有需要快速累加的时候。如果每点一起加0.1,会累死人的,手都酸掉。
wincc:设两个按钮,单击属性,关联两个BOOL变量,按下赋1,松开赋0,另一个按钮同样设置。
PLC:将开关量对应200的位地址,采用按钮的上升沿,执行加法指令。并将开关量并联接通定时器,设定一定时间(0.5S),按下的时间超过设定值,一直执行加法指令,直到松开。
如果是减法,就执行减法指令,直到松开。
加
减