| 公告 |
|
| 动态 |
|
Modbus遐(瞎)想续篇——通用Modbus方案
发布:醉书生 时间:2009-06-25
S7-200 Modbus RTU 主站库 V2.1
发布:醉书生 时间:2008-08-05
相对上一版的更新:
1、初始化时可选择通讯口,更换端口不必先删除POU再添加新库子程序
2、每端口支持两种通讯控制方式,可以简化调试过程
3、字符间超时时间由固定值改为初始化化时参数给定
4、数据处理与收发完全分离,对于小项目可以不必调用MBUS_MSG
5、支持外部帧(见改善Modbus通讯效率),外部帧与参数调用方式无缝整合
6、外部帧额外支持功能码 22/23(位屏蔽/同时读写多寄存器)
另外为 ASCII 传输模式准备了 3 个子程序,用于 LRC 计算、ASCII 和 RTU 帧格式互转。
停止对“S7-200仿真软件”有关问题的解答
发布:醉书生 时间:2008-02-24
平均值滤波之鬼斧神工算法(附代码)
发布:醉书生 时间:2007-12-31
在十种经典软件滤波算法中,可以看到很多算法都是平均值滤波算法变种,事实上最常用的也还是平均值滤波算法。但传统的平均值滤波算法很占内存,每次运算都要求累加和,再求平均值,导致运算效率不高。
今天介绍一种超简洁超高效的平均滤波算法,此算法是以前搞单片机时一老师所创(单片机上的内存简直是寸土寸金),仅仅用三个变量,就完成了平均值滤波的计算。刚开始看到这个算法是只觉得很佩服,后来用了各种各样的算法后,才感到此算法简直到了鬼斧神工的地步(别以为看完后觉得太简单没啥大不了的,正是因为太简单才突出了它的了不起,最开始能想到将一个复杂的算法简化到无法再简的地步非一般功力所能做到的)。
在该基础上,我们再演变出一种带死区和限幅控制的队列平均值实用算法。
十种经典的软件滤波方法[转]
发布:醉书生 时间:2007-12-29
简单可靠的电压-电流变换电路
发布:醉书生 时间:2007-12-25
本分类名曰自控电子,但自工作从单片机转PLC后,实际很上很少涉及电子方面的东西了,有点对不起这个栏目。
客户设备上的一台电空变换器退役,客户自购的型号错误,将电压型的买成了电流型的,该器件采购周期较长,客户单位生产时间较紧,所以想到了这个电路,将电压控制信号转换为电流信号。此电路是以前一搞硬件特牛的师兄设计的,曾在多个项目中使用,稳定可靠。书生曾用 Saber 对此电路进行动态仿真,转换曲线十分平滑,线性度非常好。电路元件少,易采购,线路简洁,具有较高的使用价值。
Modbus遐(瞎)想——被自己吓了一跳
发布:醉书生 时间:2007-12-22
如何让不会写通讯程序的人也能用 ModBus 通讯?
脑子里不知怎么突然冒出这个想法,将自己都吓了一跳。随即又激动起来,虽然有点大胆,但不是说思想有多远就能走多远么,考虑了一下,还是有很大的可行性的。
一、按 改善Modbus通讯效率 中的说明编写一个数据无关的通讯库
二、设置一段缓存,用于存储自定义报文
三、建一个表管理每个报文的首地址(缓存第一字节指明报文的长度)
四、用一个子程来处理表中的每一段报文,将这个子程序也放到库中
五、建一个表+缓存来管理通讯发送与接收的数据
六、在人机界面上设计编辑器,用来填写报文、报文管理表
七、用户程序中只需要一条命令 Call 程序,通讯部分完成
八、将要发送的数据MOV到缓存,从缓存MOV返回数据完成数据交换
做这个库工作量不小,但却是一劳永逸的事情。使用者不需要懂得编写通讯程序,只要了解Modbus协议,在人机界面上填下数据,程序中调用一条子程序即可。
别陷入思维定式(S7-200另类定时)
发布:醉书生 时间:2007-12-05
S7-200 自带的系统定时器多达 256 个,在解决一些普通的定时需求时确实很方便,但它不是万能的。特别是在这个问题中,定时的任务数是可变的,不确定的,且随机发生,用系统定时器就会很烦琐。因系统定时器不支持间接寻址,每启动一个新的定时器,就必须有一条显式的定时器语句调用,在我们不知道确切的定时任务时,只能启用最大可能的定时数,这样会产生很多仅定时器号不同的“相同”代码。而且,当定时任务数超出系统定时器的个数时,系统定时器无法满足需求。
其实这个问题本身很简单,用系统定时器也可以达到目的。关键是采用什么样的算法和结构,以使代码量尽可能的少。
自控的要义在于“偷懒”,能够满足精度要求时,用尽可能简洁的代码达到相同目的,且尽可能保持良好的可扩展性。
改善 Modbus 通讯效率
发布:醉书生 时间:2007-11-19
基于原始协议的 Modbus RTU 主站库
发布:醉书生 时间:2007-11-16
S7-200 可以通过自由口通讯方式支持 Modbus 协议,在 Micro 'n Power 中也提供了一个适用于 S7-200 的免费库。但库太过于 S7-200 化了,为了简化在 S7-200 上的应用,该库对 Modbus 协议进行了过多的包装。比如人为对地址进行分类,通过地址前缀将功能码和寄存器地址合二为一,对于熟知 S7-200 且多用于 S7-200 之间通讯的开发者来说,使用是很方便的,但对于那些对 Modbus 一知半解的人来说,就容易产生迷惑性。








