版权声明 无需授权即可转载 实现的功能这次通信的对象换成了1200的CPU,想要实现的功能如下 1.显示Sin波形数据2.显示数据及曲线3.控制数据的初始化 S7-1200生成正弦波这个可以使用Simense公司针对1200和1500系列PLC专门提供的函数库
控制功能实现Node-Red的使用就不在赘述了,可以参考上一篇文章,框图如下 1.对S7-1200PLC进行通信参数的配置,以及变量的设定2.读变量3.通过uiBuilder进行render4.uiBuilder发出的msg通过function转换成布尔量的数组5.写变量M104.06.写变量M104.1 写变量是通过 let topic = msg.topic if (topic === 'm104_0'){ status = msg.payload.M104_0 msg.payload = status return [msg, null] }else if(topic === 'm104_1'){ status = msg.payload.M104_1 msg.payload = status return [null, msg] } 当topic为不同的变量名时,即写入对应变量名的状态,其中msg.topic和msg.payload是uiBuilder中通过vue中的methods方法传出 <!---按钮1---><a href='#' class='btn btn-warning btn-circle' @click='resetCurve1'><i class='fas fa-pause-circle'></i></a><!---按钮2---><a href='#' class='btn btn-success btn-circle' @click='resetCurve2'><i class='fas fa-pause-circle'></i></a> Html代码中两个按钮上分别通过click事件关联vue中不同的methods,一个是 resetCurve1() { let m104_0 = this.msgRecvd.payload.M104_0; if (m104_0 === true) { uibuilder.send({ topic: 'm104_0', payload: { M104_0: false, }, }); } else { uibuilder.send({ topic: 'm104_0', payload: { M104_0: true, }, }); } }, 基本逻辑就是先获取M104.0的当前值,之后取其反,通过uibuilder的 图表的实现图表是使用highcharts的vue库,可以直接在uiBuilder中调用 Vue.use(HighchartsVue.default); Html代码中是通过vue组件的形式使用highcharts <highcharts :options='chartOptions'></highcharts> 其中option通过一个computed函数进行赋值,主要是曲线的一些参数 chartOptions() { return { chart: { type: this.modo }, title: { text: this.title }, series: this.series, };}, vue中的数据包括曲线的title,曲线类型和数据Serial,当然也可以增加更多的highcharts属性,可以参考链接 highcharts-vue[3] 曲线数据的实时更新是在vue的mounted函数中进行的 uibuilder.onChange('msg', function (newVal) { vueApp.msgRecvd = newVal; if (typeof vueApp.msgRecvd.payload.MD100 === 'number') { // Add new element vueApp.series[0].data.push(vueApp.msgRecvd.payload.MD100); vueApp.series[0].data.shift(); vueApp.series[1].data.push(vueApp.msgRecvd.payload.MD108); vueApp.series[1].data.shift(); } }); 通过push方法向数组中添加新数据,shift方法移除旧数据,可以通过限定数组的长度来实现曲线的显示宽度 引用链接
|
|
来自: AllenLI123 > 《待分类》