2008-09-24
论坛中关于PC/PPI电缆的贴子不少,本人来谈谈对PC/PPI电缆的认识。因本人并未解剖或做过类似的电缆,仅依推测来谈,错误和不当之处,请各位网友不吝指正。又本人没有见过新的USB和最新的6ES7 901-3CB30-0XA0电缆,对这两根电缆本人并不熟悉。
1、为什么要用PC/PPI接口?
因S7200CPU使用的是RS485,而PC机的COM口采用的是RS232,两者的电气规范并不相容,需要用中间电路进行匹配。PC/PPI其实就是一根RS485/RS232的匹配电缆。
2、RS485采用差分的两根A/B线进行通讯,A和B两根线的相对电平来表达0和1,同一时刻只能由一个设备驱动总线,其它在总线上的设备此时都处在接收状态;
RS232接口收RXD和发TXD线独立,可以同时进行收发通讯,同时RS232设计成两个设备之间的单独通讯,不支持多于两个设备的联接,所以它的收发随时都可进行,不会发生通讯碰撞。
3、RS485总线上什么设备、何时可以驱动总线,是由通讯协议决定的。RS485和RS232都没有多余的引线告知处在中间的匹配电缆什么时候可以驱动RS485总线,而且匹配电缆一般也不懂具体的通讯协议。匹配电缆单方面根据RS232的发送需求来决定是否需要驱动RS485总线:当TXD线上有发送数据脉冲时,匹配电缆立即由接收态转为发送态,驱动RS485总线,当TXD上数据脉冲消失后,匹配电缆再转为接状态,允许RS485总线上的其它设备驱动总线。
4、为什么要设置波特率和数据位长?
从PC/PPI的规范中有一条:
Direction change delay: RS–232 stop bit edge received to RS–485 transmission disabled
1.4 character times max.(1.4 x 11/baud) = 1.6 ms at 9600 baud
意思是说,从收到RS232的停止位起,到RS485发送停止(即停止驱动RS485总线),这个时间最长为1.4个字符的发送时间,是个相对于波特率和字符位数的量。如果RS232发送的字符间隔小于1.4的字符宽度,那么PC/PPI连续驱动RS485总线,可以消除终止驱动又再驱动而引入的噪音。
从几百波特率到几K甚至几十K波特率,相差10位以上,低波特率的数据脉冲,在高波特率时与字符间隔相当,所以要正确设置以保证通讯的稳定可靠。
5、为什么有的(非西门子)匹配电缆不用设置,能做到自适应?
据我所知,如果匹配电缆只在发送0时驱动总线,在发送1时不驱动总线,可以做到自适应。通过电路上的设计,当没有设备驱动总线时,让总线处于1的状态,所以,不驱动总线也可以发送1(不知道这样做可连接的站点数是否会下降?)。RS232发送完停止位后,TXD即停留在1状态,直至下一个字符的起始位为止,所以,自适应的匹配电缆在发送完停止位后,立即停止驱动(释放)RS485总线,与波特率和位长无关。
6、什么叫矢量控制? 70年代西门子工程师F.Blaschke首先提出异步电机矢量控制理论来解决交流电机转矩控制问题。矢量控制实现的基本原理是通过测量和控制异步电动机定子电流矢量,根据磁场定向原理分别对异步电动机的励磁电流和转矩电流进行控制,从而达到控制异步电动机转矩的目的。具体是将异步电动机的定子电流矢量分解为产生磁场的电流分量 (励磁电流) 和产生转矩的电流分量 (转矩电流) 分别加以控制,并同时控制两分量间的幅值和相位,即控制定子电流矢量,所以称这种控制方式称为矢量控制方式。
7、 什么是立即执行。 你就将映像区理解为照相机就好了,喀察,照了相(物理输入到了输入映像区),存到SD,喀察,照了相,又存到SD,完了你回家成批的将照的相用USB取出来到电脑上(输出映像到了物理输出)(扫描周期完了才刷新映像区) 立即就不经过映像区了,喀察,照了相物理(输入到了输入映像区),直接就存到电脑上了,不要等到全拍完了才用USB输出(输出映像到了物理输出)(不等到本扫描扫描周期结束就刷新)
8、 我是个新手,编了个程序.在调试时发现,当结束子程序时其内部的触点没有复位.不知如何处理.有经验者请指点一二.最好是结束子程序时自动复位 。 手动复位行不行?可以的话就在子程序最后加一个总清零吧。
所谓的自动也只不过是编程者手动加进去的。PLC总不会无原无故地来个自动清零。正如WINDOWS系统,当你鼠标放到开始键时会自动显示“单击这里开始”字样,你觉得是自动,但是对编程者来说是必然的。话说回来,你想内部触点自动复位,那未,PLC一定会经过一个必然的复位程序来复位内部触点。所以编程者(这还是你)也必然地编进这部分程序。
提示:当一个子程序结束后不在运行的话,他的一切手尾工夫都会一下子丢在那儿不管的了,除非有另外的程序来帮他收拾,或者你自己来收拾。要么就你叫他临走之前自己先收拾好了再走。
9、 USB/COM 转换器使用经验谈
笔记本上淘汰串口已是大势趋,而使用串口的工控设备仍将长期存在,所以对工控一族来说,几乎都会接触 USB/COM 转换器。到各大工控论坛转转,很多人反应 USB/COM 转换器不好用,经常出现无法连接设备、只能单向连接、连接不稳定、电脑死机等现象,不少朋友为此到处发帖询问有哪些内置串口的笔记本。
总结一下我使用该类转换器的经验,希望对有此类困扰的朋友有所帮助。
一、选购
目前市场上能买到的 USB/COM 转换器很杂,兼容性有好有坏,价格也是从二三十元到百多元不等。建议大家不要买那种三五十元的大路货,这种小产品不是很贵,你一个项目的差旅费都够你去做代理商了,没有必要为了节约几十块钱给自己留一大堆兼容性问题,所以选购时一定不要为JS的花言巧语所动。
我所知的以 prolific 芯片的兼容较好(还有其它几款也不错,但我没有亲自使用过,没有发言权,不敢妄言),我正在使用的转换器就是基于 prolific 芯片的,二年前买的,120元,带驱动光盘(小盘)。用它连接过PLC、触摸屏、手机、很老的掌上电脑、已成古董的串口键鼠、包括用 232/485 做二次转换连接各种变频器,从没有碰到过不正常的现象,就跟内置串口一样好用。
二、安装
选了一块兼容性好的转换器,装完驱动后还有个重要的步骤就是确定端口
首先要确定使用串口的工控软件支持哪些串口(大多数只能用COM1/COM2),转换器安装后默认使用的一般是COM3/COM4,此时需要修改端口。将转换器插在USB口,打开设备管理器,打开虚拟出来的串口(不插转换器时是看不到的)的属性对话框,在高级设置中将端口改成COM1或COM2,通用性好一些,如果你的软件支持COM3/COM4也可以不改。改好后扫描一下硬件改变,不需重启机器(我的系统是XP,其它系统没测试过),再打开串口属性可以看到端口已改变。
在此属性对话框中适当增加收发缓冲区大小,可以提高通讯速度,我一般设为10-14字节。如果遇到稳定性问题,试着将缓冲区改为1字节(虽然我没遇到过)。
三、设置通讯参数
有了一个具体的连接需求后,先在控制软件中选择串口为上一步所设定的串口号。然后设置波特率、数据位、停止位、校验位等参数,需要在三个地方保持参数一致:设备管理器、控制软件、被连接设备。
很多连接失败的朋友就是因为忽略了设备管理器中的通讯参数设置。
四、USB/COM串口的特点
1、可以“带电拔插”
之所以要打上引号,指的是每次拔插时是先从电脑上拔下USB转换器,再将串口设备从转换器上拔下,而不是直接在带电状态下将连接的串口设备拔下(此时对串口来说实际上是单端带电拔插)。
真实的串口能否带电拔两方面我都没有看到过明确的规定,虽然大多数时候直接拔插不会有问题,但说不定哪一次你的主板就报废了。我们做工控的应该有安全意识,没有明确说明可以直接拔插的就不要直接拔插,坏一块主板事小,要是哪次在现场坏了台关键设备,误事就大了,到时可别怪我没提醒啊。
另外关于USB的带电拔插也不是任意的,只能在通讯空闲的时候拔插。比如 U 盘在读写数据的时候拔插是极易损坏的。
2、可以同时使用多个串口
在每个USB上插上转换器,安装驱动并设置不同的端口,就可以拥有多个串口了。也可以将一个转换器安装在不同的USB口并设置相同的端口号,但使用不同的配置,则可以快速改变串口参数。比如我在两个USB口安装驱动端口都设为COM2,一个9.6K波特、一个19.2波特,要切换配置时只需要换一个USB口就行了。
如果没有注意这一特点,往往导致接失败,记住,插在不同的USB的串口是不一样的。
PS:
软件模拟的串口有很多优点,很多芯片兼容性做得也很好了,但也不是与真实串口完全一样了,比如软件串口没有硬件中断。
10、 NPN和PNP传感器混接进200PLC的方法
经验分享:大家都知道一般日系PLC如三菱、OMRON等一般公共端是+信号接入的时候通常是选用NPN传感器。欧系PLC的公共端一般是-,大多选用PNP的传感器接入信号。如200/300等那么当200PLC做系统时候,提供的传感器有PNP和NPN两种那么问题怎么解决呢?
方法一:NPN传感器利用中间继电器转接
方法二:大家在设计的时候一般把200PLC的输入端[M]统一接24V-,其实,200PLC同样可以引入-信号输入,把1M的接24V+,I0.0-0.7统一接NPN传感器,把2M接24V-,把PNP传感器统一接I1.0-1.7这样就能达到NPN&PNP传感器混接进PLC的目的。当然在设计图纸上一定要分清楚不要混。原因很简单,200PLC支持两种信号接入,内部是双向二极管采用光电隔离进行信号传输的。希望对大家在工程改造中有用处!
11、 200的模拟量输入一般是12位分辨率,精度一般能达到多少,一般分辨率和精度对应关系是如何计算的。
分辨率是A/D模拟量转换芯片的转换精度,即用多少位的数值来表示模拟量。S7-200模拟量模块的转换分辨率是12位,能够反映模拟量变化的最小单位是满量程的1/4096。
模拟量转换的精度除了取决于A/D转换的分辨率,还受到转换芯片的外围电路的影响。在实际应用中,输入的模拟量信号会有波动、噪声和干扰,内部模拟电路也会产生噪声、漂移,这些都会对转换的最后精度造成影响。这些因素造成的误差要大于A/D芯片的转换误差。
分辩率只代表了最小量化的梯度,和精度无直接联系,12位是4096位,如取中点为零则为正负2048位,即数字的最小变化是量程的4096分之一。但一般情况下,考虑到非线性、重复性、温度变化、电源变化等的影响,全范围精度能做到千分之一就不错了,计算的方法可查手册,对照你的环境计算一下就可以了。如果是双极性,却用于只有正或负的信号输入时是量程的1/2048。所以,有些精度的标注是精度值再加减一个字。这一个字就是量化误差。不过,AD的制造商是考虑到条件因素,如果稳定性差,分辨率再高也没用,只是用于调节时平滑些。所以,较好条件下的测量系统精度取分辨率的1/3较适宜。用于控制取1/10左右。
12、 本人现在吉林省调试S7-200做的一套设备,碰到如下问题,望高手指点一二。 用变频器来控制泵的流量,流量是通过质量流量计来检测的,给定值0.89(12kg/min),启动泵以后流量很快就达到了0.8(约10kg/min),但系统在这之后就很慢了,要到10多分钟才达到0.89,系统只使用PI调节,调了很多参数,但系统的响应速度还是很慢,苦恼得很,望高手指点一下,我的参数设置如下:比例:3 积分:3 采样时间; 0.1 微分; 0。何苦这样做!? 最好的办法就是用自己编程,用增量式的PID做. 首先根据你设定的流量,通过公式算出一个大概的频率,以这个频率为做t=0时刻PID的输出! 因为一般泵的流量和电机的转速是成正比的. 你可以先做个测试,比如强制把电机频率直接调到50HZ,观察泵的流量,假设此时泵的流量为Q, 那么当你需要设定流量为q的时候,大概所需要的频率为50q/Q .当系统启动时,以此值做为增量式PID的t=0时刻的输出值,在此基础上做PID运算,超调非常小,稳定时间也会很短的. 调节的过程可以先把积分系数(注意是积分系数,而不是积分时间)调为零,慢慢增大P系数,当有点超振荡时再慢慢加积分系数....不难的. 上帝保佑你! 呵呵
13、 晶体管输出与继电器输出各自的优点如何? 晶体管不能带AC220V的交流负载,只能带低压的直流。对抗过载和过压的能力差。但可以高频输出,适合高频率输出的场合。例如脉冲控制
继电器可以带AC220V和直流的负载。但由于继电器本身的特性决定了它不能高频输出。同时继电器通断的寿命一搬在10万次左右。所以在频繁通断的场合也适合用晶体管的
14、 我想用两台PC做主站,通过DP总线方式与下面的224从站通信。但两台PC机之间应该怎样协调?OPC是什么概念?
485从硬件上就是不支持多主系统的,西门子的所谓多主应该是令牌环之类的令牌总线(逻辑拓扑结构)。真正的多种系统必须带有硬件的冲突检测机制、允许主设备在要发送的时候不用管其他的设备是否要发送,只要总线是空闲的就行了。但这样就会有个问题,现在总线是忙的,但几个设备凑巧同时发送,就产生了冲突,以太网是所有设备都下来,然后等待一个随机的时间再重新开始发送过程;CAN本身带有优先级。
15、 应用自由口通讯一定要注意以下几点:
1 应用自由口通讯首先要把通讯口定义为自由口模式,同时设置相应的通讯波特率和通讯格式。用户程序通过特殊存储器SMB30(对端口0)、SMB130(对端口1)控制通讯口的工作模式。
2 CPU通讯口工作在自由口模式时,通讯口就不支持其他通讯协议(比如PPI),此通讯口不能再与编程软件Micro/WIN通讯。
3 由于S7-200的通讯端口是半双工RS-485芯片,XMT指令和RCV指令不能同时有效。所以确保不同时执行XMT和RCV非常重要,可以使用发送完成中断和接收完成中断功能,在中断程序中启动另一个指令。
所以在两个CPU中要分时进行接受和发送,两者部分主从关系。
评论10
楼主 2007/1/22 13:31:55
作者写的挺详细的,深深表示感谢!
楼主 2007/1/22 19:22:57
很详细,要认真看看
楼主 2007/1/29 0:35:47
楼主 2007/2/6 23:49:55
好,辛苦
楼主 2007/2/7 11:25:17
就是把别人的经验拿过来借鉴,为己所用。
把看到的好的贴子或文章收藏起来,以后备用
楼主 2008/1/3 17:04:05
楼主 2008/1/6 11:56:25
我也收藏一下
楼主 2008/1/24 15:32:15
很详细 我很喜欢
发到我的博客了
楼主 2008/9/24 16:22:57