Beispiel #1
0
 def __init__(
     self,
     *,
     host='127.0.0.1',
     bit_adr=0,
     bit_num=1,
     word_adr=0,
     word_num=1,
     timeout=1,
     name='Modbus Server',
 ):
     """Init server."""
     self.port = mdb.PORT
     self.host = host
     self.bit_adr = bit_adr
     self.bit_num = bit_num
     self.word_adr = word_adr
     self.word_num = word_num
     self.timeout = timeout
     self.name = name
     self.connection = None
     try:
         self.connection = ModbusServer(
             host=self.host,
             port=self.port,
             no_block=True,
         )
         self.connection.start()
     except Exception as err:
         raise ServerError('Error with server', err)
Beispiel #2
0
    def escreveModbus(self, contador):

        self.server = ModbusServer("127.0.0.1",
                                   int(self.portaTCP),
                                   no_block=True)
        self.server.start()
        DataBank.set_words(0, [int(contador)])
 def setUp(self):
     # modbus server
     self.server = ModbusServer(port=5020, no_block=True)
     self.server.start()
     # modbus client
     self.client = ModbusClient(port=5020)
     self.client.open()
 def setUp(self):
     # modbus server
     self.server = ModbusServer(port=TestClientServer.port, no_block=True)
     self.server.start()
     # modbus client
     self.client = ModbusClient(port=TestClientServer.port)
     self.client.open()
     # to prevent address taken errors
     TestClientServer.port += 1
Beispiel #5
0
def server_stop(host, port):
    # parse args
    #parser = argparse.ArgumentParser()
    #parser.add_argument('-H', '--host', type=str, default='localhost', help='Host')
    #parser.add_argument('-p', '--port', type=int, default=502, help='TCP port')
    #args = parser.parse_args()
    # start modbus server
    #print("humo")
    server = ModbusServer(host, int(port), no_block=False)
    server.stop()
def run_modbus_server(host, port):
    print('starting modbus server at %s:%d' % (host, port))
    server = ModbusServer(host=host, port=port, no_block=True)
    server.start()
    DataBank.set_words(0, [0] * 100)
    while True:
        DataBank.set_words(0x39, [random.randint(1, 10), 0])
        DataBank.set_words(0x41, [random.randint(1, 10), 0])
        DataBank.set_words(0x4b, [random.randint(1, 10), 0])
        DataBank.set_words(0x50, [random.randint(1, 10), 0])
        time.sleep(1)
Beispiel #7
0
def main():
    ip, port = load_serve_config('server_info.json')
    server = ModbusServer(ip, port)
    print('PAI TA ÔN')
    print(f'IP: {ip} port {port}')

    try:
        server.start()

    except Exception as e:
        print(f'shutdown server with exception: {e}')
        server.stop()
        print('server is offline')
Beispiel #8
0
def run_server():

    server = ModbusServer(host="", port=502, no_block=True)
    try:
        server.start()
        logging.info("Modbus server started")
        #Initialize 500 registers from address 0
        DataBank.set_words(0, [0x0000] * 500)
        while True:
            continue

    #Stop server if interrupted
    except:
        server.close()
def main():
    """ Main method to run the pyModbusTCP server for the test modbus endpoint.
    """
    try:
        print('modbus main start')
        # Set holding register data to their address.
        # Set coils to address % 3 == 0.
        for i in range(0x4000):
            print('Setting word {} to {}'.format(i, i))
            print('Setting bits {} to {}'.format(i, i % 3 == 0))
            DataBank.set_words(i, [i])
            DataBank.set_bits(i, [i % 3 == 0])

        server = ModbusServer(host='', port=1502, no_block=True)
        server.start()
        print('started modbus server')
        global STOP_SERVER
        while not STOP_SERVER:
            time.sleep(.01)
        server.stop()
        print('stopped modbus server')
    except Exception:
        traceback.print_exc()
Beispiel #10
0
from pyModbusTCP.server import ModbusServer, DataBank
from time import sleep

#Criando uma instancia de ModbusServer
server = ModbusServer("localHost", 502, no_block=True)

try:
    print("Start server ...")
    server.start()
    print("Server is online")
    state = [0]
    while True:
        if state != DataBank.get_words(1):
            state = DataBank.get_words(1)
            print("Value has changed to " +str(state))
        sleep(0.5)

except:
    print("Shutdown server ...")
    server.stop()
    print("Server is offiline")
Beispiel #11
0
from pyModbusTCP.server import ModbusServer

if __name__ == '__main__':
    server = ModbusServer(host='localhost', port=502)
    server.start()
from pyModbusTCP.server import ModbusServer, DataBank
from time import sleep
from random import uniform

# Create an instance
server = ModbusServer("127.0.0.1", 12345, no_block=True)

try:
    print("Start server...")
    server.start()
    print("Server is online")
    state = [0]
    while True:
        DataBank.set_words(0, [int(uniform(0, 100))])
        if state != DataBank.get_words(1):
            state = DataBank.get_words(1)
            print("Value of Register_1 has changed to " + str(state))
            sleep(0.5)
