西门子工程师:S7-300、400 PLC 模拟量输入输出的量程转换控制
今天主要跟大家分享一个关于西门子S7-300、400PLC模拟量输入输出的量程转换控制,主要有一下内容:
一、模拟量输入、输出量程转换的概念
二、S7-300、400 PLC 模拟量输入、输出模板
1、需要使用的模板
2、涉及的信号类型
三、STEP 7 中模拟量输入、输出的编程
1、FC105、FC106 在哪里
2、FC105、FC106 功能描述
3、FC105、FC106 参数定义
4、FC105、 FC106例子程序
一、模拟量输入、输出量程转换的概念
实际的工程量,如压力、温度、流量、物位等要采用各种类型传感器进行测量。传感器将输出标准电压、电流、温度、或电阻信号供 PLC 采集,PLC 的模拟量输入模板将该电压、电流、温度、或电阻信号等模拟量转换成数字量——整形数(INTEGER)。在 PLC 程序内部要对相应的信号进行比较、运算时,常需将该信号转换成实际物理值(对应于传感器的量程)。而经程序运算后得到的结果要先转换成与实际工程量对应的整形数,再经模拟量输出模板转换成电压、电流信号去控制现场执行机构。这样就需要在程序中调用功能块完成量程转换。
如一个压力调节回路中,压力变送器输出 4-20mA DC 信号到 SM331 模拟量输入模板,
SM331 模板将该信号转换成 0-27648 的整形数,然后在程序中要调用 FC105 将该值转换成 0-10.0(MPa)的工程量(实数),经 PID 运算后得到的结果仍为实数,要用 FC106 转换为对应阀门开度 0-100%的整形数 0-27648 后,经 SM332 模拟量输出模板输出 4-20mA DC 信号到调节阀的执行机构。
二、S7-300、400 PLC 模拟量输入、输出模板
1、需要使用的模板
使用西门子 S7-300、400 PLC 进行模拟量输入、输出需要使用的模板:
S7-300系列 PLC:SM331 系列模拟量输入模板;SM332 系列模拟量输出模板;SM334、335系列模拟量输入、输出模板。
S7-400系列 PLC:SM431 系列模拟量输入模板;SM432 模拟量输出模板。
2、涉及的信号类型:电压,电流,温度,电阻。
三、STEP 7 中模拟量输入、输出的编程
1、FC105、FC106 在哪里
在编程界面下,在 Program elements 中的 Libraries 下的 Standard Library 下的 TI-S7
Converting Blocks 中就可以找到,见下图:
注意:请不要使用 S5-S7 Converting Blocks 下的 FC105, FC106,该路径下的功能是用于 S5输入输出模板的,在 S7 输入输出模板上无法使用。
2、FC105、FC106 功能描述
在编程界面下选中该功能块,按一下计算机键盘上的 F1 功能键,即可打开关于该功能块的在线帮助,包括该功能块的功能,管脚参数定义、例子程序等。建议用户使用STEP 7 在线帮助,可以提供全面的编程帮助。
FC105 功能描述
SCALE(FC105)功能将一个整形数 INTEGER(IN)转换成上限、下限之间的实际的工程值(LO_LIM and HI_LIM),结果写到 OUT。公式如下:
OUT = [ ((FLOAT (IN) – K1)/(K2–K1)) * (HI_LIM–LO_LIM)] + LO_LIM
常数 K1 和 K2 的值取决于输入值(IN)是双极性 BIPOLAR 还是单极性 UNIPOLAR。
双极性 BIPOLAR:即输入的整形数为 –27648 到 27648,此时 K1 = –27648.0 , K2 = +27648.0
单极性 UNIPOLAR:即输入的整形数为 0 到 27648,此时 K1 = 0.0 , K2 =+27648.0
如果输入的整形数大于 K2,输出 (OUT) 限位到 HI_LIM, 并返回错误代码。 如果输入的整形数小于 K1,输出限位到 LO_LIM,并返回错误代码。
反向定标的实现是通过定义 LO_LIM > HI_LIM 来实现的。反向定标后的输出值随着输入值的增大而减小。
FC106 功能描述
UNSCALE(FC106)功能将一个实数 REAL (IN) 转换成上限、下限之间的实际的工程值(LO_LIM and HI_LIM),数据类型为整形数。结果写到 OUT。公式如下:
OUT = [ ((IN–LO_LIM)/(HI_LIM–LO_LIM)) * (K2–K1) ] + K1
常数 K1 和 K2 的值取决于输入值(IN)是双极性 BIPOLAR 还是单极性 UNIPOLAR。
双极性 BIPOLAR:即输出的整形数为 –27648 到 27648,此时 K1 = –27648.0 , K2 = +27648.0
单极性 UNIPOLAR:即输出的整形数为 0 到 27648,此时 K1 = 0.0 , K2 =+27648.0
如果输入值在下限 LO_LIM 和上限 HI_LIM 的范围以外,输出 (OUT) 限位到与其相近的上限或下限值(视其单极性 UNIPOLAR 或双极性 BIPOLAR 而定),并返回错误代码。
3、FC105、FC106 参数定义
FC105 的参数定义
错误信息:
如输入的整形数大于 K2,则输出(OUT) 限位到 HI_LIM,并返回错误值。如输入的整形数小于K1,输出限位到 LO_LIM,并返回错误值。ENO 端的信号状态置为 0 且返回值 RET_VAL 为W#16#0008。
FC106 的参数定义
错误信息:
如果输入值在下限 LO_LIM 和上限 HI_LIM 的范围以外,输出 (OUT) 限位到与其相近的上限或下限值(视其单极性 UNIPOLAR 或双极性 BIPOLAR 而定),并返回错误代码。ENO 端的信号状态置为 0 且返回值 RET_VAL 为 W#16#0008。
4、FC105和FC106例子程序
FC105例子程序
如输入 I0.0 为 1,SCALE 功能被执行。下面的例子中,整形数 22 将被转换成 0.0 到 100.0 的实数并写到 OUT。输入是双极性 BIPOLAR,用 I2.0 来设置。
FC106例子程序
如输入 I0.0 为 1,UNSCALE 功能被执行。下面的例子中,实数 50.03978588 将被转换成 0.0到 100.0 的工程量,再转换成整形数并写到 OUT。输入是双极性 BIPOLAR,用 I2.0 来设置。
注意:通常在一个项目都有不只一个模拟量需要转换,FC105 和 FC106 在程序中都可多次调用,调用的方法同上述例子程序。
此次关于所要分享的内容就是这些啦!
以上,欢迎动动手分享及收藏!
三菱Q系列和FX2N系列进行CC-Link通讯(主站和智能设备站的通讯)
本例讲的是主站与智能设备站的通讯,也就是Q系列和FX系列的通讯。
Q系列PLC一套带(QJ61BT11N主站模块)
FX2n系列PLC一套带(FX2N-32CCL接口模块)
硬件部分已经配置好了,如图一。我的通讯模块并没有加终端电阻,终端电阻的作用是:防止当电缆长时,在信号在终端会信号反射,影响通讯信号。专业术语,我也记不太清了。
图一
然后是软件部分,配置一下主站吧,Q系列我是新建了一个简单的工程,还有一种形式是结构化工程,当然哪种都行的,如图二。
图二
分配一下I/O的地址如,如果在线的话,可以PLC数据读取,自动分配。然后点击设置结束,如图三。
图三
再然后设置CCLINK网络参数,如图四。因为只有两个站所以我,分配的随意点。
图四
在CCLINK设置界面(图四)找到站信息如图五。FX2N是智能设备站,占用4站,128点。设置结束。
图五
硬件配置完成,然后就是软件了,开始编程。
这里讲一下硬件配置完成并下载完后,当然,硬件拨码不能错,设备一上点就开始进行数据交互了,这也是我最喜欢的地方,你只要知道知道数据在哪个BFM区就是在程序里读写了。以下开始举例啦。下图为通讯架构(所以没有标号噢)
如图,主站写数据到W100,w100对应的主张缓冲BFM寄存器的1E0(16进制) 480(十进制),如图六图七。
图七(主站缓冲开始于480地址十进制)
不明白吗?好那就再上图清楚点,在线监控一下如图八。是不是很清晰了,w100的数据写到了主站模块的1E0(16进制)480(十进制)的BFM区。
图八
再下来该怎么搞了?该搞智能设备站了。(FX2n)数据写过去了,我要怎么读出来呢。。。。。
接下来我们来看看数据在智能设备站是怎样被读出来的。还是上图,如图九,就是通过一条指令(FROM K0 K8 D30 K1)读出来的。
问题又来了,这个指令什么意思,我来讲下:
1、FROM就是读缓存区的操作;
2、K0就是指的32CCL接口模块的位置标号,这个位置标号,就是cpu右侧第一个,从0开始,如果再有有一个模块,那新增的这个模块的位置标号就是1,以此类推。读我教程,你得语文好,不然就只能猜了,开玩笑的。
3、k8这个就有点意思了,继续上图吧,如图十;
4、D30就是你的数据放到哪里,就是说数据读出来了,那数放在了这(D30)可以自由设置。
5、k1就是点数,一般我理解为一个字,16个BIT位。如果是k2就是从BFM区读出了两天个字分别放在了D30,和D31中。然后以此类推。。。
来看看FX2n读出的数据也是250,这个数,看下图九。
图九
接上文,看下图十。看到没,#8缓冲区,这个就是32CCL的缓冲区,就是FX2n旁边的接口模块。
图十
监控一下FX的缓冲区第#8号位置是不是250啊,
清楚了吧,如图十一。
图十一
接下来捋下思路吧,主站CPU把通过MOV D100 W100 这条指令,把D100的数据(250)到了W100中,w100在配置中对应的是主站模块QJ61BT11N缓冲寄存器的BFM -1E0(16进制地址)然后这个数据被询到了FX2N的接口模块32ccl的缓冲寄存器BFM-#8中,再接力棒就交到了FX2nCPU,它通过指令FROM K0 K8 D30 K1 把数据读到了它内部寄存器D30中(数据250)
然后哩,FX如何写数据到Q主站呢?为了满足大家尽力做全套哈,上图,如图十二。通过T0 K0 K0 K4M0 K1把数据写到32ccl的缓冲存储器。
图十二
这里就TO K0 K0 K4M0 K1讲一下:
1、TO:就是写指令啦
3、K0:就是32ccl接口模块的缓冲寄存器BFM的#0(图)
4、k4m0就是m寄存器从M0开始K1就是四个BIT位,K2就是八个BIT位,K3就是十二个BIT位,这里是K4就是十六个BIT位,也就是一个字(D)的长度
5、K1为点数,上文讲过的
6、m8013为FX的秒脉冲特殊继电器
接下来监控一下32ccl的BFM-#0区,会看到0到1的变化,(由于M8013在变化所以M0也在变化,根据TO K0 K0 K4M0 K1是把m0到m15的状态写到了BFM#0 所以M0 变化BFM0 也在实时刷新)。
看图十三会发现32CCL的BFM#0区最低位在以一秒一赫兹的频率在变化。说明数据已经写到这个区,然后就是主站怎么读出来啦,简单吧!如图十三。
图十三
监控一下主站的通讯模块QJ61BT11,再然后。。。问题来了我要监控哪里呢,主站的哪个区呢?上法宝,搬手册!我觉得你又会问这个手册看哪里啊?
首先你要明白你的数据写到哪了了,是不是32CCL接口模块的BFM#0区,#0区的功能是什么呢?噢,我看了一眼是这么写的“远程输入RX00-RX0F(设定站)”,如图十四。
图十四
现在思路有了,从功能上来确认。所以32CCL的BFM#0对应的QJ61bt11的BFM的E0(16进制),如图十五。
图十五
主站地址找到了,那监控验证一下,如图十七。当然了,我这里是捕捉截图,其实它是一直0-1变化的。
图十七
那么主站缓冲寄存器找到了,看看程序里怎么写的吧,如图十八。
图十八
监控看到X150一直在变化,驱动了实际输出Y0C1
这个X150就是由32cclBFM#0刷新到主站模块QJ61BT11的E0区(远程RX)
是不是有点疑惑,无法把X150和这联系起来,或许你忘了CC-Link设置界面啦。上图看看,如图十九。
图十九
看到了吧,其实QJ61BT11主站模块的E0区是和x150对应的,就是说E0区如果最低位刷新的话,x150也变化,E0区的第2位变化,x151也变化,以此类推,直达第F位,从0到F共16位,一个字的长度。。。是不是清晰点了。。。
Review一下:FX的cpu通过TO指令写32ccl的#0缓冲寄存器,(TO K0 K0 K4M0 K1), 32CCL的BFM#0区对应QJ61BT11主站模块的E0缓冲寄存器,通过链接扫描的方式,实时刷新,再然后Q系列CPU就能直接读出数据了。。。
其实前期铺垫那么多,是想大家多去看些手册,因为三菱系的资料特别的多,而却实用性很强,你学会了看一本手册就有了一些思路,这个思路我个人理解为学习方法,要懂得如何去看手册,才能更好更快地解决问题。
特别喜欢一句话,(不要轻易的去问别人问题,因为人家的时间是宝贵的,你不但占用了别人的时间,还失去了一次学习的机会)。
最后,祝大家技术更上一层楼啦,升值加薪哈哈哈。See you next time!
来源/中华工控网,转载请注明出处
相关问答
Plc输入端有接电阻的吗?
如果是AI,即模拟量输入,PLC是内部有采样电阻的,不必加。如果外加,一般是没选对信号类型,的对付事儿之计,外加电阻不能保障精度,不推荐用如果是AI,即模拟量输...
plc控制M415B驱动器电阻的接法?
在使用PLC控制M415B步进电机驱动器时,需要根据PLC输出信号的电压与驱动器输入信号的要求来确定电阻的接法。根据搜索结果,如果PLC输出信号电压为24V,而驱动器...
plc接地电阻要求?
标准接地电阻规范要求:1、独立的防雷保护接地电阻应小于等于10欧;2、独立的安全保护接地电阻应小于等于4欧;3、独立的交流工作接地电阻应小于等于4欧;4、...
plc通讯头上no和off什么意思?
on指线圈动作,开点闭合,闭点断开;off指线圈释放,开点断开,闭点导通。PLC:可编程逻辑控制器是一种数字运算操作的电子系统,专为在工业环境应用而设计。它...o...
PLC再接电阻多少欧姆?
再接电阻,一种是为了增加输入电阻保护PLC模块,一种是串联电阻把输入电压信号转换为电流信号,一种是并联电阻把输入电流信号转换成电压信号。把输入4_20mA信号...
PLC总线连接器里那个ON,OFF是什么意思?
终端电阻吧,一般只在最末端才打开(ON),中间的节点都要关掉(OFF)。终端电阻吧,一般只在最末端才打开(ON),中间的节点都要关掉(OFF)。
plc如何知道内部带不带24伏?
在PLC中,内部带不带24伏,通常是由电源单元提供的电压信号决定的。如果电源单元提供了24伏的电压信号,那么PLC内部就会带有24伏的电压,否则就不会带有24伏的电...
PLC输出端口为何用上拉电阻?
PLC输出端口用上拉电阻的作用是为了防止干扰,增加电路的稳定性。上拉电阻就是让它在没有输出的情况下,保持高电位,并且不出现漂移现象。在有输出的情况下...
PLC为什么要将输出端子的相应COM段短接?
PLC将输出端子的相应COM段短接是有必要的。1,短接输出端子的相应COM段可以提供稳定的电平,确保信号的可靠传输。PLC输出信号通过COM段传导到控制装置或执行器,...
西门子plc模块电源是否有电阻值?
CPU没有内部电源,如果是AC模块可以直接接入220V交流电源。如果是DC模块可以直接使用24V开关电源供电,不必使用专用的S7-1200电源模块。CPU没有内部电源,如果...