不知道大家有没有接触过污水处理项目,其中有一个重要的工作就是出水水质参数(流量及其他分析仪表数据)的采集。这个数据要同时给数采仪上传到环保平台还要给水厂自控系统显示。最早的做法是通过4-20mA传输,如果仪表只有一路4-20mA输出就加一个一入二出的隔离模块解决。但是模拟量传输精度太低,尤其是水质仪表,平时数据只有总量程的10%左右,很容易造成误差超标。在环保监管不太严格的时候这种方案还可以满足要求,目前环保监管越来越严格,出水指标越来越高,模拟量传输方式已经难以满足要求。
后来发展成通过485通讯采集,但是大部分仪表都只提供一路485端口,这个端口要优先供给数采仪使用,水厂自控采集仍使用4-20mA,这样虽然给环保局的数据准确了,但本厂显示还是不准确,现在环保核查要求水厂本地数据要与环保平台的数据一致,显然这种方案也无法满足要求。
最终的解决方案就是数采仪通过485读取数据再回传给水厂自控系统。目前比较常见的方案就是通过以太网modbus-TCP回传给水厂上位机或PLC,但是数采仪一般标配是环境212协议,要想增加modbus-tcp协议需要支付费用,大概4000元左右。并且在实际应用中发现容易造成数采仪死机的情况。
由于环境212协议是通过TCP通讯传输的,而西门子PLC都有TCP通讯功能,所以可以利用PLC与数采仪直接TCP通讯的方式读取212协议报文,再通过编程解析报文得到水质数据。环境212协议采用ASCII码字符的方式传输,不同的水质参数有不同的字符编号,利用PLC的字符串指令可以在数据报文中定位水质参数字符并将水质数据转换成实数变量用于本地显示。这种方案只需要在数采仪中增加一路传输通道配置,不需要做任何驱动程序。字符串指令方面,300PLC比1200弱不少,用1200PLC可以非常方便的解析212协议,感兴趣的朋友可以试试。