except:
    print("Shutdown server ...")
    server.stop()
    print("Server is offline")
import time
from pyModbusTCP.server import ModbusServer, DataBank
from time import sleep

server = ModbusServer("172.17.115.225", 502, no_block=True)

try:
    while True:
        print("Iniciando servidor...")
        server.start()
        print("Servidor iniciado")

        while True:
            DataBank.get_words(0)
            DataBank.get_words(1)
            DataBank.get_words(2)
            sleep(1)

except:
    print("Desligando servidor...")
    server.stop()
    print("Servidor desligado")
Beispiel #14
0
            write_l = [Tags.PV, Tags.SP, Tags.OUT, Tags.KP, Tags.KI, Tags.KD]
        DB.set_floats(0, write_l)
        # wait next loop
        time.sleep(0.5)


# main program
if __name__ == "__main__":
    # init and start modbus data manager
    tp = Thread(target=mbus_data_thread)
    # set daemon: polling thread will exit if main thread exit
    tp.daemon = True
    tp.start()

    # init and start modbus server(remain this after modbus data manager init)
    server = ModbusServer(host="0.0.0.0", port=502, no_block=True)
    server.start()

    # init serial port
    s = ArduinoCommandSerial("/dev/ttyATH0", baudrate=9600, timeout=2.0)

    # init PID board
    # s.send_cmd("auto", echo=True)

    # main loop
    while True:
        # process pending command
        while not Tags.cmd_q.empty():
            cmd = Tags.cmd_q.get()
            s.send_cmd(cmd, echo=True)
        # read process values
Beispiel #15
0
#!/usr/bin/env python3

"""
Example Modbus Server: run 60 seconds
Reference: https://youtu.be/FYPQgnQE9fk

Author: Zihan
Date: 2021-07-10
"""

from pyModbusTCP.server import ModbusServer, DataBank
import time

try:
    server = ModbusServer(host='localhost',
                          port=1234,
                          no_block=True)
    server.start()
    state = 10
    t0 = time.time()
    while True:
        DataBank.set_words(0, [1, 2, 3])
        if state != DataBank.get_words(10, 1)[0]:
            state = DataBank.get_words(10, 1)[0]
            print('state changed to {}'.format(state))
        time.sleep(0.05)
        if time.time() - t0 > 60:
            break
    server.stop()
except:
    print('Failed to create a server')
Script cliente:
from pyModbusTCP.client import ModbusClient
from time import sleep
SERVER_HOST="192.168.0.12"
SERVER_PORT=502
c=ModbusClient(host=SERVER_HOST,port=SERVER_PORT,auto_open=True)
c.open()
while True:
    if c.is_open():
        regs=c.read_input_registers(reg_addr=10,reg_nb=1)
        print(regs)
        sleep(3)
    else:
        print("can't connect")
        sleep(3)
Script servidor:
from pyModbusTCP.server import ModbusServer , DataBank
DataBank.set_words(address=10,word_list=[15])
server=ModbusServer(host="192.168.0.12",port=502,no_block=True)
server.start()
while True:
    pass
Beispiel #17
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Modbus/TCP server

import argparse
from pyModbusTCP.server import ModbusServer

if __name__ == '__main__':

    # parse args
    parser = argparse.ArgumentParser()
    parser.add_argument('-H', '--host', type=str, default='localhost', help='Host')
    parser.add_argument('-p', '--port', type=int, default=502, help='TCP port')
    args = parser.parse_args()
    # start modbus server
    server = ModbusServer(host=args.host, port=args.port)
    print("Server ModbusTCP started with param host="+args.host+" port="+str(args.port))
    server.start()

    # Print commandes entrantes et etat des registre?
Beispiel #18
0
from pyModbusTCP.server import ModbusServer

# This script is used during debugging to set up a modbus server
server = ModbusServer("192.168.68.113", 502)
print(server.host)

try:
    server.start()
    while True:
        pass

except:
    print("Shutdown server ...")
    server.stop()
    print("Server is offline")
Beispiel #19
0
from pyModbusTCP.server import ModbusServer, DataBank
from time import sleep
import random

SERVER_HOST_IP = "localhost"
SERVER_PORT = 502

# Create an instance of ModbusServer
server = ModbusServer(SERVER_HOST_IP, SERVER_PORT, no_block=True)

if __name__ == '__main__':
    try:
        print("Starting server...")
        server.start()
        print("Server online")

        # Server enable
        DataBank.set_bits(9901, [1])

        # Sample Rate (Hz)
        DataBank.set_words(39901, [2])

        # Fake sensor configuration (LANE 00)
        # Lane_Enable
        DataBank.set_bits(0, [1])
        # Sensor value
        DataBank.set_words(30001, [0])
        # Raw voltage value (0.1 mV)
        DataBank.set_words(30002, [0])
        # Sensor type
        DataBank.set_words(40001, [0])
