产地类别 | 进口 |
---|
敢于创新,创造可持续的价值
创新已成为西门子业务成功的基石。研发是西门子发展战略的基本动力。作为关键的持有者,无论是已经成熟的工艺,还是正在发展的技术,我们都是客户强有力的合作伙伴。我们的目标是,在所涉足的众多业务,都占据技术*地位。
![]() |
参考价 | ¥88 |
订货量 | 1 |
更新时间:2019-02-27 10:57:59浏览次数:208
联系我们时请说明是化工仪器网上看到的信息,谢谢!
呼和浩特西门子PLC系列代理商
S7-1200PLC中的模拟量转换
前几天有个朋友问了个有关于S7-1200PLC中的模拟量的转换问题,他跟我说S7-300中有FC105和FC106用于做模拟量的转换过程,S7-200 中也有scaling转换库指令,可以用于模拟的转换。但在S7-1200中为什么就没有相应的库去做转换呢?
对于S7-1200的PLC来讲,并没有S7-300中使用到的FC105和FC106这两个块的,但是做法有要几种,这里跟大家说两种方法:
(方法一)S7-1200中提供了两条指令供大家使用,大家在使用者两条指令时,就可以用于完成模拟量的转换过程。(1)NORM_X:标准化 (2)SCALE_X:缩放
(1)NORM_X :标准化
“标准化”指令,通过将输入 VALUE 中变量的值映射到线性标尺对其进行标准化。 可以使用参数 MIN 和 MAX 定义范围的限值。 输出 OUT 中的结果经过计算并存储为浮点数,这取决于要标准化的值在该值范围中的位置。 如果要标准化的值等于输入 MIN 中的值,则输出 OUT 将返回值“0.0”。 如果要标准化的值等于输入 MAX 的值,则输出 OUT 需返回值“1.0”。如果是用于模拟量的转换,则MIN和MAX表示的就是我们模拟量模块输入信号对应的数字量的范围,而VALUE表示的就是我们的模拟量模块的采用值。如下图所示:
(2)SCALE_X:缩放
“缩放”指令,通过将输入 VALUE 的值映射到的值范围来对其进行缩放。 当执行“缩放”指令时,输入 VALUE 的浮点值会缩放到由参数 MIN 和 MAX 定义的值范围。 缩放结果为整数,存储在 OUT 输出中。
所以通过这两个指令,我们就可以实现模拟量的转换过程。如下图所示:
(方法二) 可以自己通过转换指令(CONVERT)及数学函数中的计算指令(CALCULATE),按照模拟量的转换公式编写这个计算指令。
模拟量转换公式:
编写计算公式时,首先定义好各个管脚所对应的公式中的名称,
IV:IN1
Ish:IN2
Isl:IN3
Osh:IN4
Osl:IN5
OV:OUT
当然在会用的过程中,也可以直接使用带参数的FC按照模拟量的转换公式去编写相应的程序。
如何实现S7-200SMART自由口通讯
自由口通讯协议的关键条件
定义开始接收消息和停止接收消息的条件。
1、空闲线检测:设置il=1,sc=0,bk=0,smw90/smw190>0
空闲线条件定义为传输线路上的安静或者空闲的时间。SMW90/SMW190中是以ms为单位的空闲时间。在该方式下,从执行接收指令开始起动空闲时间检测。在传输线空闲的时间大于等于SMW90/SMW190中设定的时间之后接收的*个字符作为新信息的起始字符。接收消息功能将会忽略在空闲时间到达之前接收到的任何字符,并会在每个字符后面重新启动空闲线定时器。
空闲线时间应大于以波特率传送一个字符所需要的时间。空闲线时间的典型为以的波特率传送3个字符所需要的时间。传输速率为19200bit/s时候,可设置空闲时间为2ms。
对于二进制协议,没有特定起始字符的协议或了消息之间小时间间隔的协议,可以将空闲线检测用作开始条件。
2、起始字符检测:设置il=0,sc=1,bk=0,忽略smw90/smw190
起始字符是消息的*个字符,以SMB88/SMB188中的起始字符作为接收到的消息开始的标志。接收消息功能忽略起始字符之前收到的字符,起始字符和起始字符之后收到的所有字符都存储在消息缓冲区中。起始字符检测一般用于ASCII协议。
3、空闲线和起始字符:设置il=1,sc=1,bk=0,SMW90/SMW190大于0
满足空闲线条件之后,接收消息功能查找的起始字符。如果接收到的字符不是smB88/smb188的起始字符,将开始重新检测空闲线条件。在满足空闲线条件之前接收到的以及起始字符之前接收到的字符都将会被忽略。这种方式尤其适合用于通讯链路上有多台设备的情况。
4 、break检测:设置il=0,sc=0,bk=1,检测smw90/smw190和smb88/smb188
以接收到的break(断开)作为接收消息的开始。当接收到的数据保持为0的时间大于完整字符(包含起始位,数据位,奇偶校验位和停止位)传输的时间,表示检测到break。断开条件之前接收到的字符将忽略,断开条件之后接收到的任意字符都会存储在消息缓冲区中。
5、break和起始字符:il=0,sc=1,bk=1,忽略smw90/smw190
断开条件满足后,接收消息功能将查找的起始字符。如果接收到的字符不是起始字符,将重新搜索断开条件。所有在断开条件满足之前在接收到起始字符之前接收的字符都会忽略。起始字符和所有后续字符一起存入消息缓冲区
6、任何字符开始接受:设置il=1,sc=0,bk=0,smw90/smw190=0
忽略smb88/smb188中的起始字符。应为smw90/smw190中的空闲线时间为0,接收指令已经执行,便将立即开始强制接收所有的任意字符,并将存入消息缓冲区。
7、任意字符开始,消息定时器超过则结束接收消息:令il = 1,sc = 0,bk = 0,smw90/smw190 = 0,忽略smb88/smb188中的起始字符。以上设置用于实现从任意字符开始接收消息。
此外设置c/m = 1,tmr =1,用smw92/smw192设置以ms为单位的消息超时时间,用消息定时器监视接收是否超时。如果未满足其他结束条件,在消息定时器超时的时候,将会终止接收消息功能。这对自由口协议的主站是非常有用的。
定义通讯的传输速度和模式
SMB30=16#05=2# 00 0 001 01
其中从高位到低位依次:
00:表示无校验
0:表示8个数据位
001:表示波特率19200
01:表示自由口通讯
2.SMB87定义
定义接收消息控制字节
SMB87=16#FC = 2#1111 1100
其中从高位到低位依次:
en=1:启用接受消息功能
sc=1:使用SMB88 的值监测数据的起始
ec=1:使用SMB89 的值监测数据的终止
il=1:使用SMW90 的值监测空闲条件
c/m=1:定时器为消息定时器
tmr=1:超过SMW92 中的时间段,则终止接收
bk=0:忽略中断条件
SM87.0=0 (无效)
SMB88:定义开始字符为 2A
SMB89:定义结束字符为 0A
SMW90:空闲线时间段,单位:MS
SMW92:消息定时器的超时值(单位:MS),若超过该时间段,则停止接受消息
SMB94:要接受的大字符数(1--255个字节);即使未使用字符计数消息终止,此范围也必须设置为所需的大数据交换区
l SMW90=1000000us/19200 *11*3
其中:1000000/19200得到传输1个位需要多长时间,一个字符11个位,检测空闲3.5个字符,约等于3个字符
l SMW92=1000000us/19200 *11*20*1.5
其中:20表示字节接收大的字节数,与SMB94有关,1.5倍表示整个消息长度的倍数
4.执行接受指令
5.连接接受完成中断和发送完成中断,并且开放中断
6.接收完成中断:
由于我们使用的RS485转USB的线缆是半双工,发送和接收需要间隔至少5ms的时间。所以接 收完成后先延时5ms在发送。
7.SMB34定时中断:
延时时间到,执行发送指令,把先期接收到的数据再发送给PC。
8.发送完成中断:
呼和浩特西门子PLC系列代理商