西门子模块6ES7307-1KA02-0AA0性能参数
- 供应商
- 浔之漫智控技术-西门子PLC代理商
- 认证
- 报价
- ¥666.00元每件
- 手机号
- 15221406036
- 经理
- 聂航
- 所在地
- 上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
- 更新时间
- 2024-05-08 07:10
西门子模块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即可;西门子simatics7家族中的控制器按照应用场合、性能等分为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类型。下图为cpu412的性能参数示例。
图 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),按下的时间超过设定值,一直执行加法指令,直到松开。
如果是减法,就执行减法指令,直到松开。
加
减