Beispiel #20
0
    words.append(random.randrange(0, 10000))
    words.append(random.randrange(220, 240))
    words.append(random.randrange(0, 800))
    print(words)

    DataBank.set_words(0, [words[0]])  # power
    DataBank.set_words(1, [words[1]])  # ac voltage
    DataBank.set_words(2, [words[2]])  # dc voltage


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-H",
                        "--host",
                        type=str,
                        default="0.0.0.0",
                        help="host")
    parser.add_argument("-p", "--port", type=int, default=502, help="port")
    args = parser.parse_args()

    modbus_server = ModbusServer(host=args.host, port=args.port, no_block=True)
    modbus_server.start()

    scheduler = BackgroundScheduler()
    scheduler.add_job(set_databank_words, trigger="cron", second="*/20")
    scheduler.start()

    print('server started on {0}:{1}!'.format(args.host, args.port))

    while True:
        time.sleep(1)
Beispiel #21
0
# Modbus/TCP server

from pyModbusTCP.server import ModbusServer

if __name__ == '__main__':
    server = ModbusServer(host='0.0.0.0', port=5020)
    server.start()
Beispiel #22
0
 def run(self, run_async: bool = True):
     self.server = ModbusServer(host=self.host,
                                port=self.port,
                                no_block=run_async)
     self.server.start()
Beispiel #23
0
from time import sleep
import pygame

pygame.init()
pygame.joystick.init()
t = pygame.joystick.get_count()
controller = pygame.joystick.Joystick(0)
controller.init()
axis_data = {0: 0.0, 2: 0.0, 3: 0.9, 4: 0, 1: 0.0}
button_data = {0: False, 1: False, 2: False, 3: False, 9: False, 10: False}
x = 0
y = 0

# Create an instance of ModbusServer
#server = ModbusServer("158.38.140.10", 502, no_block=True)
server = ModbusServer("10.0.1.92", 502, no_block=True)
print("Start server...")
server.start()
print("Server is online")
state = [0]
while True:
    for event in pygame.event.get():
        if event.type == pygame.JOYAXISMOTION:
            axis_data[event.axis] = round(event.value * 100, 1)
            x = axis_data[0]
            y = axis_data[1] * -1
        elif event.type == pygame.JOYBUTTONDOWN:
            button_data[event.button] = True
        elif event.type == pygame.JOYBUTTONUP:
            button_data[event.button] = False
    buzzer = button_data[0]  # Square button
Beispiel #24
0
from pyModbusTCP.server import ModbusServer, DataBank
from time import sleep

server = ModbusServer("192.168.1.192", 502)

print(server.host)

try:
    print("Start server...")
    server.start()
    print("Server is online")
    state = [0]
    while True:
        #DataBank.set_words(0, [int(uniform(0, 100))])
        if state != DataBank.get_words(1):
            state = DataBank.get_words(1)
            print("Value of Register 1 has changed to " + str(state))
        sleep(0.5)

except:
    print("Shutdown server ...")
    server.stop()
    print("Server is offline")
Beispiel #25
0
#!/bin/python

from pyModbusTCP.server import ModbusServer, DataBank
from time import sleep
from random import uniform

# Create an instance of ModbusServer
server = ModbusServer("127.0.0.1", 502, no_block=True)

try:
    print("Start server...")
    server.start()
    print("Server is online")
    state = [0]
    while True:
        DataBank.set_words(0, [int(uniform(0, 100))])
        if state != DataBank.get_words(1):
            state = DataBank.get_words(1)
            print("Value of Register 1 has changed to " + str(state))
        sleep(0.5)

except:
    print("Shutdown server ...")
    server.stop()
    print("Server is offline")
Beispiel #26
0
print("Setting PLC port to DOWN: ", end="", flush=True)
cmds = [
    "config switch physical-port",
    "edit port3",
    "set status down",
    "end"
]
exec_ssh_cmds(cmds)
print(f"[{Fore.GREEN}DONE{Style.RESET_ALL}]")


# Set IP to PLC's IP
print("Setting local IP to PLC IP: ", end="", flush=True)
set_ip(interface, targetaddr, targetsubnet, targetgateway)
print(f"[{Fore.GREEN}DONE{Style.RESET_ALL}]")

print("Waiting for IP to kick in: ", end="", flush=True)
time.sleep(2)
print(f"[{Fore.GREEN}DONE{Style.RESET_ALL}]")


# Run modbus server
print("Starting modbus server: ", end="", flush=True)
server = ModbusServer(host="0.0.0.0", port=502)
DataBank.set_bits(0, [1, 1, 1, 1, 1, 1, 1, 1, 1])
DataBank.set_words(0, [2**15-1, 2**15-1, 2**15-1, 2**15-1,
                       2**15-1, 2**15-1, 2**15-1, 2**15-1, 2**15-1, 2**15-1])
print(f"[{Fore.GREEN}DONE{Style.RESET_ALL}]")
print("Press Ctrl+C to safely stop server")
server.start()